张宁的个人博客

莫道君行早,更有早行人。

KEIL5 AC5升级到AC6的注意事项

张宁的个人博客/发布时间:2023-10-25/分类:软件&硬件/ 浏览量:2192

KEIL5 AC5升级到AC6的注意事项

需要使用AC6编译器,但是源代码是基于AC5编写的时候,可以通过如下方式修改代码以适配AC6。

修改环境配置

1. 按照官方文档说明配置KEIL5

如下图所示,将编译器调整为AC6,建议选择AC6默认版本编译器(即下拉框第一个)

屏幕截图 2024-12-17 201327.png

2.配置C/C++的Language/Code Generation

具体参数介绍见《KEIL5 Language/Code Generation 语言/代码生成介绍》,可以参考下方设置。关于使用库存在的一些问题,在编译的时候,添加关键字: -fshort-enums & -fshort-wchar(一般默认都是添加了的)。

由于AC5的编译器检查规则比较严格,所以编译的警报会增多,在AC5编译时没有警告的,在使用AC6时可能会产生警告。

8f202b56093338fd1e7caf53e5c4ad4d.png

3.处理AC5和AC6的指令不兼容

我们需要修改不兼容的代码。其实,就那么几条不兼容的语句,编译之后见到的错误基本就是由于这些语句的不兼容导致的。如下图所示,详细可以参考官方文档。

b6a4c0f2c9d010e70813f3c08ad7d626.png

4.调整数据结构

这里主要是说数据结构,也是上面的指令不兼容的问题。如果之前使用typedef __packed struct定义,则替换成:__PACKED_STRUCT。

5.汇编迁移

汇编迁移:这一节可以说是重点。

很多RTOS都有一个或多个与汇编有关的源代码文件,所以,很多有RTOS的工程,编译后都会存在许多错误。常见的就是“asm”这个关键字。
文件中大概说明了:兼容GNU标准,不兼容ARM标准。其中还特别强调了关于Inline Assembler的一点,仅支持GNU标准:

8f0b5d9d76502573dc29c30263c27552.png

修改源代码

改完环境配置之后,按照上面的3、4、5修改源代码即可。


发表评论