新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MDK(KEIL)中設定變量或數組到指定的位置

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

        作者: 時間:2013-03-25 來源:網絡 收藏

        定位

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

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

        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_|組成來定義。下面的例子是將一個段定義到地址0xFFE0處:

        AREA |.ARM.__AT_0xFFE0|, CODE, READONLY

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

        編譯說

        ..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.

        似乎是定位了這個絕對地址后,其他不會為它讓位~

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

        編譯器里面應該有設置,比如系統總共有多少內存,你可以故意設置的少一些,這樣在編譯的時候他就會避開你沒有的了

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 布尔津县| 麻栗坡县| 奉化市| 伊吾县| 沐川县| 黄骅市| 菏泽市| 南郑县| 连云港市| 安溪县| 名山县| 天峨县| 大方县| 南郑县| 冀州市| 公主岭市| 鹤壁市| 泰安市| 务川| 湟源县| 陆良县| 苏尼特右旗| 华蓥市| 许昌市| 镇原县| 偃师市| 临洮县| 浮梁县| 彭州市| 汾西县| 乡城县| 鞍山市| 韶关市| 营山县| 湘西| 巴彦县| 湘乡市| 湖南省| 琼海市| 监利县| 孝感市|