OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » MDK(KEIL)中设定变量或数组到指定的位置,,不知道行不行,先留着 ...

共1条 1/1 1 跳转至

MDK(KEIL)中设定变量或数组到指定的位置,,不知道行不行,先留着 ...

工程师
2014-09-14 20:53:51    评分
定位变量到指定的位置

使用定义在头文件 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)));
编译说
..\List\ALL.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,这个方法不行的,因为编译器并没有真正开辟一个变量,你仅仅是强行操作某个地址而已,但这个地址是否被其他数据利用了,你管不到也不知道~

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]