在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式軟件開發(fā)之: 進(jìn)一步存儲(chǔ)器映射考慮事項(xiàng)

            嵌入式軟件開發(fā)之: 進(jìn)一步存儲(chǔ)器映射考慮事項(xiàng)

            作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/257025.htm

            圖13.17顯示了在內(nèi)存中的放置情況。

            圖13.17 顯示設(shè)置符號(hào)放置

            2.使用鏈接程序生成符號(hào)

            該方法需要在目標(biāo)文件中指定的大小。首先,在一個(gè)匯編源文件中為堆和棧定義一個(gè)適當(dāng)大小的區(qū)域。使用SPACE命令保留一個(gè)清零的存儲(chǔ)器塊。然后,為該區(qū)域設(shè)置NOINIT屬性,避免在鏈接時(shí)被修改。這樣避免了顯示放置堆棧標(biāo)號(hào)而浪費(fèi)內(nèi)存空間。

            下面的例子顯示了如何在匯編源文件中預(yù)留出堆棧區(qū)域。

            AREA stack, DATA, NOINIT

            SPACE 0x3000 ;為棧預(yù)留的空間

            AREA heap, DATA, NOINIT

            SPACE 0x3000 ;為堆預(yù)留的空間

            END

            最后,可以在文件中定義執(zhí)行域放置系統(tǒng)堆棧。

            下面的例子顯示了如何在文件中使用由聯(lián)接器生成的符號(hào)放置堆棧。

            LOAD_FLASH 0x24000000 0x04000000

            {

            :

            STACK 0x1000 UNINIT ;length = 0x3000

            {

            stackheap.o (stack) ;stack = 0x4000 to 0x1000

            }

            HEAP 0x15000 UNINIT ;length = 0x3000

            {

            stackheap.o (heap) ;heap = 0x15000 to 0x18000

            }

            }

            鏈接程序生成了指向每個(gè)執(zhí)行區(qū)基址和限制的符號(hào),可將其引入目標(biāo)代碼,供__user_initial_stackheap()函數(shù)使用:

            Image$$STACK$$ZI$$Limit = 0x4000

            Image$$STACK$$ZI$$Base = 0x1000

            Image$$HEAP$$ZI$$Base = 0x15000

            Image$$HEAP$$ZI$$Limit = 0x18000

            下面的例子通過(guò)使用DCD偽操作賦予這些鏈接符號(hào)更有意義的名稱,可使該代碼可讀性更高。

            IMPORT ||Image$$STACKS$$ZI$$Base||

            IMPORT ||Image$$STACKS$$ZI$$Limit||

            IMPORT ||Image$$HEAP$$ZI$$Base||

            IMPORT ||Image$$HEAP$$ZI$$Limit||

            stack_base DCD ||Image$$STACKS$$ZI$$Limit|| ; = 0x4000

            stack_limit DCD ||Image$$STACKS$$ZI$$Base|| ; = 0x1000

            heap_base DCD ||Image$$HEAP$$ZI$$Base|| ; = 0x15000

            heap_limit DCD ||Image$$HEAP$$ZI$$Limit|| ; = 0x18000

            這樣如果需要改變系統(tǒng)堆棧的設(shè)置,可以通過(guò)編輯文件中的執(zhí)行域很容易地改變,而不需要重新編譯源文件。

            3.使用Scatter文件的EMPTY屬性

            該方法使用了Scatter文件執(zhí)行域的EMPTY屬性。該屬性使得定義的區(qū)域不包括目標(biāo)代碼或數(shù)據(jù)。這是定義堆和棧的一個(gè)方便方法。區(qū)域的長(zhǎng)度在EMPTY屬性后指定。對(duì)于存儲(chǔ)器中向上增長(zhǎng)的堆,其區(qū)域的長(zhǎng)度為正。對(duì)于棧,其長(zhǎng)度被標(biāo)為負(fù)數(shù),說(shuō)明其在存儲(chǔ)器中是向下增長(zhǎng)的。

            下面的例子顯示了如何在Scatter文件中使用EMPTY屬性定義堆棧。

            ROM_LOAD 0x24000000 0x04000000

            {

            ...

            HEAP 0x30000 EMPTY 0x3000

            {

            }

            STACKS 0x40000 EMPTY -0x3000

            {

            }

            ...

            }

            該方法的優(yōu)點(diǎn)是堆和棧的大小和位置是在一個(gè)地方定義的,即在Scatter文件中,而不必為堆棧創(chuàng)建stackheap.s源文件。

            鏈接時(shí),鏈接程序生成代表這些EMPTY區(qū)的符號(hào)。

            Image$$HEAP$$ZI$$Base = 0x30000

            Image$$HEAP$$ZI$$Limit = 0x33000

            Image$$STACKS$$ZI$$Base = 0x3D000

            Image$$STACKS$$ZI$$Limit = 0x40000

            應(yīng)用程序代碼可處理這些符號(hào),如下例所示。

            IMPORT ||Image$$HEAP$$ZI$$Base||

            IMPORT ||Image$$HEAP$$ZI$$Limit||

            heap_base DCD ||Image$$HEAP$$ZI$$Base||

            heap_limit DCD ||Image$$HEAP$$ZI$$Limit||

            IMPORT ||Image$$STACKS$$ZI$$Base||

            IMPORT ||Image$$STACKS$$ZI$$Limit||

            stack_base DCD ||Image$$STACKS$$ZI$$Limit||

            stack_limit DCD


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