新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MDK(KEIL)中設(shè)定變量或數(shù)組到指定的位置

        MDK(KEIL)中設(shè)定變量或數(shù)組到指定的位置

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

        定位

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

        使用定義在頭文件 absacc.h中的 __at宏,可以將以如下方式定位到絕對(duì)地址處:

        C 例子:

        #include

        const char MyText[] __at (0x1F00) = TEXT AT ADDRESS 0x1F00;

        int x __at (0x40003000); // variable at address 0x40003000

        unsigned char xArray[128] __at (0x68000000); // Array start at address 0x68000000

        匯編例子:

        在匯編文件中可以使用段名,由|.ARM.__AT_|組成來(lái)定義。下面的例子是將一個(gè)段定義到地址0xFFE0處:

        AREA |.ARM.__AT_0xFFE0|, CODE, READONLY

        u8 a[10] __attribute__ ((at(0x2000002c)));

        編譯說(shuō)

        ..ListALL.axf: Error: L6971E: Section .data from object usart.o with type RW incompatible with

        Section .ARM.__AT_0x2000002C from object hal.o with type ZI in er RW_IRAM1.

        似乎是定位了這個(gè)絕對(duì)地址后,其他不會(huì)為它讓位~

        NONO,這個(gè)方法不行的,因?yàn)榫幾g器并沒有真正開辟一個(gè)變量,你僅僅是強(qiáng)行操作某個(gè)地址而已,但這個(gè)地址是否被其他數(shù)據(jù)利用了,你管不到也不知道~(0字)電子白菜[8次]2009-9-5 2:08:47

        編譯器里面應(yīng)該有設(shè)置,比如系統(tǒng)總共有多少內(nèi)存,你可以故意設(shè)置的少一些,這樣在編譯的時(shí)候他就會(huì)避開你沒有的了

        通過*.map文件可以查看空間分配



        關(guān)鍵詞: 指定 位置 變量 設(shè)定 KEIL MDK

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 苍山县| 包头市| 安徽省| 崇州市| 普定县| 石渠县| 朝阳区| 周至县| 阿拉善盟| 万盛区| 岚皋县| 镇沅| 乌兰县| 莱阳市| 银川市| 绥化市| 遂川县| 南安市| 伊川县| 射阳县| 桦川县| 平顺县| 台北县| 钟祥市| 阳曲县| 青川县| 乌拉特前旗| 绥化市| 德令哈市| 白城市| 自治县| 泊头市| 濮阳县| 扶风县| 屏东县| 青田县| 枣庄市| 定南县| 信阳市| 会昌县| 汕头市|