新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式軟件開發之: 映像文件存儲器映射調整

        嵌入式軟件開發之: 映像文件存儲器映射調整

        作者: 時間:2013-09-30 來源:網絡 收藏

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

        圖13.10顯示一個典型的分散載入描述文件的內容和組織結構。

        圖13.10 典型的分散載入描述文件的內容和組織結構

        3.加載域描述

        一個加載域具有以下屬性:

        · 名稱:鏈接程序使用它識別不同的加載域;

        · 基址:載入視圖中的代碼和數據的起始地址;

        · 屬性:可選;

        · 最大尺寸:可選;

        · 執行區列表:這些執行區標識執行視圖中模塊的類型和位置。

        圖13.11顯示了加載域的描述。

        BNF語法為:

        load_region_description ::=

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

        ]

        {

        execution_region_description+

        }

        語法說明如下。

        ① load_region_name為加載域的名稱。只有前31個字符有效。該名稱僅用于識別每個域。

        注意

        load_region_name與執行域exec_region_name不同,load_region_name不用于生成Load$$region_
        name符號。

        ② base_address是區中對象的鏈接地址。base_address必須是一個字對齊數值。

        ③ +offset描述基址,它從前一個加載域的末尾偏移offset個字節。offset的值必須能被4整除。如果是第一個加載域,則+offset表示該域的基地址是從0之后的offset字節開始。

        ④ attribute_list指定加載域內容的屬性:

        · PI:位置獨立;

        · RELOC:可重定位;

        · OVERLAY:重疊;

        · ABSOLUTE:絕對地址;

        · NOCOMPRESS:代碼不被壓縮。

        可以指定這些屬性中的一項(除NOCOMPRESS外,其他4項屬性為互斥關系)。默認的加載域屬性是ABSOLUTE。具有PI、RELOC或OVERLAY屬性之一的加載域可以有重疊的地址范圍。對于ABSOLUTE加載域,armlink不允許重疊的地址范圍。OVERLAY關鍵字允許在同一個地址有多個執行區。

        注意

        ARM在RVCT中不提供重疊機制。要在同一個地址使用多個執行區,必須提供自己的重疊管理程序。

        ⑤ max_size:它指定加載域的最大尺寸。(如果指定了可選的max_size值,但分配給該區的字節超過max_size字節,armlink將生成錯誤。)

        ⑥ execution_region_description:它指定執行區名稱、地址和內容。

        4.執行域描述符

        執行域具有以下一些屬性:

        ·

        域名稱;

        · 執行域基地址(支持絕對地址的或相對地址的);

        · 執行域的最大尺寸(可選);

        · 指定執行域屬性;

        · 一個或多個輸入段描述(放在本執行區中的模塊)。

        圖13.12顯示了一個典型的執行域描述。

        執行域描述符中的BNF語法為:

        execution_region_description ::=

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

        length]

        {

        input_section_description+

        }

        其語法說明如下。

        ① exec_region_name 為執行域命名。(只有前31個字符有效。)

        ② base_address是域中對象的鏈接地址。base_address必須是字對齊的。

        ③ +offset是描述基址,它從前一個執行區的末尾偏移offset個字節。offset的值必須能被4整除。如果前面沒有執行區(即,這是載入區中的第一個執行區),則+offset表示基址從它所在的載入區的基址之后offset個字節開始。如果使用+offset格式并且所在的加載域具有RELOC屬性,則執行區繼承該RELOC屬性。但是,如果使用固定的base_address,則隨后出現的offset不繼承RELOC屬性。

        ④ attribute_list指定執行區內容的屬性:

        · PI:位置獨立。

        · OVERLAY:重疊。

        · ABSOLUTE:絕對地址。域的執行地址由base_designator指定。

        · FIXED:固定地址。執行域的加載地址和執行地址都由base_designator指定。base_designator必須是絕對基址,或者偏移量為+0。

        · EMPTY:它在執行區中保留一個已知長度的空白存儲器塊,通常用作堆或棧。

        · PADVALUE:指定填充字的默認值,如果在域定義中指定了該屬性,則必須為該屬性賦值。使用該屬性的例子如下。

        EXEC 0x10000 PADVALUE 0xffffffff EMPTY ZEROPAD 0x2000

        存儲器相關文章:存儲器原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 陵川县| 昌黎县| 隆回县| 枣阳市| 胶南市| 武穴市| 隆林| 文昌市| 莒南县| 芮城县| 绥德县| 宿迁市| 罗定市| 乐亭县| 抚远县| 浠水县| 新邵县| 平远县| 长寿区| 理塘县| 唐河县| 台江县| 赤水市| 黎平县| 布拖县| 内乡县| 西乌珠穆沁旗| 博罗县| 宜宾市| 霍邱县| 大厂| 瑞昌市| 望都县| 英德市| 繁峙县| 岳池县| 清苑县| 绥芬河市| 神农架林区| 出国| 丰镇市|