新聞中心

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

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

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

定位

本文引用地址:http://2s4d.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,這個方法不行的,因為編譯器并沒有真正開辟一個變量,你僅僅是強行操作某個地址而已,但這個地址是否被其他數(shù)據(jù)利用了,你管不到也不知道~(0字)電子白菜[8次]2009-9-5 2:08:47

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

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



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

評論


相關(guān)推薦

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

關(guān)閉