一辆车是怎样学会“生锈”的:全球首个Rust量产ECU诞生全记录


这是沃尔沃工程师团队历时三年半,将Rust语言从极客玩具推进至汽车电子控制单元(ECU)量产的真实历程。

一、片头

同学们今天咱们聊的“Rust”,可不是你家自行车放楼下三个月不骑,最后轮轱辘都红成渣的那种“锈Rust”。  
我们要说的,是一种叫 Rust 的“超级语言”,翻译过来也叫“锈”。它不但不会让车子烂掉,反而能让汽车的大脑——那些小芯片——变得比钢铁侠的盔甲还结实。  
故事的主角,是一个在沃尔沃上班、头发略秃、肚子略圆、但脑洞能装下整个北欧的大叔,名字叫 Julius。  


二、大叔的自黑:写了 15 年 C++,最后却被一个小数点打败

Julius 大叔 2015 年刚跳槽到沃尔沃时,自我感觉爆棚:  “嘿嘿,老子在嵌入式圈混了十五年,啥大风大浪没见过?内存泄漏?空指针?小 case!”  
结果上班第一周,就被一个“小数点”教做人——原来他把数组多写了一位,车子差点在高速上自己打方向盘。  

那天晚上,他回家抱着键盘哭:  “难道我一辈子都要跟这些‘看不见的鬼’搏斗?!”

三、天降奇兵:Rust 1.0 横空出世

正当 Julius 怀疑人生时,科技圈爆出大新闻:  
“Mozilla 发布 Rust 1.0!内存安全、零开销、并发无敌!”  

大叔一看介绍,当场瞳孔地震:  
“写一次就编译过?编译过就几乎不崩?还能直接往芯片里烧?这不是我梦中的女神吗!”  

可女神有点高冷——语法难、文档少、例子缺,连“Hello World”都要先跟“生命周期”搏斗三百回合。  
大叔两次尝试,两次被劝退,只好把 Rust 存在硬盘角落,像把暗恋对象的微信置顶却不敢说话。

四、暑假逆袭:两本书拯救一条灵魂

2017 年夏天,大叔带娃去乡下度假。  

北欧的极昼超长,晚上 10 点天还亮着,娃在草地上疯跑,他躺沙滩椅里,把两本 Rust “神书”当武侠小说刷完了。  
读着读着,突然“叮”的一声,大脑里灯泡全亮:  
“原来 Rust 不是故意刁难我,它是先苦后甜、先虐后宠啊!”  
大叔连夜打开笔记本,写下十页“投名状”:  
“我要让全沃尔沃的车都用 Rust!谁拦我我就用编译器 error 砸他!”

五、第一仗:把安卓“忽悠”瘸

理想很丰满,现实却骨感。  

沃尔沃内部 99% 代码是 C/C++,供应商更保守:  “新语言?出了事谁负责?你赔得起吗?”  
大叔只好曲线救国——盯上了“安卓车机”。  

当时安卓根本不支持 Rust,他就自己写“翻译官”:  
用 Rust 封装一堆 .so 文件,再让 Java 通过 JNI 调用,像给两国元首当同声传译。  
为了测试,他把笔记本抱进地下停车场,Raspberry Pi 贴满魔术贴,CAN 线像蜘蛛网一样吊在车顶。  
第一次点火,“风扇”居然听话地转起来!  
大叔在车里手舞足蹈,保安以为他触电了,差点打 112。

六、再遇拦路虎:安全等级像一座山

汽车界有句黑话:  “一旦涉及到‘刹车’和‘转向’,安全等级就得做到 ASIL-D,相当于飞机级别。”  
Rust 当时连张“安全证书”都没有,好比无证驾驶。  

大叔只好再退而求其次:  
“那我先找个‘门卫大爷’岗位行不行?只负责开门、关灯、喊起床,不搞生死操作。”  
还真让他找到了——低功耗处理器(Low Power Processor,简称 LP)。  
这颗芯片像“门卫大爷”:  
主电脑(高性能节点)睡觉时,他站岗;主电脑要醒了,他敲敲门。  
功能简单,却关乎“待机功耗”——电动车停三天能不能打着火,全靠他。  
最关键的是:LP 只做“开”,不做“关”,理论上不属于“安全关键”。  
大叔一拍大腿:  
“就是你了,皮卡丘!”

七、组队打怪:从四人小黑屋到十人复仇者联盟

2018 年,大叔拉来三位志同道合的“码农难民”,成立“Rust 四人帮”。  
没有领导拨款,他们就偷用别的项目预算;  
没有测试台架,就去垃圾站捡旧电路板;  
不会写驱动,就把芯片手册当“推理小说”通宵啃。  
半年后,他们搞出“全球首个 100% Rust 的车用 ECU”原型。  
领导看完演示,沉默三秒,说:  
“要是真能在车里跑一年不崩,我请你们全组去北极看极光。”  
大叔心里嘀咕:  
“看极光是假,想让我们冻成冰雕才是真吧?”

