<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式軟件開(kāi)發(fā)之: 映像文件存儲器映射調整

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

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

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

通過(guò)該Scatter文件描述符,創(chuàng )建了一個(gè)長(cháng)度為0x2000的域,該域中的所有內容用0xffffffff填充。

注意

所指定的域值必須以字為單位。

· ZEROPAD 0:初始化一塊內容全為0的內存區域,并將其作為一個(gè)輸入段填充到ELF中。這樣減少了在運行時(shí)將某段內存初始化為0的操作。

注意

只有根執行區可以使用ZEROPAD屬性進(jìn)行0初始化。對非根執行區使用ZEROPAD屬性將出現警告信息,并且忽略該屬性。

· UNINIT:指示該段為不能被初始化為0。

⑤ max_size為可選的參數,如果分配給域的存儲器超過(guò)max_size字節,則它指示armlink生成錯誤。

⑥ -length如果指定的長(cháng)度為負值,則base_address是域的結束地址。它通常與EMPTY一起使用,以表示在存儲器中變小的棧。

當確定執行域屬性時(shí),注意以下幾點(diǎn)。

① PI、OVERPLAY、FIXED和ABSOLUTE為并列關(guān)系屬性,某一個(gè)執行域只能為這4種屬性之一。如果沒(méi)有指定,ABSOLUTE為其默認屬性。

② 使用+offset格式的base_designator的執行區繼承前一個(gè)執行區的屬性(如果它是加載域中的第一個(gè)執行區,則繼承所在加載域的屬性,),或者具有ABSOLUTE屬性。

③ 不能為執行域顯式指定RELOC屬性。該屬性只能從前面的執行域或父區繼承才能具有RELOC屬性。

④ 被指定了PI或OVERLAP屬性的執行域,不能有重疊的地址范圍。但對于A(yíng)BLOUTE和FIXED屬性的執行域,ARM編譯器不允許有重疊的地址范圍。

⑤ RW段默認使用壓縮屬性。如果不想鏈接器對該段進(jìn)行壓縮,必須在Scatter文件中使用NOCOMPRESS顯示聲明。

⑥ UNINIT指定執行區中的ZI輸出節(如果有)不被初始化為0。使用它可以創(chuàng )建包含未初始化數據或I/O的執行區。

5.輸入段描述符

輸入段由以下部分組成。

· 模塊名稱(chēng),如目標文件名稱(chēng)、庫成員名稱(chēng)或庫文件名稱(chēng)。模塊名稱(chēng)可以使用通配符。

· 輸入段名稱(chēng),或輸入節屬性,如READ-ONLY或CODE。

圖13.13顯示了輸入段描述符的基本組成。

BNF語(yǔ)法為:

input_section_description ::=

module_select_pattern

[(

(+ input_section_attr | input_section_pattern)

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

)]

其語(yǔ)法說(shuō)明如下。

① module_select_pattern

這是由文字文本構成的模式。“*”通配符匹配0個(gè)或多個(gè)字符,而“?”匹配任何單個(gè)字符。匹配不區分大小寫(xiě)。

使用*.o可以匹配所有對象。使用*可以匹配所有目標文件和庫。

當滿(mǎn)足下列條件之一時(shí),鏈接器認為module_selector_pattern與輸入段匹配。

· 包含輸入段的目標文件與module_selector_pattern匹配。

· 包含輸入段的庫成員名稱(chēng)(不帶路徑名)與module_selector_pattern匹配。

· 從其中提取段的庫全名(包含路徑名)。如果名稱(chēng)包含空格,使用通配符可以簡(jiǎn)化搜索。例如,使用*libname.lib匹配C:lib dirlibname.lib。

另外,ARM鏈接器支持特殊的模塊選擇程序模式“.ANY”,允許將輸入節分配給執行區,而無(wú)需考慮其父模塊。使用.ANY以任意分配方式填充執行區。

注意

最好不要依賴(lài)編譯程序生成的或ARM庫代碼使用的輸入段名。因為,這些名稱(chēng)在每次編譯之間可以變化,例如編譯選項的改變或編譯器版本發(fā)生變化,都可能引起輸入段名稱(chēng)的變化。

② input_section_attr

輸入段屬性符定義了一個(gè)用逗號隔開(kāi)的模式類(lèi)別。該類(lèi)表中的每個(gè)模式定義了輸入段名稱(chēng)或輸入段屬性匹配方式。當匹配模式使用輸入段名稱(chēng)時(shí),它前面必須使用符號“+”,而符號“+”前面緊接的逗號可以省略。

輸入段屬性不區分大小寫(xiě)??梢允窍铝袑傩灾唬?/p>

· RO-CODE;

· RO-DATA;

· RO,同時(shí)選擇RO-CODE和RO-DATA;

· RW-DATA;

· RW-CODE;

· RW,同時(shí)選擇RW-CODE和RW-DATA;

· ZI;

· ENTRY,包含ENTRY點(diǎn)的節。

可以識別以下同義詞:

· CODE代表RO-CODE;

· CONST代表RO-DATA;

· TEXT代表RO;

· DATA代表RW;

· BSS代表ZI。

可以識別以下偽屬性:

· FIRST;

· LAST。

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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>