新聞中心

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

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

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

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

        為了實現圖13.9的,使用以下程序所現實的Scatter文件。

        LOAD_ROM_1 0x0000 ;第一個加載時域的起始地址

        {

        EXEC_ROM_1 0x0000 ;第一個運行時域的起始地址

        {

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

        {

        SRAM 0x9000 ;運行時域的起始地址

        {

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

        }

        }

        LOAD_ROM_2 0x4000 ;第二個加載時域的起始地址

        {

        EXEC_ROM_2 0x4000 ;運行時域的起始地址

        {

        program2.o(+RO)

        }

        DRAM 0x18000 ;運行時域的起始地址

        {

        program2.o(+RW,+ZI)

        }

        }

        上面兩個例子中,簡單可以使用命令行選項實現,但第二個復雜的例子卻只能使用Scatter文件實現。

        13.4.2 Scatter文件語法

        分散載入描述文件是一個文本文件,它向 armlink 描述目標系統的存儲器映射。如果從命令行加載Scatter文件,可以使用任意類型的文件擴展名。

        在Scatter文件中,用戶可以指定以下存儲器映像內容:

        · 每個載入區的載入地址和最大尺寸;

        · 每個載入區的屬性;

        · 從每個載入區派生的執行區;

        · 每個執行區的執行地址和最大尺寸;

        · 每個執行區的輸入節。

        描述文件的格式反映出載入區、執行區和輸入節的層次結構。

        1.BNF的表示法和語法

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

        表13.3 BNF語法

        符 號

        說 明

        引號用于表示BNF語法中的字符被用作普通字符。

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

        A ::= B

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

        在其組件方面,::=表示法用于定義高級結構。每個組件可能還有一個::=定義,對更簡單的組件進行定義。

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

        續表

        符 號

        說 明

        [A]

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

        A+

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

        A*

        元素A可以不出現或多次出現

        A|B

        出現元素A或B,但不能同時出現

        (A|B)

        元素A和B組合在一起。

        這在使用 | 操作符時,或重復復雜模式時尤其適用。

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

        2.Scatter文件語法概述

        描述scatter_description被定義為一個或多個load_region_description模式:

        Scatter_description ::=

        load_region_description+

        加載域描述load_region_description 被定義為載入區名稱,可以選擇性地在其后跟隨屬性、尺寸說明符以及一個或多個執行區描述:

        load_region_description ::=

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

        {

        execution_region_description+

        }

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

        execution_region_description ::=

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

        length]

        {

        input_section_description*

        }

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

        input_section_description ::=

        module_select_pattern

        [ (

        (+ input_section_attr | input_section_pattern)

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

        ) ]

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




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 政和县| 柳州市| 行唐县| 河西区| 德令哈市| 青铜峡市| 新野县| 乐昌市| 南开区| 伊吾县| 古浪县| 凯里市| 榕江县| 即墨市| 应城市| 灯塔市| 河间市| 金昌市| 高要市| 漾濞| 洛川县| 龙岩市| 古浪县| 靖江市| 呼和浩特市| 报价| 湖北省| 延安市| 安图县| 嘉禾县| 清水县| 句容市| 吉水县| 红原县| 稻城县| 拉萨市| 礼泉县| 临颍县| 襄城县| 柳河县| 临西县|