八、硬件 DIY:两百欧元造出“测试神器”

软件问题刚解决,硬件测试又踩坑。  
原来 LP 芯片引脚藏在主板夹层,示波器探头根本插不进去。  
每次改一行代码,都要把整台车升举半小时,工程师们累到想改行去送外卖。  
大叔灵光一闪:  
“咱们自己画一块‘开发板’,把芯片引脚全引出来,再配一排排香蕉插头,想测哪里插哪里!”  
说干就干,他们找到公司最便宜的 PCB 工厂,一口气打样 100 块,单块成本 200 欧——还不够领导一顿商务宴请。  
新板子像“乐高积木”,既能叠罗汉,又能挂墙排排站。  
CI 系统每天夜里跑 8000 个测试用例,闪得实验室像蹦迪。  
后来这套方案被内部称为“PL2.0”,至今仍是沃尔沃 Rust 团队的“传家宝”。

九、三年磨一剑:Polestar 3 量产上车

2021 年,Rust ECU 通过全部 cybersecurity 审核,拿到“准生证”。  
2022 年,装进首批 Polestar 3  beta 车,从北极圈开到撒哈拉,零故障。  
2023 年,正式量产。  
大叔在发布会上偷偷掐自己:  
“三年半,老子从 0 行代码到 17 万行 Rust,平均每人每年 0.5 个外部 bug,比隔壁 C++ 组低 100 倍,这真的不是梦?”  
媒体头条呼啸而来:  
“沃尔沃‘生锈’成功!全球首个 Rust 量产 ECU 上车!”  
大叔把新闻链接甩进家族群,丈母娘终于懂了:  
“原来你不是修电脑的,是给汽车装‘护身符’的啊!”

十、数字说话:老板最爱看的 PPT

1. 代码量:17 万行,其中 9 万行自己手敲,7 万行用“别人写好的乐高积木”(第三方 crate)。  
2. 团队规模:巅峰 10 个人,平均工龄 10 年,却全是 Rust 新手。  
3.  bug 率:0.25 / 千行代码;行业平均 15~50 / 千行,直接秒杀。  
4. 成本:同样复杂度项目,C++ 组要 30 人月,Rust 组 10 人月,老板笑得合不拢腿。  
5. 加班:发布前一周,Rust 组晚上 8 点集体关灯;隔壁组灯亮到凌晨 3 点——谁爽谁知道。

十一、不是吹牛:Rust 到底好在哪?

大叔总结成“四句话”,背下来能去面试吹牛:  
1. 内存安全:编译器当你面抓住“手贱”,绝不让你把数组写成炸弹。  
2. 零成本抽象:写高阶函数也不会慢,像把高铁票价打成公交价。  
3. 并发无忧:数据竞争在编译期就枪毙,多线程像单线程一样稳。  
4. 生态高质量:别人写的 crate 平均水准远超 Github 随机路人,用得像拆盲盒却全是隐藏款。

十二、吐槽大会:Rust 也不是完美女神

1. 学习曲线陡:前两个月你感觉在爬珠穆朗玛,还是北坡。  
2. 编译速度慢:喝杯咖啡回来还在“checking...”,再喝杯又怕通宵。  
3. 二进制体积:embedded 下有时比 C 大 20%,芯片内存抠门时会心疼。  
4. 语法“套娃”:lifetime、trait、generic 一叠加,错误信息像论文,需要谷歌翻译。  

但大叔拍拍胸口:  
“比起以前半夜被电话叫醒去修 bug,这些都不算事!”

十三、未来展望:2026,Rust 要拿“安全驾照”

汽车界终极门槛是“功能安全”——ISO 26262。  
Rust 目前还没考证,但考场外已排起长队:  
- Ferrocene 编译器:正在做 ASIL-D 认证;  
- 核心库:seal 2 级已过,相当于工业界的“科目二”;  
- 安全手册:Rust 基金会牵头,全球 20 多家车厂联合起草。  

大叔预测:  
“2026 年,Rust 将正式拿到‘安全驾照’,到时候刹车、转向、气囊都能用!省下的测试费够每家车厂造一座摩天轮。”

十四、彩蛋:安全 vs 安全——两个“安全”吵架了

汽车里有两个“安全”经常打架:  
- 功能安全:别让车害人(刹车失灵、气囊乱爆)。  
- 信息安全:别让黑客害人(远程开车门、刷你信用卡)。  

传统思路:功能安全要“冻住”——一旦认证,谁也别改;信息安全要“常更新”——天天打补丁。  

一个要静,一个要动,像让猫和狗同台跳舞。  

Rust 给出奇葩方案:  
“我有‘可证明重构’——改一行代码,编译器告诉你有没有牵连;再配‘高正确率’——先天少 bug,不用天天打补丁。”  

于是猫狗握手言和,大叔在一旁嘿嘿:  
“看,这就是技术碾压的艺术!”