一部汽车数亿行代码!软件是如何吞噬汽车的?
扫描二维码
随时随地手机看文章
(图表制作者:MARK MONTGOMERY 资料来源:德勒)透过ECU数量与软件代码行数,我们可以看出当前车辆中存在错综复杂的电子与软件编程。观察它们的协同工作方式,就会发现其中存在着大量驾驶员看不到或不需要看到的复杂性。为了向买家提供多种选择,汽车制造商不得不推出新的安全性、舒适性性能以及娱乐功能体验,这导致每个品牌及型号都出现了多个版本。此外,从汽油到电力、从人类驾驶到自动驾驶的转变,大量新代码的编写、检查、调试以及抵御黑客攻击的安全性,如今的汽车变成了带轮子的超级计算机,并迫使汽车行业变革。但是,汽车行业能够适应这种变化吗?功能与变量驱动的复杂性过去的二十年中,在提供更多安全及娱乐功能的需求推动下,汽车已经从单纯的交通工具转变为移动计算中心。与服务器机架、高速光纤互连不同,ECU和电路之间的数据通信发生在整个车身内(甚至车身外)。每次你去超市时,车辆都会执行数百万行代码。Vard Antinyan是沃尔沃汽车的软件质量专家,他撰写了大量有关软件及系统复杂性的文章,他解释说,截至2020年,“沃尔沃拥有大约120种ECU,我们从中选择ECU来创建每辆沃尔沃汽车中的系统架构。这些ECU总共包含1亿行源代码。”Antinyan表示:“这些源代码包含1000万行条件语句以及300万个函数,而源代码中大约有3000万处都调用了这些函数。”根据ECU的计算能力、ECU控制功能、需要处理的内部与外部信息和通信,以及是否由事件或时间触发,还有强制性的安全和其他监管要求,每个ECU中驻留的软件数量和类型都不相同。在过去的十年中,为了确保操作质量、可靠性和安全性,投入的ECU软件越来越多。采埃孚(全球最大的汽车零部件供应商之一,以下简称ZF)软件解决方案与全球软件中心副总裁Nico Hartmann表示:“为检测不当行为以确保质量和行驶安全的软件数量正在增加。”Hartmann指出,十年前专门用于确保操作质量的ECU软件只有大约三分之一,而如今通常都会超过一半或更多,尤其是在关键的行驶安全系统中。沃尔沃车辆中包含哪些ECU和相关软件(如豪华款SUV XC90拥有大约110个ECU),取决于几个因素。与所有汽车制造商一样,沃尔沃针对不同的细分市场提供每种车型的不同版本。Antinyan指出:“即便是相同型号的沃尔沃,在瑞典购买到的车辆也可能会不同于美国地区出售的。”每辆车不仅需要满足区域监管制度,而且每个车主也可以选择不同的发动机、驾驶系统、安全系统或其他功能。而车主选择的标准、各项配置以及法律要求的设备,这些将共同决定嵌入车辆的ECU、软件和相关电子设备的数量和类型,确保能够无缝协同工作。
Antinyan表示,对于一家汽车制造商来说,“车辆的多个版本非常难以管理,因为它涉及每个人。”举个例子,营销部门希望为不同的客户群提供拥有各种功能、多种多样的车型,而设计和工程部门则希望减少变量,从而将系统集成、测试、验证都保持在可控范围内。每增加一项功能就意味着需要增加额外的传感器、执行器、ECU和相应的软件,同时为了确保这些元件正常工作,还需要付出额外的集成工作。根据德勤的估算,从研发到开始生产,40%的车辆研发费用都消耗在了系统集成、测试、核查和验证上。记录生产和销售的每个车型中所有当前以及遗留的电子产品和软件是一项非常艰巨的任务。因此,有效管理各个变体的复杂性是整个汽车行业都面临的一个重大问题。毋庸置疑,为了连接整个车辆内所有的ECU、传感器和其他电子设备,并给它们供电,需要耗费大量布线和人工。为了支持车辆定制,汽车需要使用数千种不同的线束,控制经过车辆的信号流也需要多个物理网络总线。车辆的物理电子架构带来了更多需要应对的网络设计约束。许多ECU需要靠近与其交互的传感器和执行器,如制动系统或发动机控制的ECU。因此,一个连接数千个组件的汽车网络线束将包含1500多根电线,总长度约5000米,重量超过68公斤。随着ECU、传感器和相关电子设备数量的增加,减少线束重量和复杂性已成为汽车制造商的主要目标。测试挑战即便花费大量精力、时间和金钱来确保不同电子设备之间的协同工作,也无法确保每种ECU可能出现的组合在投入生产之前接受彻底的测试。虽然涉及车辆安全性的要求很少发生变化,但ECU构建的复杂性更多地体现在消费者可选的舒适性、便利性或性能等功能上。在有些情况下,某种可选特性与功能的特定组合,“可能是第一次出现在从生产线上下线的车辆中,也是第一次经历测试。”采埃孚汽车系统产品规划副总裁Andy Whydell如是说。有些汽车制造商拥有数十万种车型的构建组合。他说,为了针对某些车型中可能出现的各种电子设备组合进行现场测试,“可能需要使用十亿种不同的测试配置。”然而Whydell表示,在车辆研发过程中,原始设备制造商可以使用“面包板”对多个ECU构建组合进行实验室测试,无须针对每种情况单独造一辆车。即使是经过严密测试的流行模型,售后也会定期发现错误,并发布软件补丁。有些补丁本身还需要补丁,通用汽车就曾出现过这种情况:畅销款2019年雪佛兰的Silverado以及GMC Sierra轻型卡车和凯迪拉克CT6的召回,都是因为这个原因。Whydell指出,还有一个因素导致变体管理更具挑战性:“几乎所有ECU设计和软件都外包给供应商,原始设备制造商负责集成ECU”,他们可以根据所需的可定制功能创建统一的系统。Whydell表示,个别供应商往往对原始设备制造商如何集成ECU没有深入了解。同样,原始设备制造商对驻留在ECU中软件的了解也有限,这些软件通常都被当作“黑匣子”,能够支持信息娱乐、车身一致性控制、远程信息处理、动力传动系统或自动驾驶辅助系统等多种功能之一。2020年,时任大众汽车集团首席执行官、现任董事长的Herbert Diess发表的评论说明,由汽车制造商开发的软件几乎寥寥无几。当时他承认:“几乎没有一行软件代码来自我们。”根据大众汽车可以看出,车辆内的软件之中只有10%由内部开发,其余90%是由数十家供应商提供。据报道,在有些原始设备制造商中,这一数字可以达到50%之多。如此多的软件供应商,每一家都有自己的开发方法,他们使用了自己的操作系统和语言,这显然又增加了另一层复杂性,尤其是在执行验证和核查方面。最近Strategy Analytics和Aurora Labs对整个汽车供应链中软件开发人员进行的一项调查就突出了这一点。其中有一个问题询问了评测一个ECU中的代码变化对另一个ECU的影响难度,大约37%的人表示很难,31%表示非常困难。汽车公司及其供应商意识到,他们必须展开更多合作,才能更严格地控制数据配置管理,并防止由于ECU代码突然变更而引发意外后果。但双方都承认还有很长的路要走。加强信息安全当然,汽车制造商不仅必须确保软件能保障行驶安全,还要提供信息安全。2015年,安全研究人员远程控制了2014年生产的Jeep Cherokee,为行业敲响了警钟。如今,每个供应商和原始设备制造商都意识到网络安全乏力的威胁。据报道,通用汽车有90名工程师全职开发网络安全对策。然而,十年前,“车辆软件的设计需要保证行驶安全,而信息安全是次要的。”车辆网络安全专家、美国运输部克莱门森大学互联多式联运中心主任Mashrur Chowdhury说道。我们需要注意这一点,因为大部分软件都是十年或更早以前设计的,在当时信息安全并不是需要优先考虑的大环境下,这些软件仍在现如今的ECU中使用。此外,在过去十年中,车辆内外的通信呈爆炸式增长。据估计,2008年,豪华汽车的ECU之间数据信号交换只有2500个。沃尔沃的Antinyan表示,如今沃尔沃汽车中的120个ECU连接了7000多个外部信号,而汽车内部交换的信号数量要高出两个数量级。咨询公司麦肯锡估计,这些信息每小时的数据量可轻松超过25GB。Chowdhury表示,随着过去十年间移动应用和基于云的服务爆炸式增长,车辆本身内置的电子设备越来越复杂,“潜在的攻击面几乎每天都在增加。”各国政府也注意到了这一点,并推出了多项汽车制造商需要贯彻的网络安全义务。其中包括拥有经过认证的网络安全管理系统(Cyber Security Management System,CSMS),该系统要求每个制造商“展示基于风险的管理框架,用于发现、分析和防范相关威胁、漏洞以及网络攻击。”此外,原始设备制造商还需要通过软件更新管理系统,确保安全地管理无线软件更新。他们鼓励汽车制造商“维护每台车辆的ECU、每辆组装车辆中使用的操作软件组件的数据库,以及整个车辆生命周期内应用的版本更新历史日志。”这份软件清单可以帮助汽车制造商快速确定哪些ECU和特定车辆会受到某个网络漏洞的影响。软机械师在汽车内的电子线路不出问题的情况下,相信大多数司机并不会关注到它。不过,随着过去十年间电子线路的增加,驾驶员也会经常关注车辆的电子设备。根据金融咨询公司Stout Risius Ross编制的《2020年汽车缺陷和召回报告》显示,2019年是创纪录的一年,因电子元件缺陷而被召回的车辆高达1500万辆。其中一半的召回都涉及软件的缺陷,这个比例创下了自2009年以来的新高。另外,近30%的缺陷与软件集成有关,也就是软件与车辆中其他电子组件或系统的接口引发了故障。三菱汽车曾经召回了60000辆SUV,原因是其液压单元ECU中的软件错误干扰了多个安全系统。
最后,超过50%的缺陷都有一个特征:虽然不是由软件缺陷引起的故障,但仍然可以通过软件更新进行补救。福特汽车曾召回了Fusion和Escape车辆的某些型号,原因是冷却液可能会进入发动机气缸孔,并永久损坏发动机。福特的解决方法是,重新编写车辆的动力传动系统控制软件,以减少冷却液进入发动机气缸的可能性。Stout的数据显示,在过去五年中,利用软件修复车辆硬件问题的现象在稳步上升。Stout总经理Neil Steinkamp表示:“平均召回规模一直在下降,车辆的平均年龄也在下降。制造商可以利用科技更快地发现缺陷”,尤其是一些涉及电子产品的缺陷。与软件相关的缺陷往往出现在新款车辆中,而ECU和其他电子元件的缺陷往往在车辆推出一段时间后才会出现。Stout总监Robert Levine指出,最近与车辆电子设备相关的组件缺陷有所增加,“不仅限于方便性,关键的行驶安全组件的缺陷也在增加。”例如,自要求2018年5月1日之后制造的所有车辆都必须为驾驶员提供车辆正后方3×6米的可见区域以来,美国就发生了一系列倒车摄像头召回事件。许多原始设备制造商发现,复杂的摄像头软件与其他车辆安全系统的集成非常困难。此外,其他新的车辆安全系统的运行也并非完全顺利。美国汽车协会(American Automobile Association,AAA)针对可以帮助驾驶员转方向或制动/加速的先进驾驶辅助系统进行的一项研究表明,这些系统往往会在没有任何通知的情况下停止辅助,即刻将控制权交还给驾驶员。测试表明,平均每13公里就会出现某种类型的问题,包括很难让车辆保持在车道中正常行驶,或者不要让车辆太靠近其他车辆或护栏。维修费用节节攀升许多车主只有在必须支付维修费用时,才会意识到他们的车辆越来越复杂。在具有高级安全功能的车辆发生碰撞事故后,60%的修理费均来自车辆的电子设备。AAA于2018年的一项研究表明,一块挡风玻璃的维修成本原本在210~220美元之间,但如果车辆的挡风玻璃上安装了摄像头,用于自动紧急制动、自适应巡航控制和车道偏离警告系统等,那么即便是轻微的损坏,维修费用也 会攀升至1650美元。校准这些系统的费用(通常是手动完成的)是高成本驱动的因素。由于传感器的微小错误校准也会大大降低这些安全功能的有效性,“因此,供应商开发了自动校准系统,可以消除或简化手动操作,”ZF的Whydell说道。这有助于提高校准精度,同时还可以降低维修成本。
Whydell还表示,供应商和原始设备制造商正在研究如何将车辆周围的传感器安装在不太可能在事故中损坏的位置上。AAA报告称,仅修理位于后保险杠的超声波系统(可提供停车辅助功能)这一项的成本就高达1300美元。如果用于盲点监测和交叉路口警报的后方雷达传感器也损坏,则追尾事件可能会产生2050美元的额外费用。随着电子产品维修成本的攀升,保险公司判定报废的成本可能更低。理赔管理公司Mitchell International最近的一份报告称:受汽车电子设备维修成本的影响,报废车辆的平均车龄一直在下降。报告指出,随着“车辆复杂性的增加”,预计这一趋势将持续下去。
EV AI=难以管理的复杂性如今,汽车制造商面临着一个特殊的难题。根据J.D. Power市场信息公司对美国车辆最新可靠性的研究显示,内燃机车辆的可靠性达到了32年以来最高,而且也更加舒适、更安全且污染更少。然而,为了应对政府以及公众对全球气候变化日益增长的担忧,制造商不得不放弃精心制作的内燃机车辆,转向将来能够实现自动驾驶的电动汽车(Electric Vehicle,EV)。令汽车制造商的处境雪上加霜的是,为了开发电动汽车,他们必须跨越软件的鸿沟。ZF的Whydell观察到,在车辆中,使用当今最新架构的软件管理难度非常大。对此,不少人也非常赞同这种看法。
咨询公司麦肯锡称,车辆软件的复杂性正在迅速超越开发以及维护的能力。过去十年中,软件的复杂性增加了四倍,但供应商和原始设备制造商的软件生产力却几乎没有提高。此外,他们还认为,在未来十年内,软件的复杂性可能还会再增加三倍。汽车制造商和供应商都在努力缩小“开发能力与生产能力之间的鸿沟”。部分问题在于如何支持稳步增长的代码库。一位汽车公司负责人向麦肯锡公司分享道,按照目前的速度,如果开发与生产的差距不缩小,现有代码库的软件维护将耗尽他们公司所有的软件研发资源。事实上,Whydell观察到,“在有些情况下,汽车行业不再将总代码行数视为复杂性的衡量标准,而是以原始设备制造商或供应商为满足当前及未来的需求而雇用的软件开发者数量。”如果真如大众汽车董事长Herbert Dies所说,“未来汽车创新的90%皆来自软件”,那么缩小开发能力与生产能力之间的差距是尤为艰巨的任务。而拥有必要的软件专业知识将是成功的关键。麦肯锡公司表示,“虽然为了赢得软件上的优势,各个汽车企业必须在许多层面上都有优异的表现,但吸引和留住顶尖人才可能是最关键的因素。”Whydell承认,聘请到合适且优秀的软件专业人才是“让我夜不能寐”的原因之一。这同时也是其他供应商以及原始设备制造商的高管寝食难安的原因之一。原始设备制造商认识到,根据特斯拉CEO Elon Musk提出的“软件定义汽车”的概念(以特斯拉为代表),他们目前的做法——将必要的软件和电子设备外包给供应商,然后将它们集成到内燃机车辆的做法,并不适用于电动汽车。WardsAuto网站引用了一级汽车供应商Continental AG研究及高级工程主管Tamara Snow的一句话:内燃机车辆中使用的分散式ECU架构的功能和复杂性“已达到极限”,尤其是考虑到完全自动驾驶功能需要大约5亿行或更多的代码。我们需要新的车辆软件和物理架构来管理电池组,而不是内燃机和相关的动力传动系统。这种架构仅包含少量功能强大、速度极快的计算机处理器,它们负责执行微服务驱动的代码,并通过更轻量级的线束甚至是无线的方式在更多传感器之间进行内部通信。外部沟通也将更加重要。ZF的Hartmann指出,这些新架构需要由原始设备制造商和供应商的软件团队来开发,而且要低成本且不断缩短开发周期,所以他们需要学习开发软件以及系统的新方法。Manfred Broy表示,最大的问题在于,高管层的软件专业知识不足以理解当下所需的转型。虽然车辆中硬件的复杂性非常明显,但Broy观察到,“更重要的是软件的复杂性(这在很大程度上取决于硬件的选择),尤其是软件的成本,原始设备制造商很难认清这一点,但这对于他们的长期发展尤为重要。”他表示,汽车行业的高管大多是“顽固派”,但是他们又手握大权。克莱门森大学国际汽车研究中心汽车工程系主任Zoran Filipi解释说:“一百多年来,原始设备制造商的精力一直都集中在完善内燃机上,车辆的其余组件都外包给供应商,最后将所有组件集成在一起。随着电子产品和软件在车辆中的普及,他们也采用了相同的方法,即将它们视为集成到车辆中的另一个‘黑匣子’。而如今,原始设备制造商及其供应商需要将工作重心从硬件至上转变为软件至上,同时在未来十年内仍然需要使用现有的方法支持和改进内燃机汽车。”奥迪AG前研发主管兼董事会成员Peter Mertens最近在接受CleanTechnica采访时表示,“德国汽车工业赋予了他们最关键的新产品,这将决定他们的公司能否在现有结构中生存下去,这些公司成功的关键在于软件,但各位高管在这方面的经验和知识却非常薄弱。”Mertens表示:“我们需要一种方法来淘汰不能胜任的高管,譬如可以让大众、奥迪、保时捷、宝马和戴姆勒针对所有高层管理人员进行一次评估,并要求他们编写一个小游戏或一个简单但有效的病毒。如果他们做不到,就立即解雇他们,因为他们不适合这份工作。看看这样下来还能剩下多少人?”Mertens说道。毕竟,历史是血与泪的教训。本文出自《新程序员002:新数据库时代