mdk Arm Compiler V6注意事宜

Posted linux-farmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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...

以上是关于mdk Arm Compiler V6注意事宜的主要内容,如果未能解决你的问题,请参考以下文章

Keil MDK下如何设置非零初始化变量 - 基于Arm Compiler 6

Keil MDK下如何设置非零初始化变量 - 基于Arm Compiler 6

ARM编译器V6.15性能优化及注意事项

Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别

MDK,IAR,GCC生成库文件的方法(2020-08-04)

Keil/MDK:使用过程中的一些设置