Keil MDK将变量固定到指定地址
在进行单片机编程中,我们有时需要将一个变量存储在一个固定地址,而不是由编译器随机分配。如在进行IAP升机时,可以将软件版本,硬件版本等信息存储在固定的地址,方便bootloader和app程序读取。那么如何将变量分配到指定地址呢?可以使用编译器自带的指令实现。
Arm Compiler V5
语法:
__attribute__((at(address)))
例子:
#define ADDRESS 0x20001F80
int x1 __attribute__((at(ADDRESS)));
注意事项:
GNU编译器不支持此变量属性
Arm Compiler V6
语法:
__attribute__((section(".ARM.__at_address")))
例子:
#define ADDRESS "0x20001F80"
int x2 __attribute__((section(".ARM.__at_0x20001F80")));
int x3 __attribute__((section(".ARM.__at_"ADDRESS)));
参考资料
1、链接: http://t.csdn.cn/9y86y
2、ARM® Compiler v5.06 for μVision® Version 5 armcc User Guide
3、Arm® Compiler Version 6.14 User Guide