在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM 常用的段分類及說明

            ARM 常用的段分類及說明

            作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
            一.ARM存儲區(qū)各段分布

            二.概念
            .text段:代碼段,用來放置代碼(code),一般是只讀。
            .data段:數(shù)據(jù)段,用來存放經(jīng)過初始化的全局變量和經(jīng)過初始化的靜態(tài)變量(static)一般是可讀可寫。
            .bss段:全局變量數(shù)據(jù)段:用來存放未初始化的全局變量和未初始化的靜態(tài)變量,一般是可讀可寫的,之所以把.bss與.data分開,是因為系統(tǒng)會為.bss段的變量初始值清零。
            .rodata段:常量數(shù)據(jù)段,用來存放常量(const),一般是只讀的,可以歸類為代碼段。
            棧:存放局部變量和函數(shù)參數(shù)等數(shù)據(jù),向下生長(向低地址增長)。
            堆:給動態(tài)分配內(nèi)存使用,向上生長(向高地址增長)
            注:代碼段和數(shù)據(jù)段之間有明確的分隔,但是數(shù)據(jù)段和堆棧之間沒有。
            三.進一步闡述
            1.在ARM的集成開發(fā)環(huán)境中,將.text段和.rodata段統(tǒng)稱為RO段,放在ROM或FLASH中。
            2.將.data稱為RW Data段。
            3.將.bss段稱為ZI Data段。
            4.RW Data段和ZI Data段統(tǒng)稱為RW段。
            四.程序裝載
            裝載的文件一般有兩種:.axf文件:帶有調(diào)試信息,可供AXD調(diào)試工具使用。.bin文件:可執(zhí)行的二進制代碼文件,也是常見的最終下載到處理器的代碼。
            bin文件有兩種狀態(tài):存放態(tài)和運行態(tài)。
            1.存放態(tài):可執(zhí)行文件通過fromelf產(chǎn)生后,就是起始存儲狀態(tài),在存儲介質(zhì)上(flash)的分布如下:
            | ... |
            +-------------+----------- | .bss | ZI 段+-------------+-----------
            +-------------+-- 數(shù)據(jù)段 | .data | RW 段 +-------------+-----------
            +-------------+----------- | .rodata | |+-------------+-----------
            _____________| 代碼段(RO 段) | .text |+-------------+-----------
            | ............. |
            2.運行態(tài):可執(zhí)行文件通過裝載過程,搬入到RAM中,此時可執(zhí)行文件就從存放態(tài)編程了運行態(tài),在RAM中的分布如下:
            | ... |
            +-------------+-- ZI段結(jié)束地址 | ZI 段 |
            +-------------+-- ZI段起始地址 |
            保留區(qū)2 |
            +-------------+-- RW段結(jié)束地址 | RW 段 |
            +-------------+-- RW段起始地址
            | 保留區(qū)1 |
            +-------------+-- RO段結(jié)束地址 | RO 段 |
            +-------------+-- RO段起始地址
            | ... |
            3.通過上述可知,.bin文件的最終運行,需要經(jīng)過一個重要的過程----裝載過程,即將程序從存儲狀態(tài)下,有目的的裝載到RAM中。
            五.如何裝載
            在ADS中,裝載方式一般有2種:裝載配置和使用scatter文件指定。
            1.裝載配置:指定RO段的起始地址和RW段的其實地址,ZI段進階在RW段之后。
            2.scatter文件:通過scatter文件指定可執(zhí)行文件隔斷的詳細地址。
            3.ADS產(chǎn)生的各代碼段宏
            |Image$$RO$$Base|
            |Image$$RO$$Limit|
            |Image$$RW$$Base|
            |Image$$RW$$Limit|
            |Image$$ZI$$Base|
            |Image$$ZI$$Limit|
            4.裝載過程說明
            l 當(dāng)從NorFlash啟動時, 要把flash芯片的首地址映射到0x00000000位置,
            l 系統(tǒng)啟動后, 啟動程序本身把自己從 flash中搬到RAM中運行. 搬移后的各段起始地址, 由以上宏來確定.
            l 當(dāng)從NandFlash啟動時, S3C2410會自動把前NandFlash的前4k搬到S3C2410的內(nèi)部RAM中,并把內(nèi)部 RAM的首地址設(shè)為0x00000000,CPU從0x00000000開始執(zhí)行.
            所以, 在nandFlash的前4k程序中,必須 包含從 NandFlash把BootLoader的其余部分裝入RAM的程序.
            附:TI 編譯中常用的段說明 系統(tǒng)常用的段定義:
            .cinit:包含未用const聲明的外部(external)或靜態(tài)(static)數(shù)據(jù)表 .
            const:包含已用const聲明的外部或靜態(tài)數(shù)據(jù)表以及字符串常量。
            .text:包含所有可執(zhí)行的代碼以及常量。

            .bss:用于為cinit段以及未初始化的全局和靜態(tài)變量保留空間(一般是內(nèi)存空間)
            四.三.ROM文件說明。
            ROM存放如圖2:

            圖2.

            Rom 數(shù)據(jù)存放查詢方法。
            使用文件形式打開,選擇字串,到對應(yīng)的bin文件中去搜索對應(yīng)字串,再根據(jù)該字串地址,加上該bin文件的起始地址,得出在.lis文件中的位置,根據(jù)lis文件的的位置數(shù)據(jù),在工程中定位,具體的代碼。


            關(guān)鍵詞: ARM段分

            評論


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

            關(guān)閉