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

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式軟件開發(fā)之: 映像文件存儲器映射調(diào)整

      嵌入式軟件開發(fā)之: 映像文件存儲器映射調(diào)整

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

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

      13.4.4 等效的簡單映像分散載入描述

      前面介紹了的命令行選項,如-ro-base、-rw-base、-reloc、-split、-ropi和-rwpi。但在實際編程時,因為使用Scatter文件可以產(chǎn)生更清晰的內(nèi)存映像視圖,所以最好使用Scatter文件對映像進行加載。

      本節(jié)詳細(xì)介紹如何將各的命令行選項,替換為Scatter文件。

      1.-ro-base address選項的替換

      使用-ro-base address命令行鏈接產(chǎn)生的內(nèi)存映像由一個加載域和三個執(zhí)行域組成。執(zhí)行域放在存儲器映像中的相鄰位置。

      選項中的address指定了加載域和第一個執(zhí)行域的起始地址(加載域和第一個執(zhí)行域的起始地址相同)。

      下面的例子顯示了與“-ro-base 0x8000”命令行選項等價的Scatter文件。

      LOADREG 0x8000 ;定義加載域的起始地址0x8000

      { ;

      ROM +0 ;定義第一個執(zhí)行域的起始地址,該地址與加載域的起始地址相同,為0x8000

      ;

      {

      *(+RO) ;該域放置所有的RO段

      }

      RAM_RW +0 ;定義第二個執(zhí)行域,起始地址為0x8000+ROM段大小

      ;

      {

      *(+RW) ;將所有的RW代碼放置在該段

      }

      RAM_ZI +0 ;定義ZI段

      ;ZI段的起始地址為0x8000+ROM段的大小+RAM_RW段的大小

      ;

      {

      *(+ZI) ;放置所有的ZI段

      }

      }

      上例中的Scatter文件創(chuàng)建的映像由一個加載域和三個執(zhí)行域組成。加載域的起始地址為0x8000。三個執(zhí)行域分別為ROM、RAM_RW和RAM_ZI,它們分別包含RO、RW和ZI輸出段。RO和RAM_RW為啟動域,RAM_ZI在執(zhí)行時動態(tài)創(chuàng)建。ROM的執(zhí)行地址是0x8000,通過對執(zhí)行區(qū)描述使用+offset格式的基址指定程序,所有三個執(zhí)行域在中相鄰放置,即前一個執(zhí)行域的末尾放置后一個執(zhí)行域。

      如果鏈接程序時,將-ro-base選項和-ropi混合使用,則可以生成位置無關(guān)代碼。

      下面的例子顯示了與-ro-base 0x8000 -ropi等效的Scatter文件。

      LOADREG 0x8000 PI ;加載域的地址為0x8000,并指定該加載域的屬性為PI

      {

      ROM +0 ;第一執(zhí)行域的地址為0x8000,而且該執(zhí)行域繼承了加載域的PI屬性

      ;所有該域的執(zhí)行地址是可變的

      {

      *(+RO) ;放置所有的RO段

      }

      RAM_RW +0 ABSOLUTE ;使用ABSOLUTE屬性代替PI屬性

      {

      *(+RW) ;放置RW段

      }

      RAM_ZI +0

      {

      *(+ZI)

      }

      }

      執(zhí)行域ROM從LOADREG加載域繼承 PI 屬性。下一個執(zhí)行域 RAM_RW 被標(biāo)記為 ABSOLUTE 所以其不再具有PI屬性。另外,因為RAM_ZI 域使用了+0的偏移量,所以它從 RAM_RW域繼承 ABSOLUTE 屬性。

      2.-ro-base和-rw-base選項的替換

      使用-ro-base和-rw-base選項鏈接的映像也由一個加載域和三個執(zhí)行域組成,它與類型1生成的映像十分相似,只是此類映像的RW執(zhí)行區(qū)與RO執(zhí)行區(qū)不相鄰。

      在-ro-base選項中指定加載域的起始地址,在-rw-base選項中指定執(zhí)行域的地址。

      下面的例子顯示與使用-ro-base 0x8000 -rw-base 0x040000等效的分散載入描述。

      LOADREG 0x8000 ;定義加載域的起始地址為0x8000

      {

      ROM_RO +0 ;定義第一個執(zhí)行域的起始地址為0x8000

      {

      * (+RO) ;在該域中放置所有的RO段

      }

      RAM_RW 0x040000 ;第二個執(zhí)行域名為RAM_RW,起始地址為0x40000

      {

      * (+RW) ;放置所有的RW段

      }

      RAM_ZI +0

      {

      * (+ZI) ;放置所有的ZI段

      }

      }

      該Scatter文件創(chuàng)建的映像有一個名為LOADREG的加載域,載入地址是0x8000。該映像有3個執(zhí)行區(qū),分別為ROM、RAM_RW和RAM_ZI,它們分別包含RO、RW和ZI輸出段。其中,RO域是啟動域,執(zhí)行地址是0x8000,RAM_RW執(zhí)行域與第一個執(zhí)行域RAM_RW不相鄰。其執(zhí)行地址是0x040000。緊隨其后的執(zhí)行區(qū)RAM_ZI放置所有的ZI數(shù)據(jù)。

      另外,也可以將-rw-base和位置無關(guān)選項-rwpi配合使用,將RW輸出節(jié)的執(zhí)行區(qū)標(biāo)記為位置獨立。

      下面的例子顯示了使用-ro-base 0x8000 -rw-base 0x40000 -rwpi等效的Scatter文件。

      LOADREG 0x0x8000 ;定義加載域的起始地址為0x8000

      {

      ROM +0 ;定義第一執(zhí)行域,其起始地址為0x8000

      {

      *(+RO) ;放置所有RO段

      }

      RAM_RW 0x40000 PI ;設(shè)置第二執(zhí)行域的屬性為PI屬性

      {

      *(+RW)

      }

      ER_ZI +0 ;繼承了PI屬性

      {

      *(+ZI)

      }

      }

      第一個執(zhí)行域ROM從加載域LOADREG繼承ABSOLUTE屬性。第二個執(zhí)行區(qū)RAM_RW標(biāo)記為PI屬性。另外,因為ER_ZI區(qū)的偏移為+0,所以它從RAM_RW區(qū)繼承PI屬性。

      存儲器相關(guān)文章:存儲器原理




      評論


      相關(guān)推薦

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

      關(guān)閉