网易首页 > 网易号 > 正文 申请入驻

开源嵌入式编译器,没想象中那么好?

0
分享至

▲ 点击上方 蓝字 关注我们,不错过任何一篇干货文章!

工欲善其事,必先利其器,对嵌入式工程师来说,嵌入式编译器是不可或缺的神兵利器,它被人冠以“C语言翻译官”的名号。 由于C语言历史悠久,早期没有规范,整个计算机产业也都处于拓荒的年代,所以就涌现了很多款C语言编译器。

根据EEWorld的调研,嵌入式工程师比较青睐的嵌入式编译器主要包括Keil(ArmCC)、IAR、GCC、AVR GCC、CLion、Clang、green hills、TI的CSS、ADI的Visual DSP++。不过,随着嵌入式开发格局逐渐稳固,Keil、IAR、GCC成为嵌入式编译器三巨头,基本大部分嵌入式产品都有其身影。

尤其是GCC,作为一个完全开源的编译器,很多MCU厂商的IDE都由它改写而来。但最近一段时间,业界出现不同的声音,表示“开源才是最贵的”,这些编译器在开源背后潜藏许多隐形成本。

付斌|作者

电子工程世界(ID:EEWorldbbs)|出品

RTOS中,GCC没打过IAR

现如今,“C/C++与RTOS结合使用”是嵌入式软件开发的黄金范式,所以在嵌入式领域,判别编译器好不好用,那一定是在RTOS上好用。

根据著名嵌入式Jacob Beningo的测试,使用IAR编译时,RTOS指标性能比使用GCC编译时要好得多。根据公制测试,结果略有不同,但通常要好20~40%。以其中一个示例结果为例,该示例将IAR指标结果除以 ThreadX(Eclipse ThreadX)的GCC指标结果。

  • RTOS测试 ThreadX

  • 基准测试 74%

  • 系统调度 3%

  • 内存分配测试 28%

  • 消息处理 41%

  • 抢占式调度 19%

  • 同步处理 32%

也许会有人说,编写代码的质量决定了性能好坏。这句话确实没错,人们可以花费大把时间,细致地优化代码,但这不意味着开发时间更长,开发成本更高?

比如说,一些IoT项目工期比较短,有时候如果没有来得及去优化,那可能GCC处理时间会增加20%,并且让电池更费电。又或者,GCC编译的代码可能体积也会更大,这时候,内存从120MHz就需要变相升级到200MHz,这几块钱的差距,就会让产品成本大幅度增加。

GCC的确是行业一个福音,但相比商业编译器,也许它本身也存在一定额外的隐形开销。看目前RTOS抑或是开源RTOS本身也是附带工具链的,大部分则只支持GCC,却不支持商业编译器IAR,这种情况导致客户选择面变窄。

Keil比GCC编译文件,更小

虽然Keil目前已经包括五种版本,其中不乏全免费的教育版,而且STM32之类的MCU使用Keil也是免费的,但如果做一些很深入的开发工作,Keil本身还是需要付费的。所以它实质上还是算在商业编译器范畴内。

在工程师群里,很多人都提到一个话题,就是Keil的ArmCC编译器很神。那么实际情况如何呢?

根据工程师的测试,可以得知,GCC的编译速度最快(Keil和VisualGDB都开启多线程编译的)。而bin体积最小的是ArmCC V5。代码的执行效率没有测。

而ArmCC V5和V6对比,编译用时差异不大,手动掐表可以认为是误差范围内。但是bin体积V5比V6小很多。

优化选项

O0

O1

O2

O3

Ofast

Os

Oz

ARMCC V6.9

bin大小(KB)

87.84kB

编译用时(秒)

7.23

7.52

7.99

8.3

8.4

8.17

7.64

ARMCC V5.06

bin大小(KB)

编译用时(秒)

7.93

8.25

8.15

9.68

GCC 7.2

bin大小(KB)

176

135

136

144

129

编译用时(秒)

3.49

3.63

3.68

4.12

3.96

