<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/257027.htm

          為了實(shí)現(xiàn)圖13.9的,使用以下程序所現(xiàn)實(shí)的Scatter文件。

          LOAD_ROM_1 0x0000 ;第一個(gè)加載時(shí)域的起始地址

          {

          EXEC_ROM_1 0x0000 ;第一個(gè)運(yùn)行時(shí)域的起始地址

          {

          programl.o(+RO) ;放置program.o中所以的RO段

          {

          SRAM 0x9000 ;運(yùn)行時(shí)域的起始地址

          {

          programl.o(+RW,+ZI) ;放置program.o中所有的RW和ZI段

          }

          }

          LOAD_ROM_2 0x4000 ;第二個(gè)加載時(shí)域的起始地址

          {

          EXEC_ROM_2 0x4000 ;運(yùn)行時(shí)域的起始地址

          {

          program2.o(+RO)

          }

          DRAM 0x18000 ;運(yùn)行時(shí)域的起始地址

          {

          program2.o(+RW,+ZI)

          }

          }

          上面兩個(gè)例子中,簡單可以使用命令行選項(xiàng)實(shí)現(xiàn),但第二個(gè)復(fù)雜的例子卻只能使用Scatter文件實(shí)現(xiàn)。

          13.4.2 Scatter文件語法

          分散載入描述文件是一個(gè)文本文件,它向 armlink 描述目標(biāo)系統(tǒng)的存儲(chǔ)器映射。如果從命令行加載Scatter文件,可以使用任意類型的文件擴(kuò)展名。

          在Scatter文件中,用戶可以指定以下存儲(chǔ)器映像內(nèi)容:

          · 每個(gè)載入?yún)^(qū)的載入地址和最大尺寸;

          · 每個(gè)載入?yún)^(qū)的屬性;

          · 從每個(gè)載入?yún)^(qū)派生的執(zhí)行區(qū);

          · 每個(gè)執(zhí)行區(qū)的執(zhí)行地址和最大尺寸;

          · 每個(gè)執(zhí)行區(qū)的輸入節(jié)。

          描述文件的格式反映出載入?yún)^(qū)、執(zhí)行區(qū)和輸入節(jié)的層次結(jié)構(gòu)。

          1.BNF的表示法和語法

          所謂BNF(Backus Naur Format)即Scatter文件所用的形式語言。表13.3概括了其所用的符號(hào)和語法規(guī)則。

          表13.3 BNF語法

          符 號(hào)

          說 明

          引號(hào)用于表示BNF語法中的字符被用作普通字符。

          例如,定義B+C,它只能替換為模式B+C。而定義B+C可以替換為模式BC、BBC或BBBC

          A ::= B

          將A定義為B。例如,A::= B+ | C 表示A相當(dāng)于B+或C。

          在其組件方面,::=表示法用于定義高級結(jié)構(gòu)。每個(gè)組件可能還有一個(gè)::=定義,對更簡單的組件進(jìn)行定義。

          例如,A::=B以及B::= C | D表示定義A相當(dāng)于模式C或D

          續(xù)表

          符 號(hào)

          說 明

          [A]

          可選元素A。例如,A::= B[C]D 表示定義A可以擴(kuò)展為BD或BCD

          A+

          元素A可以出現(xiàn)一次或多次。例如,A::= B+表示定義A可以擴(kuò)展為B、BB或BBB等

          A*

          元素A可以不出現(xiàn)或多次出現(xiàn)

          A|B

          出現(xiàn)元素A或B,但不能同時(shí)出現(xiàn)

          (A|B)

          元素A和B組合在一起。

          這在使用 | 操作符時(shí),或重復(fù)復(fù)雜模式時(shí)尤其適用。

          例如,A::=(B C)+ (D | E) 表示定義A可以擴(kuò)展為BCD、BCE、BCBCD、BCBCE、BCBCBCD或BCBCBCE

          2.Scatter文件語法概述

          描述scatter_description被定義為一個(gè)或多個(gè)load_region_description模式:

          Scatter_description ::=

          load_region_description+

          加載域描述load_region_description 被定義為載入?yún)^(qū)名稱,可以選擇性地在其后跟隨屬性、尺寸說明符以及一個(gè)或多個(gè)執(zhí)行區(qū)描述:

          load_region_description ::=

          load_region_name (base_address | (+ offset)) [attributes] [max_size]

          {

          execution_region_description+

          }

          執(zhí)行域描述execution_region_description 被定義為執(zhí)行區(qū)名稱,是一種基址規(guī)范,可以選擇性地在其后跟隨屬性、尺寸說明符以及一個(gè)或多個(gè)輸入段描述:

          execution_region_description ::=

          exec_region_name (base_address | + offset) [attribute_list] [max_size | –

          length]

          {

          input_section_description*

          }

          輸入段描述input_section_description被定義為源模塊選擇程序模式,可以在其后選擇性地跟隨輸入節(jié)選擇程序:

          input_section_description ::=

          module_select_pattern

          [ (

          (+ input_section_attr | input_section_pattern)

          ([,] + input_section_attr | , input_section_pattern))*

          ) ]

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




          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();