mdk Arm Compiler V6注意事宜

Arm Compiler V6发布已经好久,考虑到各种麻烦,懒得转换。

近期研究iar对代码的优化,忽然发现V6版本的优化也很不错,遂对之前的代码做了一些升级,当然过程比较坎坷,一些要点记录一下:

1. 分散加载文件

; V6: armclang
#! armclang --target=arm-arm-none-eabi -mcpu=cortex-m3 -E -x c

; V5: armcc
#! armcc -E

分散加载文件中定义宏的时候,V5比较简单,V6需要修改一下。

2. C语言宏的连接问题

V5的宏连接,##对连接内容没有限制,但是V6只能连接一个符号。

比如:GPIOA##->ORD,这里面的符号“->”会出错。

3. CPU底层接口ISB

在cpu底层代码中,之前使用的__isb, 现在变成了__builtin_arm_isb,__isb会报错。

#define __ISB()        __builtin_arm_isb(0xF);

4. 数据段的定义l

1 // V5:
2 #pragma arm section rwdata="EXT_RAM" zidata="EXT_RAM"
3 #pragma arm section rwdata="" zidata=""
4 
5 // V6
6 #pragma clang section data="EXT_RAM" bss  ="EXT_RAM"
7 #pragma clang section data="" bss  =""
8 
9 In Arm Compiler 5, the section types you can use this pragma with are rodata, rwdata, zidata, and code. In Arm Compiler 6, the equivalent section types are rodata, data, bss, and text respectively.

5. TODO...

博客园:http://www.cnblogs.com/linux-farmer/
原文地址:https://www.cnblogs.com/linux-farmer/p/13339684.html