当前位置:首页 > 单片机 > 小麦大叔
[导读]点击上方“小麦大叔”,选择“置顶/星标公众号”福利干货,第一时间送达大家好,我是小麦,上次写过一篇文章《Keil编译太慢怎么办?教你一招,提速10倍 》,减少了中间文件的生成,确实把编译速度提高了很多,其实没有从根本上解决问题,有大佬提出用直接上AC6。于是我就切换到AC6上尝试...

点击上方“小麦大叔”,选择“置顶/星标公众号”

福利干货,第一时间送达

大家好,我是小麦,上次写过一篇文章 《Keil 编译太慢怎么办?教你一招,提速10倍 》,减少了中间文件的生成,确实把编译速度提高了很多,其实没有从根本上解决问题,有大佬提出用直接上AC6。



于是我就切换到AC6上尝试了一下,效果还是不错的,我就分享一下,感兴趣的小伙伴们可以看一下,希望对你有所帮助。

AC6有何不同?

ARM Compiler 5(及更早版本)使用 armcc 编译器。而AC6(ARM Compiler 6) 用 armclang 替换了 armcc,因此是一个新的编译器。七年前就有人问了这样的问题。

AC6和AC5具体有哪些差异呢?

参考链接:https://developer.arm.com/documentation/100068/0612/migrating-from-arm-compiler-5-to-arm-compiler-6/migration-overview

Arm Compiler 6 基于现代 LLVM 编译器框架。Arm Compiler 5 不是基于 LLVM 编译器框架。因此,将您的项目和源文件从 Arm Compiler 5 迁移到 Arm Compiler 6 ,我们需要注意几点:

  • 调用编译器时命令行选项的差异。
  • 遵守语言标准的差异。
  • 编译器特定关键字、属性和编译指示的差异。
  • 编译器优化和诊断行为的差异。
下面是AC6和AC5的工具链差异:

工具链差异
从这里我们可以看到,出了C编译器和预处理器不同以外,其他基本上都是相同的。

除了工具链的差异,优化也有差异,还有一些默认的差异,包括编译选项,生成的固件命后缀不同等等,详细可以参考上述的链接。至于强不强,用了才知道嘛。

Keil中切换编译器

Keil MDK 5.27中,我们打开项目选项,就可以切换编译器了,这里包括了AC5和AC6,具体如下图所示;

为了测试,我用CubeMX生成了一个STM32F103CB基于HAL库的Keil MDK工程,使用AC5编译器进行构建;

总共耗时 10 秒

后面我切换成AC6编译器,进行重新构建;

总共耗时 5 秒

如果单纯基于HAL库,没有加入其他第三方库的话,直接在项目选项中的编译器选项中,选择AC5和AC6就可以实现无缝切换,这是因为在CMSIS中已经帮你做好了兼容性的处理,在cmsis_compiler.h中,这里的条件编译选项,我们可以发现已经通过判断不同的编译器版本,而包含了不同的头文件,分别是对应armccarmclag的;如下图所示;

项目已经根据系统进行了选择;

#elif defined (__ARMCC_VERSION) 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在资源受限的嵌入式系统中,代码空间优化直接影响产品成本与可靠性。通过编译器选项调优、链接脚本定制及代码结构重构的组合策略,可在保持功能完整性的前提下,将Flash占用降低30%-60%。

关键字: 嵌入式代码 编译器 链接脚本

在之前的文章中,我们已经了解到如何在 AMD Versal AIE-ML 架构上创建一个 FFT 应用程序,而无需进行任何 AIE-ML 内核编码,只需使用 AMD DSP 库即可实现。然后,我们还看到了如何利用 Vit...

关键字: 傅里叶变换 人工智能 编译器 MATLAB

在高性能计算领域,循环优化是提升代码执行效率的核心手段。循环展开(Loop Unrolling)通过减少循环控制开销和增加指令级并行性提升性能,而编译器优化选项则通过静态分析自动应用多种优化技术。二者协同使用可产生超越单...

关键字: 编译器 循环展开

结构体作为C/C++中组织异构数据的核心方式,其内存布局直接影响程序性能。本文通过量化实验对比不同对齐策略的内存占用差异,结合编译器指令实现精准优化。

关键字: 结构体 C语言 编译器

本文将介绍新开发的自动化Vitis工作区流。原始的KRS流自动将内核生成到配置在ROS 2包的CMakeLists.txt中的xclbin中,但目前未使用。虽然原始流程允许在ROS 2中直接生成内核,但在开发新内核时,该...

关键字: ROS 2 编译器 vitis

新竹2025年10月2日 /美通社/ -- 全球硅智财(IP)领先供应商円星科技(M31 Technology Corporation,下称 M31)今日于台积公司北美开放创...

关键字: 台积电 存储器 编译器 超低功耗

在C语言编程中,结构体内存对齐是一个容易被忽视却影响深远的关键问题。它不仅关乎程序性能,更直接影响到内存占用效率,尤其在嵌入式系统等资源受限环境中显得尤为重要。本文将深入探讨结构体内存对齐的原理,并分享手动调整与编译器优...

关键字: C语言 内存对齐 编译器

编译器不仅是连接硬件与软件的桥梁,还直接影响MCU的性能优化与功能安全。面对汽车行业对高可靠性、低功耗和高算力的需求,编译器需在确保ASIL-D等严格标准的同时,最大化发挥RISC-V芯片的潜力。

关键字: 车规MCU RISC-V 编译器 HighTec

国内电子信息产业内的厂商正在全球嵌入式系统的发展浪潮中扮演着越来越重要的角色,但随之而来的是国内嵌入式系统和相关芯片企业在出海时也面临越来越多的合规要求,尤其是在保障用户、设备和周边人与物安全的功能安全领域内的合规要求。...

关键字: 嵌入式系统 智能网联 编译器

【2025年4月11日, 德国慕尼黑讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出用于AURIX™、TRAVEO™和PSOC™的可扩展软件包产品组合...

关键字: PSOC 物联网 编译器
关闭