发表评论
KEIL5 AC5升级到AC6的注意事项
需要使用AC6编译器,但是源代码是基于AC5编写的时候,可以通过如下方式修改代码以适配AC6。
如下图所示,将编译器调整为AC6,建议选择AC6默认版本编译器(即下拉框第一个)
具体参数介绍见《KEIL5 Language/Code Generation 语言/代码生成介绍》,可以参考下方设置。关于使用库存在的一些问题,在编译的时候,添加关键字: -fshort-enums & -fshort-wchar(一般默认都是添加了的)。
由于AC5的编译器检查规则比较严格,所以编译的警报会增多,在AC5编译时没有警告的,在使用AC6时可能会产生警告。
我们需要修改不兼容的代码。其实,就那么几条不兼容的语句,编译之后见到的错误基本就是由于这些语句的不兼容导致的。如下图所示,详细可以参考官方文档。
这里主要是说数据结构,也是上面的指令不兼容的问题。如果之前使用typedef __packed struct定义,则替换成:__PACKED_STRUCT。
汇编迁移:这一节可以说是重点。
很多RTOS都有一个或多个与汇编有关的源代码文件,所以,很多有RTOS的工程,编译后都会存在许多错误。常见的就是“asm”这个关键字。
文件中大概说明了:兼容GNU标准,不兼容ARM标准。其中还特别强调了关于Inline Assembler的一点,仅支持GNU标准:
改完环境配置之后,按照上面的3、4、5修改源代码即可。