IAR上__attribute__的用法
1. const uint8 Channel__attribute__ ((aligned(16))) ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
} ;
2. uint16 ADCBuffer __attribute__ ((section(".adc_data0")));
请问这两句移植到IAR ARM版本上需要怎么修改?__attribute__这个怎么去掉?谢谢! 去掉应该会影响使用。
IAR 的 ARM的 attribute 可以参考 ARMCC User Guide。 GCC:__attribute__ ((aligned(16)))
IAR:#pragma pack(16)
GCC:__attribute__ ((section(".adc_data0")))
IAR:#pragma section="adc_data0"
这个更改仅仅改c文件是远远不够的,链接脚本也要改,注意adc_data0在ld文件(GCC)中的写法,移植到icf文件(IAR)里面去。 ADCBuffer 这种的,用个volatile uint16 * ADCBuffer = (volatile uint16 *) 地址; 其中地址用链接期里面的 .adc_data0 段的地址,来代替,这样什么编译器都能用。
或者#define一下也可以。
那16个const里面存16个数更是无稽之谈,查个表和加个1的速度应该没有什么意义,还整16地址对齐, 千岁寒 发表于 2019-6-10 14:07
去掉应该会影响使用。
IAR 的 ARM的 attribute 可以参考 ARMCC User Guide。
有道理有道理 R2D2 发表于 2019-6-10 22:37
GCC:__attribute__ ((aligned(16)))
IAR:#pragma pack(16)
谢谢回复!
页:
[1]