Keil MDK中使用Arm compiler 6注意事项
内容提要
在Keil MDK中使用Arm Compiler 6需MDK 5.23以上版本,并满足相关Pack及CMSIS版本要求。AC6默认不显示警告,可用-Wno-参数控制;与AC5存在不兼容的语言扩展,并开始支持GNU风格汇编。AC6支持链接时优化,可移除未使用的模块,而AC5只能在模块内检测。
延伸解读
升级AC6前的环境检查
文章明确列出使用Arm Compiler 6的版本门槛:MDK需5.23及以上,同时Keil MDK-Middleware Pack、ARM Compiler Support Pack和CMSIS Pack都有最低版本要求。这意味着仅升级编译器本身不够,配套软件包也需同步更新,否则可能无法正常编译。读者在迁移前应逐一核对当前工程所用各组件的版本,避免因版本不匹配导致构建失败。
警告默认关闭带来的影响
AC6默认不显示警告信息,文章指出可通过-Wno-参数控制,并引导参考Clang的警告选项文档。这一默认行为虽有助于集中处理错误,但也可能让潜在问题被忽略。读者需注意,迁移后应主动检查编译输出,必要时调整警告设置,而不是默认认为“无警告即无问题”。
语言扩展与汇编兼容性变化
AC5与AC6在语言扩展上存在不兼容,文章以图示呈现但未展开具体条目。同时,AC6开始兼容GNU风格的汇编代码,并给出了一段使用.section、.balign等伪指令的示例。对于包含大量AC5专有扩展或传统汇编的工程,迁移时需重点排查这些不兼容点,可能涉及代码改写。
链接时优化的实际差异
AC6支持链接时优化,能对整个程序进行分析并移除未使用的模块;而AC5只能在模块内部检测未使用内容。这意味着AC6在裁剪冗余代码方面范围更大,有助于减小最终固件体积。读者在评估是否迁移时,可将此作为一项实际收益,但需注意优化行为变化可能影响调试体验。
Q&A
在Keil MDK中使用Arm Compiler 6需要满足哪些版本要求?
需要MDK 5.23及以上版本,Keil MDK-Middleware Pack版本7.4.0或更高,Keil ARM Compiler Support Pack版本1.3.0或更高,ARM CMSIS Pack版本5.0.1或更高。
AC6默认会显示警告信息吗?如何控制警告?
AC6默认不显示警告信息,可以通过使用-Wno-参数来控制警告的显示,这样有助于将注意力集中在修正错误上。
AC5和AC6在语言扩展方面有什么不兼容的地方?
AC5与AC6存在不兼容的语言扩展,具体不兼容的扩展未在文中详细列出,但文中提到AC6开始兼容GNU风格的汇编代码。
AC6支持GNU风格的汇编代码吗?
是的,AC6开始兼容GNU风格的汇编代码,文中给出了一个简单的GNU语法示例。
AC6在链接时优化方面有什么改进?
AC6增加了对链接时间的优化,可以分析整个程序并将没有使用到的模块移除,而AC5只能在模块内部检测未使用的代码。
在哪里可以找到AC6警告选项的详细信息?
可以参考Clang的官方文档:http://clang.llvm.org/docs/DiagnosticsReference.html。