为什么有时候会出现文件大小区别的情况?有工程师也曾经遇到过GCC编译bin文件比ArmCC大的情况,通过捋顺代码,发现有些原厂本身做了一些优化工作,所以实际上这本身也就节省了工程师优化的时间。

也有工程师表示,Keil有Keil的优势,GCC有GCC的优势,二者大多数情况下不可兼得;Keil(ArmCC)编译对Arm芯片有天然的优势,无论从代码性能和代码尺寸都有更佳的表现;GCC优势在于开源,利于折腾。

也有工程师在m0上做了实验,使用同样的代码触发pendsv中断,ArmCC响应时间为68clocks,gcc响应时间为78clocks。他表示,虽然ArmCC不开源、不免费、不可控,但是它会更代码执行效率更高。

ArmCC 中断响应汇编

GCC中断响应汇编

用谁,工程师各持己见

萝卜青菜各有所爱,不论如何测试,工程师总是有自己的偏好。因为公司需求不同,对于Flash、执行速度、交付等要求不同,使用不同编译器都有不同的结果。

喜欢Keil的,在实际体验中,ac6的Osize优化特别猛,性能稍微弱一丢丢,但是体积特别小,其它编译器都比不过,同样的程序比gcc能小四分之一。但它让人又爱又恨,就比如MDK AC6曾经出现过调试到处乱跳的问题,不过商业版本有所改善,或者说MDK经常把if-else结构优化成IT汇编指令,在反汇编窗口中打的断点都命中了实际确不会执行。很多人表示,习惯了。

有人更喜欢用IAR,IAR不仅比Keil便宜很多,而且还内置了misra静态检查工具,很方便。

有传统GCC派,gdb调试Vscode编辑,在Linux系统下编译很香,有些老板不在意Flash的情况下,可以有最快的交付速度。也有Clion、Clang之类的新派。

那么,你怎么看待不同编译器之间的差异问题,你又会选用什么编译器?

参考文献

[1]https://www.embedded.com/the-hidden-costs-of-open-source-compilers

[2]https://www.zhihu.com/question/26864086/answer/280900095

[3]https://club.rt-thread.org/ask/article/866813c0a2efd608.html

[4]https://www.bilibili.com/video/BV18h4y1v7yR

欢迎将我们设为“星标”,这样才能第一时间收到推送消息。

领领取自动驾驶、辅助驾驶等方面免费资料包!

扫码添加小助手回复“进群”

和电子工程师们面对面交流经验

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
越南武庙供奉十八位名将,其中竟有十二位是中国人,他们为何如此安排?

越南武庙供奉十八位名将,其中竟有十二位是中国人,他们为何如此安排?

寄史言志
2026-02-16 17:12:22
瑞幸咖啡实控人黎辉:父亲是原兰州军区副司令,妻子是知名主持人

瑞幸咖啡实控人黎辉:父亲是原兰州军区副司令,妻子是知名主持人

小莜读史
2025-12-16 14:58:18
大年初一破防!小菲直播喊女儿倒水,小玥儿一动作,全家年味拉满

大年初一破防!小菲直播喊女儿倒水,小玥儿一动作,全家年味拉满

秋别离
2026-02-17 23:58:23
春晚第一波梗出现了,网友:笑疯了

春晚第一波梗出现了,网友:笑疯了

91.6陕西交通广播
2026-02-16 22:55:14
斯诺克赛程:决出8强,赵心童领衔,中国3将上阵,老马开门红?

斯诺克赛程:决出8强,赵心童领衔,中国3将上阵,老马开门红?

刘姚尧的文字城堡
2026-02-18 07:09:59
霍启山娜然欧洲过年被偶遇,她和霍家儿媳说说笑笑,曝霍震霆也在

霍启山娜然欧洲过年被偶遇,她和霍家儿媳说说笑笑,曝霍震霆也在

开开森森
2026-02-18 11:36:01
410次开房记录流出:央企“女老虎”陶荔芳,背后还有多少同伙

410次开房记录流出:央企“女老虎”陶荔芳,背后还有多少同伙

深度报
2025-12-14 22:36:54
年轻人能捅多大的娄子?网友:给领导一些来自00后的震撼

