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

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > KEIL下分散加載文件的使用

            KEIL下分散加載文件的使用

            作者: 時間:2016-11-28 來源:網絡 收藏
            對于分散加載的概念,在《ARM體系結構與編程》書中第11章有明確介紹。
            分散加載文件(即scatter file 后綴為.scf)是一個文本文件,通過編寫一個分散加載文件來指定
            ARM連接器在生成映像文件時如何分配RO,RW,ZI等數(shù)據(jù)的存放地址。如果不用SCATTER文件指定,那么
            ARM連接器會按照默認的方式來生成映像文件,一般情況下我們是不需要使用分散加載文件的。
            但在某些場合,我們希望把某些數(shù)據(jù)放在指定的地址處,那么這時候SCATTER文件就發(fā)揮了非常大的作用
            而且SCATTER文件用起來非常簡單好用。
            舉個例子:比如像LPC2378芯片具有多個不連續(xù)的SRAM,通用的RAM是32KB,可是32KB不夠用,我想把
            某個.C中的RW數(shù)據(jù)放在USB的SRAM中,那么就可以通過SCATTER文件來完成這個功能。
            下面是就這個例子作的說明:
            這是一個標準的常用的分散加載文件,現(xiàn)在加注釋于后,方便以后查閱:
            ;******************************************************************************
            ;
            ; SCATTER LOADING DESCRIPTION
            ; ARM
            ; KEILs uVision3
            ; (RealView Microprocessor Developer Kit)
            ;
            ; Filename : LPC2378_Flash.scat
            ;******************************************************************************
            LR_IROM1 0x00000000 0x00080000 ;; 第一個加載域,名字為LR_IROM1,起始
            {                  ;;地址為0x0,大小為0x80000
            ER_IROM1 0x00000000 0x00080000 ;;加載域中的運行時域,名字為ER_IROM1
            { ;; 起始地址為0x0,大小為0x80000
            vectors.o (VECT, +First) ;;將vectors.c編譯后生成的文件vectors.o中的代碼
            init.o (INIT) ;;以及init.o中的代碼
            * (+RO) ;;以及所有編譯生成的RO屬性的代碼全部存放在
            } ;;運行時域ER_IROM1指定的地址范圍內,存放方式:順序存放
            RW_IRAM1 0x40000000 0x0000e800  ;;這是第二個運行時域,功能同上
            { ;;其中 *是代表具有()里面指定的屬性的全部數(shù)據(jù)
            *(+RW,+ZI) ;;與*功能相似的有.ANY,后面說明
            } ;; The following declarations select the "two region model" ;
            ;; A default __user_initial_stackheap() will be used ;
            ARM_LIB_HEAP 0x40007000 EMPTY 0x00000100 {} ;;指定堆棧地址
            ARM_LIB_STACK 0x40008000 EMPTY -0x00000E00 {}
            }
            下面是針對LPC2378的USB SRAM作數(shù)據(jù)RAM使用的配置:
            ;******************************************************************************
            ;
            ; SCATTER LOADING DESCRIPTION
            ; ARM
            ; KEILs uVision3
            ; (RealView Microprocessor Developer Kit)
            ;
            ; Filename : LPC2378_Flash.scat
            ;******************************************************************************
            LR_IROM1 0x00000000 0x00080000 ;; 第一個加載域,名字為LR_IROM1,起始
            {                  ;;地址為0x0,大小為0x80000
            ER_IROM1 0x00000000 0x00080000 ;;加載域中的運行時域,名字為ER_IROM1
            { ;; 起始地址為0x0,大小為0x80000
            vectors.o (VECT, +First)
            init.o (INIT)
            * (+RO)
            }
            RW_IRAM1 0x40000000 0x0000e800
            {
            .ANY(+RW,+ZI)     ;; 此處.ANY替換原來的*,是因為下面的一個執(zhí)行域對指定的模塊中的RW,ZI數(shù)據(jù)指定了存放地址
            ;;用.ANY就可以把已經被指定的具有RW,ZI屬性的數(shù)據(jù)排除
            } ;; The following declarations select the "two region model" ;
            WEBRPGRADE 0x7fd00000 0x1fff
            {
            webupgrade.o(+RW,+ZI) ;;webupgrade.o文件中所有變量都存在USB SRAM中
            }
            ;; A default __user_initial_stackheap() will be used ;
            ARM_LIB_HEAP 0x40007000 EMPTY 0x00000100 {}
            ARM_LIB_STACK 0x40008000 EMPTY -0x00000E00 {}
            }


            關鍵詞: KEIL加載文

            評論


            技術專區(qū)

            關閉