【CSDN 编者按】智能汽车正在被软件定义,而以软件为中心的新架构也对下一代汽车的基础软件,包括其核心操作系统,提出了新的要求。未来整车厂的核心能力将发生怎样的变化?本文将从未来汽车的新定义出发,探索下一代智能汽车的操作系统发展趋势。
作者 | Michael Yuan
出品 | 《新程序员》
今天一辆普通汽车上有1.5亿行代码,是波音787飞机代码量的10倍。汽车已经成为软件工程的一个重要方向。由于汽车对安全性、可靠性、实时性,和传感器带宽、AI算力的高要求,及其复杂的软件供应链生态,智能汽车会催生下一代计算操作系统。从基础软件过去30年的发展历程来看,我们认为汽车软件生态一定会开源,会给程序员带来更广阔的机会。
软件定义的汽车
与20年前的数据中心类似,传统汽车是经典的“硬件隔离软件”架构。每一辆量产车有50+软件供应商,要让这么多软件模块安全可靠地在同一辆车上运行,传统的方法是让每一个供应商把软件封装在自己的计算机硬件里面。这些供应商封装提供的计算机叫作ECU。每个ECU里面有一套完整的芯片、存储、操作系统与应用软件,ECU之间只通过简单的实时网络传输信息,从而达成隔离不同供应商软件的目的。今天每一辆汽车有100~150个ECU,其软件的复杂性已经很难管理。
因而,以Tesla为代表的“造车新势力”开始采用以软件为中心的架构,新一代智能汽车也不再有100+ECU,而是拥有一台到几台通用计算机。供应商的软件作为模块运行在这些计算机上,隔离不同供应商模块的不再是硬件与网络,而是软件容器,这就是“软件定义的汽车”。而以软件为中心的新架构对下一代汽车的基础软件,包括其核心操作系统,提出了新的要求。
智能汽车操作系统之争
目前,智能汽车正在从ECU向“软件定义”过渡,车企不能一步到位,走到每辆车只有一台超级计算机的架构,只能过渡到每辆车3~4个“域计算机”(也称“域控制器”),其中有两个很重要的域:ADAS域与座舱域。
这两个域的操作系统并不相同。在座舱域中,车企一般使用的是Android系统,或者是剪裁版的Linux,以保证大量应用程序的兼容性。座舱里的Linux与Android系统使用开源的底层操作系统,有巨大的开发者社区。其上层的应用App可以是开源或闭源的。
在ADAS域中,车企一般使用商业的实时操作系统,如QNX与VxWorks等。ADAS的底层操作系统一般不开源,而应用虽然有开源的,如Autoware与百度的Apollo,但是绝大部分算法、传感器集成以及推理应用都是不开源的。
当然,这两个域的操作系统也有重叠的地方。例如,座舱域中显示驾驶数据的屏幕(车速、自动驾驶信息)一般是用QNX,以保证实时的数据读写。在座舱内,对Android、Linux与QNX的需求还产生了专门的Hypervisor虚拟化解决方案,如OpenSynergy,能让几个操作系统用虚拟化的方式运行在同一个硬件计算机上。
因而,未来“软件定义的汽车”有很大几率会从几个域进一步进化为一个超级计算机。这个计算机需要一整套操作系统与中间件服务,去为座舱、自动驾驶等各种车内应用服务。想要实现这个操作系统,主要有以下两条路径。
我们注意到,未来汽车操作系统的明显趋势是开源的。这意味着开发者试验与进入汽车生态的门槛会越来越低。
在智能汽车火热的中国市场中,有技术实力的汽车软件公司也都在向自研操作系统努力。它们都是从基于Linux的座舱系统(如前述的AGL)往实时车控操作系统演进。其中比较有代表性的是以下几家。
加之前面提到的seL4基金会成员地平线、蔚来、理想、Second State,中国厂商目前在汽车操作系统的两个主要方向都有布局,正走在世界智能汽车操作系统领域的前列。
软件生态与容器
放眼智能汽车的生态圈,今天的座舱与ADAS两个域计算机都是以整体解决方案的方式售卖给整车厂。对于整车厂来说,这两个重要域计算机是黑盒。域计算机的供应商,而不是整车厂,正在掌控着这两个域的相关软硬件生态。例如,ADAS激光雷达的选型、座舱语音识别的算法选择都是由域计算机供应商决定的。这与今天的汽车生态格格不入,也不是整车厂能够长期接受的方案。而未来,如果软件定义的汽车发展到每辆车只有一台超级计算机,对这台计算机的操作系统与软件生态的控制权,更是整车厂不能放弃的。
这里的挑战是,整车厂或者域供应商,如何在一个开放的计算平台上安全高效地集成多个下游供应商与开发者写的软件?其实,这个问题在“软件定义的数据中心”已经有了很好的解决方向:使用软件容器隔离各个供应商写的模块。
云原生数据中心用Docker这类软件容器实现隔离。汽车厂商也一直在试图使用Docker这样的软件容器。
新一代的轻量级软件沙盒/容器技术,如支持多种编程语言与多种操作系统/硬件的WebAssembly Runtime,是在汽车这种边缘设备上实现软件隔离的很好选择。WebAssembly直接从操作系统的线程启动,并不需要模拟一个自己的操作系统环境,在启动时间上可以比Docker这类解决方案快100倍以上。
WebAssembly Runtime抽象了底层的硬件与操作系统,开发者就能用现代的编程语言与框架,如Rust,写出高性能、可移植的汽车应用。
开发者的机会
软件定义的数据中心产生了“云原生”的使用场景,赋能了大量开发者。软件定义的汽车也会让第三方开发者更容易进入汽车。对于广大开发者来说,软件定义的汽车的意义在于把汽车变成一个开放的计算平台。标准化的硬件、开源的操作系统、开源的容器与运行沙盒,都会大大降低开发者参与汽车应用开发的门槛。
未来整车厂的核心能力将不再是引擎与变速箱,也不再是整合几个一级供应商的部件,而是像今天的公有云或者手机厂一样,整合软件开发者的生态,为用户提供最好的软件体验。
新程序员们,软件定义的汽车时代已经来临了,你们准备好了吗?
本文出自《新程序员002:新数据库时代&软件定义汽车》,由60余位专家倾力创作。随书附赠《2021数据库全景图V1.0》和《2021汽车技术与产业生态全景图V1.0》,同时内含《2021年度数据库发展研究报告》和《2021年度软件定义汽车研究报告》,图文与视频多媒体呈现。
数据库作为核心技术三大件之一,我们从新型数据库普及、数据库开源趋势、数字化转型实现,以及资本助力产业等角度,邀请到27位数据库行业专家,共著非关系型数据库、文档型数据库、分布式数据库、混合式数据库、时序数据库、图数据库等的理论技术及行业实践,让数据库开发者快速提升。
智能驾驶作为人工智能的顶上皇冠,我们以技术和商业融合创新为主线,邀请到23位汽车领域专家,从开源系统、车路协同、数字孪生等不同视角分析了云计算、人工智能、物联网等技术给汽车行业带来的影响和机会,让汽车从业者深入了解产业动态。
本书高屋建瓴的产业分析和趋势预判适合中高端从业人员参考决策。同时,多位专家亲历的入门和实践之旅也为初学者提供了可借鉴的专业路径。
扫描下方二维码,添加小助手,即可加入《新程序员002》「读者群」,抢先一步获取杂志最新资讯,精彩内容不再错过。