年轻人能捅多大的娄子?网友:给领导一些来自00后的震撼

带你感受人间冷暖
2026-02-04 00:15:07
达赖和班禅,到底谁地位在藏民心中更高?

达赖和班禅,到底谁地位在藏民心中更高?

小豫讲故事
2026-02-11 06:00:09
不是血统问题!美媒主编点破:谷爱凌争议,只因她是美国本可拥有的王牌

不是血统问题!美媒主编点破:谷爱凌争议,只因她是美国本可拥有的王牌

草莓解说体育
2026-02-18 03:01:17
重庆一小区大门竟是百米隧道,业主:回家像大王回洞府

重庆一小区大门竟是百米隧道,业主:回家像大王回洞府

台州交通广播
2026-02-17 15:11:29
三万块“德国货”竟是云南造?蔡司徕卡背后的中国隐形大佬

三万块“德国货”竟是云南造?蔡司徕卡背后的中国隐形大佬

温言拾光
2026-02-18 07:22:03
1996年,李讷托人问诸城市委书记:您好,能不能帮我妈妈一个忙?

1996年,李讷托人问诸城市委书记:您好,能不能帮我妈妈一个忙?

简史档案馆
2025-12-06 11:05:03
欧冠刺激夜:尤文图斯2-5,皇马1-0,巴黎圣日耳曼3-2,穆帅染红

欧冠刺激夜:尤文图斯2-5,皇马1-0,巴黎圣日耳曼3-2,穆帅染红

侧身凌空斩
2026-02-18 06:18:49
印尼的豪赌大溃败,给全世界提了个醒:中国行我也行,纯粹是幻觉

印尼的豪赌大溃败,给全世界提了个醒:中国行我也行,纯粹是幻觉

墨兰史书
2025-11-23 06:05:03
榜单出来了:阿里和京东营收只差400亿元,利润差5倍?

榜单出来了:阿里和京东营收只差400亿元,利润差5倍?

呼呼历史论
2026-02-16 17:02:34
二婚,别为了凑合,再伤自己一次

二婚,别为了凑合,再伤自己一次

加油丁小文
2026-02-16 15:30:05
这7位央视主持至今未嫁,她们人人都是美女,最大的年龄已到60岁

这7位央视主持至今未嫁,她们人人都是美女,最大的年龄已到60岁

TVB的四小花
2026-02-18 08:42:26
如果不差钱,退休后首选这3座城市久居,物价低,还舒服

如果不差钱,退休后首选这3座城市久居,物价低,还舒服

蜉蝣说
2026-02-14 16:06:23
过完这个春节,中国AI只剩下阿里和字节

过完这个春节,中国AI只剩下阿里和字节

慢放
2026-02-17 17:26:24
2026-02-18 13:56:49
EEWorld电子工程世界 incentive-icons
EEWorld电子工程世界
即时参与讨论电子工程世界最火话题,抢先知晓电子工程业界资讯。
238文章数 20关注度
往期回顾 全部

科技要闻

怒烧45亿,腾讯字节阿里决战春节

头条要闻

牛弹琴:特朗普宣布一个大消息 日本要当"冤大头"了

头条要闻

牛弹琴:特朗普宣布一个大消息 日本要当"冤大头"了

体育要闻

维尼修斯进球后罢赛 向穆帅投诉对手歧视

娱乐要闻

6大卫视春晚收视出炉 北京台稳居第一

财经要闻

面条火腿香菇酱!上市公司这些年请你吃

汽车要闻

量产甲醇插混 吉利银河星耀6甲醇插混版申报图

态度原创

教育
时尚
本地
艺术
房产

教育要闻

“新校长”应有的模样

50+女性秋冬穿搭指南,4个让年龄法则成为加分项,越穿越优雅

本地新闻

春花齐放2026:《骏马奔腾迎新岁》

艺术要闻

这幅草书22个字,您能认全吗?艺术家精神病特质成焦点。

房产要闻

三亚新机场,又传出新消息!

无障碍浏览 进入关怀版