汽车操作系统典型可分为两大类,一类是针对异构高性能运算芯片和新型E/E架构带来的整车系统,另一类是针对中控车机的。这里有非常多的基础概念需要理清。
什么是操作系统,狭义的操作系统包含原创的内核。目前主流原创内核不外乎Linux、微内核和Windows三种。实际上我们熟悉的Linux只是内核而不能称得上是操作系统,Ubuntu才是操作系统。内核它没有统一的操作接口,都需要自己开发。绝大部分程序员都不关心内核,操作系统用系统调用,system call来为程序员服务,当然,直接使用系统调用是非常繁琐的,因此通常会在这之上提供一层封装。如果是Windows,这个封装就是Windows API,Linux只是一个开源的内核,如果一定要找一个类似的东西话那就是libc,也就是C标准库,这里同样包括了对系统调用的封装以及一些库函数,但libc不包含创建带有图形界面应用程序的功能。
目前座舱的操作系统可以分为三大类:一是微内核的QNX;另一类是基于Linux的,包括像特斯拉这样的Linux直改,还有车规级Linux的AGL,还有GENIVI联盟(更名为COVESA);再一大类是安卓,包括了两种,一种是国内的安卓直接改,还有一类是谷歌特别为车载推出的AAOS,注意,这可不是Android Auto那种App。为什么要把安卓独立在Linux之外,下文会说。华为的鸿蒙也勉强可以算是Linux直改,但它不能算严格的微内核,也不是Linux的宏内核,叫Split-Kernel比较合适,拿了宏内核的组件构成了微内核。
2021-2026年新车座舱操作系统预测
来源:佐思汽研
操作系统,应用软件设计,网络协议栈等等,都体现了分层思想。分层中,每个层次负责不同的功能。一般来讲,下层为上层提供服务,上层不要知道下层的具体实现细节,只需使用下层提供的服务。而层与层之间联系的桥梁就是“API接口”。OS调用硬件提供的API,软件调用OS提供的API,而用户调用软件提供的API。
图片来源:互联网
典型的嵌入式系统结构如上图,实际硬件平台还可以再分为两部分,一部分是板级支持包即BSP,一部分是硬件本身。BSP是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板,类似于电脑的BIOS。BSP就是操作系统与硬件间的接口。后来微软发现,程序设计直接与硬件通信,是造成系统不稳定的主要原因。在得出这个结论的基础上,微软公司在Windows NT上取消了对硬件的直接访问,首先提出了硬件抽象层 (Hardware AbstractionLayer ,简称HAL) 的概念,硬件抽象层就是:“将硬件差别与操作系统其他层相隔离的一薄层软件,它是通过采用使多种不同硬件在操作系统的其他部分看来是同一种虚拟机的做法来实现的。这种 HAL设计思路被一些嵌入式操作系统参考,其系统内核被分成两层,上层称为“内核(Kernel)”,底层则称为 “硬件抽象层 ”。
促使HAL出现的另一个原因是芯片的指令集系统越来越复杂,且迭代速度很快。不将硬件隔离,软件工作复用率太低。
图片来源:互联网
引入HAL之后操作系统将会使用相对更为统一的HAL接口来实现对硬件的操作,而不是直接使用BSP库。当然,HAL库的实现是基于BSP库的,只是将其进一步封装,形成统一的标准。顺序依次是hardware –> board support package –> hardware abstract layer –>driver –> operating system –> application,当然嵌入式系统中操作系统并不是必须的,并且在操作系统和应用程序之间可以再有一层中间件Middleware层,用于提供更多的系统功能,这个中间件Middleware层也被称作SDK。
图片来源:互联网
上图是安卓的架构,Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。传统的Linux 系统则把对硬件的支持和管理全部放在内核空间中,即把对硬件的全部支持都放在硬件驱动模块当中。
Android 在用户空间中新建一个HAL层来支持硬件设备的主要原因还是因为Android 使用的开源协议是 Apache License,这个协议比较宽松,其允许开发者获取并修改了源码之后,不用把源码公开出来。而 Linux 使用的开源协议 GPL,它的要求限制就比较多,要求开发者添加或修改了源码之后,必须把添加或修改后的代码公开出来。HAL层分开保护了开发厂家的利益,但脱离了Linux的开源,安卓是开放的,但不是开源的,这是为什么把安卓从Linux分出去的主要原因。
图片来源:互联网
上图为QNX的架构,与安卓不同的是QNX没有独立的HAL层,QNX还是采用BSP的方式。
图片来源:互联网
上面为三种内核架构的对比,微内核操作系统使用进程来隔离系统组件,这些组件之间的通信使用了消息传递方式来实现一个组件对另一个组件的调用-这实际上是进行了一次RPC(远程过程调用协议)调用。但这种类似RPC的方式是通过进程间通信(IPC)机制实现的,其性能一般低于传统操作系统的系统调用的性能。这个IPC有一点点HAL的意味。
因为QNX是微内核,这就意味着为其兼容性比较差,开放性比较差,当然,换来的是实时性很好,安全性极高。安卓的开放性吸引了无数开发者,而QNX凡事都需要黑莓自己去做,这就是BSP需要为硬件定制,而基于QNX的应用软件自然就很少人开放。黑莓一家的开发能力有限。这也是鸿蒙为什么要兼容安卓的原因,不兼容根本无法推广。
随着座舱联网功能的拓展,QNX显得不合时宜。
Genivi在2021年10月改名为COVESA即Connected Vehicle Systems Alliance。其顶级成员是宝马和博世,核心会员是电装、现代摩比斯、LG、瑞萨、风河、Mentor汽车和Geotab。其他重要成员还有奔驰、本田、现代汽车、ARM、瑞萨、英伟达、NXP。宝马、奔驰几乎全线使用GENIVI的Linux平台,现代的Genesis也是如此,其他厂家较少见到有用Genivi。
AGL即Automotive Grade Linux,车规级Linux。成立于2016年1月,但是第一版AGL发布是在2014年的6月30日,实际上就是Tizen的修改版,Tizen源自三星,Tizen是三星电子开发的一款基于Linux核心的开放源代码移动操作系统,可适用设备包括智能手机、平板电脑、智能手表、上网本、车载信息娱乐设备(IVI)和智能电视。该项目最初由Linux基金会以及LiMo基金会合力推出,目的在于取代MeeGo与LiMo平台。在Linux基金会中,由技术指导小组(TSG)管理。目前三星是唯一推出使用 Tizen 的设备的业者,也是 Tizen 的最大支持者。至 2017 年结束,Tizen 是世界第二大智能手表操作系统,仅次于苹果 watchOS,比基于 Android 的 Wear OS 还要多。2011年9月,三星和英特尔与Linux基金会宣布致力在2012年开发出Tizen,2012年1月1日,LiMo基金会更名为Tizen协会。大概在2015年,Tizen就基本没人支持了,但是AGL开始慢慢起来。这也算是失之东隅,收之桑榆。
AGL的顶级白金会员有亚马逊、马自达、电装、瑞萨、铃木、丰田、松下。白银会员则有爱信精机、奔驰、福特、高通、上汽、大众。其他重要会员还有阿尔派、ARM、博世、BOSE、中国移动、大陆、德赛西威、富士通、本田、现代、三星哈曼、HERE、日立、GreenHills、英特尔、JVC建伍、李尔、LG、马瑞利、Mentor、Microchip、三菱、NEC、东软、日本精机、NXP、英伟达、三星、先锋、索尼、东芝、Telechips、德州仪器。
目前采用AGL的车型主要有新一代奥迪MIB3TOP、丰田凯美瑞、马自达3和斯巴鲁傲虎及力狮。还有一款奔驰的MPV。大众在2019年4月加入AGL,大众未来也极有可能选用AGL做车机系统。
AGL的主要优势之一是它的统一代码库(UCB),这是一个新的Linux发行版,它基于AGL和另外两个汽车开源项目:Tizen和GENIVI Alliance。UCB是第二代Linux汽车系统。它从底层开始开发,一直到特定的汽车应用软件。完成了操作系统大约70%的工作。
目前AGL应用都在IVI(In-VehicleInfotainment)上,AGL正努力开拓在仪表和ADAS领域,不过这两个领域对实时性要求较高,阻力很大。
在很多厂家都使用手机版安卓之时,谷歌也分别推出了Android Auto和Android Automotive OS,安卓Auto是一个超级App,不是一个操作系统,但Android Automotive OS就是一个操作系统,简称AAOS。Android 官网上, Android Auto这个分类,是和 Android TV、WebOS by Google 并列。而在 Android 官网开发者页面处,我们能发现更多谷歌意图独立车载系统的想法。在Google官方的「Android developer guide」(安卓开发者指南)中,Android Automotive OS和Chrome OS也是以「OS(operationsystem,操作系统)」命名的。AAOS确实是为了解决Android本身在车机方面的一些问题。Automotive OS采用了与正代安卓差异较大的显示和交互逻辑,「区块」成为 Automotive OS 最基本的设计语言。在操作准确度要求非常高的车内环境里面,触屏相对孱弱的反馈被谷歌以硕大的图标设计和菜单划分得以补偿。
早在2016年,Google官方统计,安卓的碎片化版本已经达到了6000多个不同的版本,而且随着时间的推移,安卓的版本碎片化也越来越严重。早年,在手机领域,同等条件下,相比安卓系统而言,苹果的系统会更加的流畅一点,也是安卓碎片化最被诟病的槽点。这其中有两个主要原因。安卓平台最大的缺点就是碎片化严重,设备繁多,品牌众多,版本各异,分辨率不统一等,任何一个成功的智能操作系统都是由庞大的软件资源支撑起来,这要求系统和硬件有一定的一致性,这才能确保软件的兼容性,以确保软件和设备完全兼容。而由于Android完全免费以及完全开源的性质,最终导致Android设备的软件兼容性变差。一言以概之,因为,内核选择更小,可以由车企自由定制,并管理版本。超98%的应用存在开发隐患、修复管理滞后、漏洞监测困难等安全风险。92%安卓应用存在过度获取隐私权限。作为一款车载,很多情况下,是不需要考虑兼容Android的所有应用,也不会允许别的第三方软件加入进来,这相对于自身也是一种保护。
安卓是有大量的应用,但是不同厂商的定制系统,很可能导致未经过A厂商设备适配的B厂商安卓应用无法安装、使用出错、安全问题。同时,Android国内版本的大量应用,在不同的应用市场无法做到严格审核,安全存隐患。
最终于2017年3月,谷歌正式宣布AAOS,第一个采用AAOS的是沃尔沃旗下的电动车Polestar。
- 2022 GMC Hummer EV
- 2022 GMC Sierra
- 2022 GMC Yukon
- 2022 Chevrolet Tahoe
- 2022 Chevrolet Suburban
- 2022 Chevrolet Silverado
- 2023 Cadillac Lyriq
- 2022 Renault Mégane E-Tech Electric
- 2021 Volvo XC40 P8
- 2021 Volvo XC40 Recharge
- 2022 Volvo C40 Recharge
- 2022 Volvo XC60
- 2022 Volvo S90
- 2022 Volvo V90
- 2022 Volvo V90 Cross Country
- 2021 Lucid Air
上面为确定使用AAOS的车型,还未确定车型但确定使用的还有2023年的PSA与FCA,包括Dodge Durango 和Chrysler Pacifica,2023年的福特和林肯,2022年的本田。
目前AAOS主要在英特尔A3900系列和高通SA8150/8155上运行,谷歌一开始就是和英特尔合作,A3900系列的AAOS的支持度比高通还高。
AAOS的架构
图片来源:互联网
图片来源:互联网
典型的AAOS,第一辆采用AAOS的车沃尔沃旗下的Polestar 2,由安波福供应车机和软件系统,屏幕尺寸为11.15英寸,分辨率1536*1152,这个分辨率相当高,AAOS也需要高分辨率,硬件是英特尔的A3950,eMMC高达128GB。AAOS的基本要求比较高,至少4GiB的RAM,32GB的eMMC。
安卓系统最难的是显示图像启动时间慢,特别是倒车影像或360环视,这是业者需要特别下功夫的地方。AAOS特别提供了EVS模块,专门应对外接摄像头,保证图像2秒内启动成像。
图片来源:互联网
AAOS自然离不开谷歌的服务,如谷歌助手,谷歌地图等,所有这些服务都是要收费的,估计是和车厂有分成协议,要不然AAOS根本无法推广,谷歌没有动力,车厂也没有动力。
图片来源:互联网
谷歌的野心当然不只是车机,谷歌是要覆盖车内的全部应用,包括自动驾驶和仪表等等,早在2016年就开发了Fuchsia,这是一个基于Zircon的微内核操作系统,可以用于车内要求安全等级高的领域,如仪表和自动驾驶。
谷歌不仅要占有你的手机,还要占有你的汽车,当然,苹果也不会闲着。