打印

IAR上__attribute__的用法

[复制链接]
2840|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhxingyu|  楼主 | 2019-6-6 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, IAR, ADC, dc, AD
1. const uint8 Channel[16]  __attribute__ ((aligned(16))) ={
                1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
} ;
2. uint16 ADCBuffer[512] __attribute__ ((section(".adc_data0")));
请问这两句移植到IAR ARM版本上需要怎么修改?__attribute__这个怎么去掉?谢谢!

使用特权

评论回复

相关帖子

沙发
千岁寒| | 2019-6-10 14:07 | 只看该作者
去掉应该会影响使用。
IAR 的 ARM  的 attribute 可以参考 ARMCC User Guide。

使用特权

评论回复
评论
R2D2 2019-6-10 22:32 回复TA
睁着眼说瞎话,ARMCC User Guide是MDK的,楼主要从GCC移植到IAR,看这玩意儿有屁用! 
板凳
R2D2| | 2019-6-10 22:37 | 只看该作者
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)里面去。

使用特权

评论回复
地板
linqing171| | 2019-6-11 08:04 | 只看该作者
ADCBuffer 这种的,用个volatile uint16 * ADCBuffer = (volatile uint16 *) 地址;   其中地址用链接期里面的 .adc_data0 段的地址,来代替,这样什么编译器都能用。
或者#define一下也可以。

那16个const里面存16个数更是无稽之谈,查个表和加个1的速度应该没有什么意义,还整16地址对齐,

使用特权

评论回复
5
千岁寒| | 2019-6-12 09:38 | 只看该作者
千岁寒 发表于 2019-6-10 14:07
去掉应该会影响使用。
IAR 的 ARM  的 attribute 可以参考 ARMCC User Guide。

有道理有道理

使用特权

评论回复
评论
R2D2 2019-6-13 13:53 回复TA
胡扯蛋 
6
zhxingyu|  楼主 | 2019-6-18 20:51 | 只看该作者
R2D2 发表于 2019-6-10 22:37
GCC:__attribute__ ((aligned(16)))
IAR:#pragma pack(16)

谢谢回复!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

309

帖子

3

粉丝