嵌入式学习笔记 - 关于ARM编辑器compiler version 5 and compiler version 6
KEIL中关于ARM编译器是可选的,如下图,默认是最新版本,可以下载旧版本并放置到KEIL安装根目录下就可以在此处出现可选项。
一 关于ARM 编译器compiler version 5 和 compiler version 6 的区别,
以下是deepseek的回答:
ARM Compiler 5(AC5)与 ARM Compiler 6(AC6)的主要区别体现在以下方面:
一、编译架构差异
-
AC5:基于传统编译器架构,优化策略以静态分析为主3。
-
AC6:基于 LLVM 框架,支持更先进的动态优化算法和对新型 Arm 处理器架构(如 Cortex-M55、Cortex-A78)的适配36。
二、优化能力对比
-
优化等级
-
AC5:提供
0~3
级优化,其中-O3
侧重性能,但可能显著增加代码体积;-O0
保留完整调试信息23。 -
AC6:新增
-Os
(平衡优化)、-Oz
(极致代码体积优化),且默认推荐-O1
(有限优化,适合调试)24。
-
-
性能提升
-
AC6 在复杂嵌入式代码中综合性能提升约 14.9%,部分工业/汽车应用中性能提升超过 30%5。
-
代码体积优化效果优于 AC5,尤其在结合
microlib
时更明显5。
-
三、兼容性与调试支持
-
语法兼容性:
AC6 对代码要求更严格,例如naked
函数内禁止非汇编语句,可能导致 AC5 代码迁移时报错(需修改代码逻辑)6。 -
调试体验:
AC6 在-O1
下保留更多调试信息,而 AC5 的-O0
优化可能因调试窗口关闭导致断点设置受限24。
四、编译速度与工具链
-
编译速度:AC6 的编译速度显著快于 AC5(尤其在大型工程中)16。
-
工具链默认设置:AC6 默认启用
--strict_ansi
模式,而 AC5 的语法检查相对宽松6。 -
安全认证:AC6 更新了针对功能安全(如 ISO 26262)的认证支持5。
五、适用场景建议
-
推荐 AC6:新项目开发、需适配最新处理器架构或追求高性能/小体积的场景。
-
保留 AC5:维护旧项目或需兼容特定语法(如部分嵌入式库)时。
迁移注意事项:切换至 AC6 需检查裸机代码中的 naked
函数实现,并调整文件级优化设置(不再支持局部代码优化指令。
二 兼容性问题
使用KEIL旧版本生成的代码移植到新版本KEIL之后,由于新版本keil使用新版的编译器,就会造成代码不兼容问题,编译会提示错误.
同样如果新版的keil生成的代码使用旧版本的编译器同样会造成不兼容,并且报错。