__attribute__
设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )
格式__attribute__ ((attribute-list))
attribute-list
aligned
指定对象的对齐格式(以字节为单位)
packed
该属性对struct 或者union 类型进行定义,设定其类型的每一个变量的内存约束
告诉编译器取消结构在编译过程中的优化对齐(使用1字节对齐)
at
绝对定位,可以把变量或函数绝对定位到Flash中,或者定位到RAM。
FLASH:u16 Flash[512] __attribute__((at(0x0800F000)));
RAM:u8 RAM[RAM_LEN] __attribute__ ((at(0X20001000)));
section
在ARM编译器编译之后,代码被划分为不同的段,
RO Section(ReadOnly)中存放代码段和常量,
RW Section(ReadWrite)中存放可读写静态变量和全局变量,
ZI Section(ZeroInit)是存放在RW段中初始化为0的变量。
可多个配合使用
u8 Addr[100] __attribute__ ((section ("RAM"), zero_init,aligned(4)));