1、此变量属性使您能够指定变量的绝对地址。
2、语法
__attribute__((at(address)))
address:是变量的期望地址。
3、变量被放在它自己的section中,包含变量的section由编译器给出合适的类型:
只读变量放在RO类型的区域中。
初始化的读写变量放在RW类型的区域中。
显式初始化为零的变量放在:
RVCT 4.0及以后版本中ZI类型的部分。
RVCT 3.1及更早为RW型(非ZI型)。这些变量不是编译器的ZI-to-RW优化的候选变量。
未初始化的变量放在ZI类型的部分中。
4、GNU编译器不支持这个变量属性。
扫描二维码关注公众号,回复:
8606859 查看本文章
5、
链接器并不总是能够放置由at变量属性产生的部分。
当at属性用于具有不完整类型的声明时,编译器会错误地使用它。
6、如果无法将一个节放在指定的地址,链接器将给出错误消息。
7、例程
const int x1 __attribute__((at(0x10000))) = 10; /* RO */
int x2 __attribute__((at(0x12000))) = 10; /* RW */
int x3 __attribute__((at(0x14000))) = 0; /* RVCT 3.1 and earlier: RW.
* RVCT 4.0 and later: ZI. */
int x4 __attribute__((at(0x16000))); /* ZI */