三、智能座舱操作系统
3.1 概述
车载智能计算平台自下而上可大致划分为硬件平台、系统软件(硬件抽象层+OS内核+中间件)、功能软件(库组件+中间件)和应用算法软件等四个部分。狭义上的OS特指可直接搭载在硬件上的OS内核;而广义OS从下至上包括从BSP、操作系统内核、中间件及库组件等硬件和上层应用之间的所有程序。
- 硬件抽象层
硬件抽象层里包含BSP和Hypervisor。
Hypervisor 是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。
BSP(board support package)即板级支持包,也是介于主板硬件和操作系统之间的一层,主要目的是支持操作系统,使之能够更好的运行于硬件主板。
- 操作系统内核
OS内核又称为“底层OS”,提供操作系统最基本的功能,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
智能座舱作为新能源汽车的核心部分,通常需要运行多个不同的软件应用和服务,例如车辆信息娱乐系统、导航系统、车辆诊断系统、驾驶辅助系统等。这些应用和服务需要在智能座舱中使用不同的操作系统内核来管理系统资源、控制硬件设备和提供系统服务。以下是一些常见的操作系统内核的例子:
- Linux内核:Linux是一种开源的操作系统内核,广泛应用于各种嵌入式系统和移动设备中,包括新能源汽车智能座舱。Linux内核具有高度的可定制性和灵活性,可以根据座舱系统的需求进行定制和优化。例如,很多智能座舱系统使用基于Linux内核的Android Automotive操作系统,提供丰富的应用和服务支持。
- QNX内核:QNX是一种实时操作系统内核,被广泛应用于汽车领域。QNX内核具有高度的实时性和可靠性,适用于对系统响应时间和稳定性要求较高的智能座舱应用,例如车辆的安全和驾驶辅助系统。
- AUTOSAR(Automotive Open System Architecture)内核:AUTOSAR是一种开放的汽车电子系统架构,包括了一系列的软件规范和标准。AUTOSAR内核是一种用于汽车电子系统的标准化操作系统内核,可以提供统一的软件接口和服务,实现不同硬件和软件模块之间的互操作性和可替换性。许多新能源汽车厂商使用AUTOSAR内核来构建其智能座舱系统。
- Windows内核:作为一种常见的桌面操作系统,Windows内核在某些新能源汽车智能座舱中也有应用。例如,一些电动汽车厂商采用基于Windows内核的操作系统来构建其车辆信息娱乐系统,提供丰富的图形界面和多媒体功能。
- 中间件
中间件,作为底层操作系统和这些应用程序之间的桥梁,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。 具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这为开发者快速、高效、灵活地开发和集成自动驾驶软件提供了极大的便利。
因此,从系统软件的角度来说,车载操作系统主要考虑的就是BSP,Hypervisor,OS内核,以及中间件等因素。目前座舱新应用层出不穷,和手机关联度也比较高, Android是最佳选择,但考虑到安卓背后的谷歌一家独大,车厂无力掌控,日本和欧洲车厂更倾向于 Linux。中美厂家都拥抱安卓, 中国厂家尤其注重生态系统,因此几乎全部选择手机版的安卓做一些微小修改。美国厂家则多选择车机版安卓。因为谷歌的某些应用在国内无法使用,国内一般不使用完整的车机版安卓。
QNX几乎不会作为独立的智能座舱操作系统而被选用,一般可以与Android共同作为Hypervisor之上的虚拟机VM而协同工作。
3.2 Android
Android是发行版本的Linux, 系统复杂, 功能强大。Android是由Google公司和开放手机联盟基于Linux开发的操作系统。Android被称为基于Linux开发的最成功的产品之一, 应用生态最为丰富, 主要应用于移动设备,在国内智能座舱操作系统常基于Android开发。
Android的主要优点有:
1) 开源, 对中低端OS开发商具有很强吸引力;
2) 灵活, 可以根据自身需要对原生Android进行定制化改造;
3) 可移植性强, Android手机上的APP不需要经过大的修改就可以应用在车机上, 有利于国内互联网厂商切入汽车领域, 快速建立起车载软件生态。
Android的缺点主要有:
1) 安全性、稳定性差,系统漏洞带来较高风险,技术维护成本高;
2) 过度依赖于Google。
在智能座舱操作系统的选择中,虽然还没有哪一个系统的市场份额占据绝对优势,但从软件定义汽车的角度出发,以及新能源汽车的发展历程来看,智能座舱域主要考虑的是应用的生态和智能化的发展。在实践中可以看到,Android系统体现出越来越大的优势。这里面最重要的原因就是智能座舱的生态环境可以与手机等消费类电子产品的生态打通,在手机上流行的应用APP,同样可以移植到汽车的智能座舱环境中来。比如说,导航类APP,音乐类APP,视频类APP,内容类APP,可以方便地实现车机手机统一账户,统一资源等。
Android凭借国内丰富的应用生态切入汽车智能座舱系统。虽然安全性、稳定性不足,但由于车载信息娱乐系统对安全性要求相对较低, Android仍然凭借其上述优点在国内车载信息娱乐系统领域占据主流地位。尤其是各大互联网巨头、自主品牌、造车新势力纷纷基于Android进行定制化改造, 推出了自己的汽车操作系统, 如阿里Al iOS、百度小度车载OS、比亚迪Di Link、蔚来NIO OS、小鹏X martOS等。
- Android AUTO vs AAOS vs 传统Android
谷歌也分别推出了 Android Auto 和 Android Automotive OS,Android Auto 是一个超级 App,不是一个操作系统,但 Android Automotive OS 就是一个操作系统,简称 AAOS。Android 官网上, Android Auto 这个分类, 是和 Android TV、Web OS by Google 并列。而在 Android 官网开发者页面处,我们能发现更多谷歌意图独立车载系统的想法。 在 Google 官方的「Android developer guide」(安卓开发者引导) 中 , Android Automotive OS 和 Chrome OS 也 是 以 「 OS (operation system,操作系统)」命名的。AAOS 确实是为了解 决 Android 本身在车机方面的一些问题。Automotive OS 采用了 与传统安卓差异较大的显示和交互逻辑 ,「区块」成为 Automotive OS 最基本的设计语言。在操作准确度要求非常高的 车内环境里面,触屏相对孱弱的反馈被谷歌以硕大的图标设计和菜单划分得以补偿。
1. Android Auto
首先,Android Auto 不是 OS。它是集成在 Android OS 里的 feature。当通过 USB、Wi-Fi 将 Android Phone 连接到支持 Android Auto 的车机上后,Android OS 将自动加载支持 Auto 模式下的 App 并将图像投屏到车机屏幕上。
跟 CarPlay 一样,其本质上是投屏。Phone 提供计算、渲染,车机只是 Display,Display 和按键回传 Input 的事件,Phone 处理好之后将新的帧数据回传进行 Display。
2. Android automotive OS
Android automotive 是在原手机Android 的系统架构基础上替换为与车相关的模块。主要包括:
- Car App :包括OEM和第三方开发的App;
- Car 提供给汽车App特有的接口;
- Car Service :系统中与车相关的服务;
- Vehicle Network Service :汽车的网络服务;
- Vehicle HaL :汽车的硬件抽象层描述。
Android Automotive OS主界面是平均分配的四张功能卡片(Google Map地图、语音助手Google Assistant、电话和应用),随着地图的优先级降低,整体高频车载功能的优先级提高,快捷图标可以最大限度减少驾驶员会分心的情况。车辆重要的功能,如摄像头和车辆控制等放置在靠近驾驶座的左上角,方便司机触达。
3. 传统Android
国内新能源车企,一般采用自研座舱OS的模式,在传统Android版本的基础上修改出具有自身风格的智能座舱操作系统。这样做的好处毋庸讳言,类似手机OS一样,可以带来更大的用户便利性,以及更强的用户黏性。这一点与外资车企具有相当大的不同。我们从国内车企来看,蔚来,小鹏,理想均采用自研OS,基于传统Android版本进行修改。AITO问界采用华为鸿蒙车机,也类似于Android的操作界面。
- 蔚来
- 小鹏
- 理想
- 问界
那么,厂商根据标准Android版本进行定制化开发,与Android Automotive OS的区别在哪里呢?
咨询ChatGPT的回答如下:
1. 界面设计:Android Automotive OS的用户界面与传统的Android系统有很大的不同。它的界面更加简洁、易于操作,更适合在驾驶过程中使用。
2. 应用程序:Android Automotive OS的应用程序与传统的Android系统也有所不同。它的应用程序更加专注于驾驶和车辆信息,如导航、音乐等,而不是传统Android系统中的社交媒体、游戏等应用。
3. 安全性:Android Automotive OS在安全性方面比传统的Android系统更为重视。它采用了更加严格的安全措施,以确保驾驶过程中的数据和信息安全。
4. 系统架构:Android Automotive OS的系统架构与传统的Android系统也有所不同。它采用了更加模块化的设计,以便于车载设备的集成和维护。
总之,Android Automotive OS是专门为汽车设计的操作系统,相比传统的Android系统,更加注重驾驶和车辆信息的应用,同时也更加注重安全性和系统架构的优化。
目前,还很难说Android automotive OS与厂家基于Android自研修改的OS哪个能脱颖而出。但或许基于不同的市场环境和用户生态,这些智能座舱OS都还在埋头发展,零和游戏的时刻尚未到来。
3.3 Linux
这里的Linux特指非Android的Linux发行版软件,或者基于开源Linux内核所修改而来的厂商自研OS。虽然说Android也是架构在Linux 内核之上的,但由于它早已具有独立而强大的生态,因此一般单独介绍。我们通常提的基于Linux开发新的操作系统是指基于Linux Kernel进一步集成中间件、桌面环境和部分应用软件。
Linux 领域再分为三类:一类是完全独立的开发版本,如特斯拉;二是松散联盟性质的 Genivi;最后是车规级 Linux 的 AGL。
- 独立开发的Linux
这里的代表之作为Tesla。Tesla的座舱采用x86 CPU+Linux版本。对于不同的车型来说,Telsa交替采用英特尔或AMD的SOC芯片作为座舱SOC,采用自研FSD芯片作为ADAS SOC。它的软件平台基于Linux 内核所打造。
特斯拉的座舱软件平台使用的是基于Linux的自主开发操作系统,称为Tesla OS。这个操作系统是特斯拉自己开发的,基于Debian Linux,但是经过了大量的修改和自定义,以适应特斯拉车辆的特殊需求和功能。Tesla OS不仅包括车辆的座舱软件平台,还包括车辆的控制系统和网络系统等。特斯拉的座舱软件平台是由一组定制的应用程序组成的,包括导航、娱乐、通信、驾驶辅助和车辆设置等。这些应用程序都是基于Tesla OS开发的,可以通过车载屏幕、语音控制和手机应用程序等方式进行访问和操作。
Tesla OS采用Linux 4.4开源操作系统, 支持PyTorch的深度学习编程框架, 基于Kafka开源流实时数据处理平台, 可支持信息娱乐系统(IVI) 和驾驶辅助系统(ADAS) 等。特斯拉选择Linux一方面由于Linux开源自由的优点, 避免受制于操作系统厂商;另一方面则发挥其内核紧凑高效、可以充分发挥硬件性能的优点,满足了特斯拉对汽车性能的要求。
- Genivi
GENIVI是一个开源的汽车软件联盟,致力于开发和推广开放标准和技术,以支持汽车电子系统的开发和集成。该联盟成立于2009年,由一些主要的汽车制造商、供应商和软件开发公司组成,包括宝马、戴姆勒、通用汽车、飞利浦、英特尔、纳芙特、Wind River、Harman和Bosch等。GENIVI的目标是创建一个基于开放标准的汽车软件平台,以促进汽车电子系统的发展和创新。
GENIVI的软件平台基于开放标准的Linux操作系统,包括许多开源软件组件和工具,如QT、GStreamer、DBus、WebKit、BlueZ、Systemd等。GENIVI的软件平台提供了许多功能,如车载娱乐、导航、通信、驾驶辅助、车辆诊断和远程服务等。该平台还提供了一个开发框架,使开发人员可以快速开发和部署汽车应用程序和服务。
许多汽车制造商和供应商正在使用GENIVI的软件平台,以开发其汽车电子系统。一些使用GENIVI的汽车制造商包括宝马、戴姆勒、通用汽车、PSA、雷诺等。同时,一些汽车供应商和软件开发公司也在使用GENIVI的软件平台,如飞利浦、英特尔、纳芙特、Wind River、Harman、Bosch等。
- AGL
AGL 即 Automotive Grade Linux,车规级 Linux。成立于 2016 年 1 月,但是第一版 AGL 发布是在 2014 年的 6 月 30 日,实际 上就是 Tizen 的修改版,Tizen 源自三星,Tizen 是三星电子开发 的一款基于 Linux 核心的开放源代码移动操作系统,可适用设备 包括智能手机、平板电脑、智能手表、上网本、车载消息娱乐 设备(IVI)和智能电视。该项目最初由 Linux 基金会以及 LiMo 基金会合力推出,目的在于取代 MeeGo 与 LiMo 平台。在 Linux 基金会中,由技术指导小组(TSG)管理。
AGL 的顶级白金会员有亚马逊、马自达、电装、瑞萨、铃木、丰田、松下。白银会员则有爱信精机、奔驰、福特、高通、 上汽、大众。其他重要会员还有阿尔派、ARM、博世、BOSE、 中国移动、大陆、德赛西威、富士通、本田、现代、三星哈曼、 HERE、日立、GreenHills、英特尔、JVC 建伍、李尔、LG、马瑞 利、Mentor、Microchip、三菱、NEC、东软、日本精机、NXP、 英伟达、三星、先锋、索尼、东芝、Telechips、德州仪器。 目前采用 AGL 的车型主要有新一代奥迪 MIB3TOP、丰田凯美瑞、马自达 3 和斯巴鲁傲虎及力狮。还有一款奔驰的 MPV。 大众在 2019 年 4 月加入 AGL。
AGL 的主要优势之一是它的统一代码库(UCB),这是一个 新的 Linux 发行版,它基于 AGL 和另外两个汽车开源项目:Tizen 和 GENIVI Alliance。UCB 是第二代 Linux 汽车系统。它从底层开 始开发,一直到特定的汽车应用软件。完成了操作系统大约 70% 的工作。
目前 AGL 应用都在 IVI(In-Vehilcs Infotainment)上,AGL 正 努力开拓在仪表和 ADAS 领域,不过这两个领域对实时性要求较高,阻力很大。
- YOCTO
Yocto是一个开源的嵌入式Linux发行版,它提供了一个开发框架,可以帮助开发人员快速构建定制的Linux系统。Yocto的目标是使嵌入式Linux开发更加简单、快速和可靠,使开发人员能够轻松地创建定制的Linux发行版,以满足特定的嵌入式设备需求。
Yocto项目包括一个工具集,可以用于构建和管理嵌入式Linux系统,包括构建工具链、交叉编译器、调试器、库、应用程序和文件系统等。Yocto还提供了一个强大的软件包管理系统,可以让开发人员轻松地添加、删除和更新软件包。
许多汽车厂商目前仍在使用Yocto,特别是在车载娱乐系统和智能座舱软件的开发中。Yocto提供了一个灵活的开发框架,使开发人员能够快速构建和定制Linux系统,以满足特定的汽车应用需求。同时,Yocto还提供了丰富的软件包和工具,使开发人员能够快速开发和部署嵌入式应用程序。
使用Yocto的汽车厂商有:通用,丰田,福特,雷克萨斯,捷豹路虎等。
根据以上信息可以看到,很多汽车厂商都曾经使用了不止一个Linux发行版本来作为自己旗下车型的智能座舱软件平台。这说明在Linux系统在传统汽车企业中的地位。
3.3 QNX
QNX是目前车载软件中使用得最多的操作系统。
Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIX(Quick UNIX)的系统,直到AT&T发律师函过来才把名字改成QNX。从QNX的最初命名可以看出,QNX是一种类UNIX的操作系统,其遵守POSIX规范,也就是说在Linux(也遵守POSIX规范)上编写的应用程序可以不作修改重新编译后可以直接在QNX上运行。
2004年,音响设备制造商 Harman 国际工业公司收购了QNX。2010年,黑莓手机(BlackBerry)制造商RIM宣布收购哈曼国际工业集团旗下的QNX软件公司。
在汽车领域,QNX早已是最大的操作系统供应商。据不完全资料显示,QNX在车用市场占有率达到75%,目前全球有超过230种车型使用QNX系统,包括哈曼贝克、德尔福、大陆、通用电装、爱信等知名汽车电子平台都是在QNX系统上搭建的。几乎全球所有的主要汽车品牌包括讴歌、阿尔法-罗密欧、奥迪、宝马、别克、凯迪拉克、雪弗兰、克莱斯勒、戴姆勒、道奇、菲亚特、福特、通用汽车、本田、悍马、现代、英菲尼迪、捷豹、吉普、蓝旗亚、马自达、马赛地、迷你宝马、三菱、尼桑、欧宝、庞迪克、保时捷、萨博、土星、双龙、丰田和大众汽车等目前都采用了基于QNX技术的系统。
QNX的特点:
QNX是一个微内核,嵌入式,非开源,安全实时的操作系统。它的软件架构分层如图所示:
从上图可以看到,在硬件层之上,QNX提供了板级支持包BSP,RTOS微内核,软件中间件,以及支撑应用的增强服务层等。
- 微内核
QNX是典型的微内核结构操作系统, 有一个非常小的微内核Neutrino 约为12K。内核提供了中断处理,定时器处理,线程的建立与调度等任务。另外有一个进程process manager来负责进程的建立和地址空间管理的功能, 与内核运行在内核空间。其他功能模块运行在用户空间。QNX对所有的进程均提供了内存保护, 包括文件系统, 资源管理器, 应用程序等。
QNX是一个典型的RTOS系统,其内核支持实时抢占式调度。
QNX 使用基于优先级的虚拟 CPU 共享模式,每个虚拟 CPU 拥有自己的优先级和时间任务安排序列(scheduling),确保高安全优先级 OS 能够从低优先级 OS 那里抢占更多的物理 CPU 资源。虚拟 CPU 拥有估计资源预算能力,进而在物理 CPU 上实现自适应分区。能够最大化利用硬件资源。
- 半虚拟化
QNX Hypervisor采用半虚拟化的方式来支持硬件设备的虚拟化操作。在一个双内核虚拟机架构体系中,VM2为Android 虚拟机,VM1 为QNX Host 虚拟机, Hypervisor为 QNX提供的Hypervisor。对于硬件资源的虚拟化,Android VM访问硬件资源可以有2种方式:
1. Front-Back End 服务方式
为避免全虚拟化的性能问题,可以采用 GuestOS 与 Hypervisor 协作的半虚拟化技术。这种技术一般应用于 IO 设备虚拟化, 采用前后端的方式来实现 。在 Guest OS (如 Android VM2) 中实现前端驱动,在 Hypervisor 或 Host OS (如QNX Host VM1) 中实现后端驱动,前后端一般按照 VirtIO 标准来实现,后端驱动作为硬件的实际访问方。
2. Pass-through 直接访问方式
Hypervisor 支持将硬件资源直接分配给其上虚拟机中 VM2 使用,无需通过 Hypervisor 进行地址和指令翻译。例如 : 串口资源、USB 资源等接口比较丰富的资源可以通过 Pass-through 直接分配给某虚拟机使用。设备控制器一般都是以 MMIO 方式来访问的,所以只需要将控制器地址区域映射到 VM 就 可实现设备控制器的分配,同时还需要分配一个设备硬件中断对应的虚拟中断到该 VM,直接透传的方式 就是 VM 独占访问该硬件,所以在性能上是最好的。
- 功能安全
QNX已经获得了ASIL-D的认证。QNX的安全性和可靠性使其成为满足汽车电子系统安全标准的理想选择。QNX的ASIL-D认证证明了其满足最高级别的汽车安全标准,可以在高度安全性和可靠性的环境中运行。QNX的ASIL-D认证包括QNX Neutrino实时操作系统、QNX Momentics开发工具和QNX Hypervisor虚拟化平台等产品。QNX的ASIL-D认证是基于国际标准ISO 26262开展的,该标准是用于开发汽车电子系统的安全标准。
- 智能座舱的应用案例
在国内新能源车企的智能座舱软件平台中,由于普遍采用了高通的SOC作为座舱芯片,因此基本会采用QNX+Android双虚拟机的方式。其中一个典型的应用就是QNX实现仪表盘,Android实现中控娱乐屏应用。
底层是采用QNX的hypervisor技术,实现硬件资源的虚拟化。
上层分为2个虚拟机VM。其一是QNX Host,它主要实现仪表盘的图形生成,渲染等任务。根据上述半虚拟化的实现,由QNX实际控制SOC芯片中的GPU和DPU等硬件资源。
由于QNX具有实时性和安全性的特点,它适合为仪表盘功能提供应用服务。
第二个虚拟机是Android VM。由于Android具有良好的生态环境和丰富的应用资源,在中控娱乐屏的使用上具有较大的优势,因此非常适合用于多元化的娱乐域应用场景需求。