智能座舱虚拟机系统
智能座舱虚拟机系统
1. 功能模块介绍
智能座舱平台(Smart Cockpit Platform)
智能座舱整体解决方案,方案融合智能车机、TBOX、智能天线、HUD、液晶数字仪表、车联网、以太网等智能网联终端和生态,为车主提供更智能、更安全的汽车生活 。
智能车机(Intelligent Car Machine)
一体机、IVI、DA三种中控车机形态可选硬件规划i.MX8、i.MX6、AC8215、Accordo5高、中、低端全系平台产品。 软件平台布局Android、Linux、QNX三大系统,产品定位各种车型。
TBOX
从长安Incall 1.0远特为长安配套2G TBOX开始,远特以低端、中端、高端解决方案布局TBOX通信终端, 为车企提供满足不同成本、性能需求的产品。
智能天线(Intelligent Antenna)
采用前沿的车载以太网硬件方案,结合AVB软件通讯协议,集成丰富无线功能,简化其它电子元器件的开发成本,降低整车系统成本。可与车厂进行联合开发,适配不同方案的需求,满足高中低端的需求,应用前景广。
数字仪表(Digital Instrument)
采用车规级双核Cortex-A9,搭载高度定制化的QNX操作系统,针对汽车仪表特性裁剪内核,高于业内普遍标准的开机速度。 同时,采用专业图形化工具KANZI进行界面设计,具备强大的图像处理和显示效果,提升用户使用感和驾驶安全。
HUD
丰富的经验及深厚的技术积累保证了产品的光学显示效果、用户体检、交互体验及可量产性, 产品的综合竞争力较强,可开发多种形态HUD方案。
2. 技术介绍
智能座舱系统让驾驶及汽车成为一体,通过不同的视觉模式,掌控行车环境及车内信息。随着高性能多核处理器在座舱电子领域的广泛应用,面对复杂的环境和控制要求,虚拟机能够更好的发挥芯片性能和节约成本,已经成为座舱电子不可或缺的软件系统,为了更好的应用这一技术在我们公司的智能座舱域控制器上,本文对座舱电子虚拟机技术进行了专业的产业研究。
新一代座舱电子SOC平台主要有:瑞萨R-CAR 3、德州仪器的Jacinto 7、英特尔Apollo Lake系列、NXP的i.mx8系列、联发科MT27xx系列、三星Exynos Auto 88xx系列与V系列、高通的SA系列。
虚拟机Hypervisor,有些地方也把它称为VMM(virtual machine monitor),这个概念来自PC界,随着座舱处理器的性能越来越强,座舱屏幕越来越多,座舱电子涵盖的功能越来越多,虚拟机已经成为座舱电子不可或缺的软件系统,ARM V8-A架构芯片的大量应用也使得虚拟化很容易实现,多核高性能处理器不用虚拟机也难发挥全部性能,虚拟机已经是高性能多核处理器的标配。单处理器可以节约大量成本,无需仪表MCU,无需仪表的10层PCB,无需仪表ECU盒子,无需存储器,无需CAN收发器和大量线束。
在虚拟化环境下,物理服务器的CPU、内存和I/O等硬件资源被虚拟化并受Hypervisor的调度,多个操作系统在Hypervisor的协调下可以共享这些虚拟化后的硬件资源,同时每个操作系统又可以保存彼此的独立性。对座舱电子来说通常是三个OS,一个是强调实时性的仪表OS,一般是ASIL B。一个是丰富功能的娱乐OS,一般是ASIL A,还有一个弱ADAS功能,如360环视,DMS驾驶者行为监控,面部识别等,一般是ASIL C。通常都称之为Guest OS。
根据Hypervisor所处层次的不同和Guest OS对硬件资源的不同使用方式,Hypervisor虚拟化被分为两种类型:Bare-metal虚拟化方式(“裸机”虚拟化)和Host OS虚拟化方式(基于操作系统的虚拟化,宿主型虚拟化)。车载系统基本上都是裸机虚拟机,一般称之为Type-1型。除了基于软件的虚拟化之外,还有一类基于硬件的虚拟化,德州仪器和NXP更看好硬件虚拟化,他们首推硬件虚拟化。
Hypervisor直接给物理外设打交道,那它当然需要运行在特权privilege模式了,在过去没有virtualization extesion的情况下,guest os和guest application只能都运行在de-privileged模式,如下图所示。
特权模式下执行的指令分成了两类:sensitive instructions(敏感指令):这些指令试图去更改系统资源的配置信息,或者它的执行结果依赖于系统的状态。privilegedinstructions(特权指令):这些指令在非特权模式下会trap(产生异常,陷入中断向量表),在特权模式下可以正常执行。
敏感指令是特权指令的子集。这种标准现在被称为classically virtualized(经典可虚拟化模型), 不满足这个要求的情况下也可以做虚拟化(二进制翻译技术)。
ARMV7架构中包含8种处理器模式,其中包含1种非特权模式和7种特权模式:V8取而代之的是4个固定的Exception level,分別为EL0到EL3, 其中数字越大代表特权(privilege)越大。类似地,可以将EL0归属于non-privilegelevel,EL1/2/3属于privilege level。如下图所示。
EL0: 无特权模式(unprivileged),EL1:操作系統核心模式(OS kernel mode),EL2: 虚拟机监视器模式(Hypervisor mode),EL3:TrustZone® monitor mode。只有在异常(如:中断、page faults等)发生时(或者异常处理返回时),才能切换Exceptionlevel(这也是Exception level的命名原因,为了处理异常)。当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。对于ARMv8, Hypervisor运行在EL2异常级别。只有运行在EL2或更高异常级别的软件才可以访问并配置各项虚拟化功能。在EL2中实现额外的存储器转换层,称为“Stage 2转换”。hypervisor将为每个虚拟机创建和管理Stage 2的页表;提供3种虚拟异常的支持,Virtual SError, Virtual IRQ, 和Virtual FIQ。物理异常被配置为hypervisor捕获,虚拟异常将会被注入到Guest OS,针对Guest OS中dma设备,提供smmu硬件以支持dma重映射。
对于x86架构,运行在X86架构上的操作系统(Operating System,OS)被设计为具有直接访问和控制硬件资源的权限。X86架构使用0、1、2和3四个权限Ring来控制管理硬件访问权限,其中用户应用程序运行在Ring3权限中。OS因为需要直接访问物理硬件资源而在Ring0中执行。X86架构下的这种层级授权机制也会被应用到虚拟机中。虚拟化上,x86架构要比ARM V8难得多。
虚拟机分全虚拟和半虚拟两种,全虚拟是应用在虚拟操作系统上,半虚拟是API应用在虚拟操作系统上。
目前常见的虚拟机包括黑莓的QNX、英特尔主导的ACRN、Mobica为代表的XEN、松下收购的Open Synergy的COQOS、德国大陆汽车的L4RE,法国VOSyS的VOSySmonitor,其余还有很多,包括Green Hills的Integrity,日本的eSOL,SYSGO 的Pike,Mentor的Nucleus,三星哈曼的Redbend,EPAM的Xen。
QNX公认是最成熟安全程度最高的座舱虚拟机操作系统,不过收费较高,包括入门费、席位费、服务费和授权费(按屏幕数量收费)。QNX虚拟机采用虚拟CPU模式。
QNX使用基于优先级的虚拟CPU共享模式,每个虚拟CPU拥有自己的优先级和时间任务安排序列(scheduling),确保高安全优先级OS能够从低优先级OS那里抢占更多的物理CPU资源。虚拟CPU拥有估计资源预算能力,进而在物理CPU上实现自适应分区。能够最大化利用硬件资源。
各OS之间可以共享设备I/O界面,有助减低成本,减少开发周期。
在GPU虚拟方面,QNX引入仲裁机制,优先为高安全等级OS提供GPU资源。
在2018年的Linux嵌入式大会上发布的ACRN,是一款灵活的、轻量级的参考hypervisor,以实时性和关键的安全性为设计出发点,并且通过开源平台为精简嵌入式开发进行优化。ACRN的最大优势之一是尺寸小,发布时大约只有25K行代码。英特尔开源技术中心为项目贡献了源代码,ACRN的早期支持者包括英特尔、ADLink凌华科技、Aptiv、LG电子和东软。后续则有三星哈曼加入。ACRN不是缩写,发音为“acorn”,(acorn英文意思为橡子)寓意虽然开始很小,但最终可以长的很大,ACRN有两个关键组成:hypervisor和ACRN设备模块。ACRN Hypervisor是一个Type 1的hypervior,可以直接运行于裸机上。ACRN设备模块是针对虚拟设备仿真的参考框架实现,它提供丰富的I/O虚拟化支持,目前计划支持音频、视频、图形和USB。随着社区发展,预计会有更多设备虚拟化功能加入。
ACRN Hypervisor运行在裸机上,然后在其上可以运行一个基于Linux 的服务操作系统(SOS),然后可以同时运行多个客户操作系统,以便整合工作负载。ACRN hypervisor为Service OS创造了第一个虚拟环境,然后启动GuestOS。Service OS运行本地设备驱动程序来管理硬件,向Guest OS提供I/Omediation。Service OS以系统最高优先级的虚拟机运行,以满足时间对敏感需求和系统服务质量(QoS)的要求。Service OS目前可以运行Clear Linux,但是ACRN也支持其它Linux 的发行版或者专有RTOS作为Service OS或Guest OS。为了保持ACRN hypervisor代码库尽可能小且高效,大部分设备模块的实现驻留在Service OS,用来提供设备共享和其它功能。目的是保证在资源受限的设备上实现小尺寸,低延迟的代码库的优化。
ACRN的典型用例是奇瑞星途VX,这是奇瑞有史以来最高等级的车,也是奇瑞尺寸最大的车。配备了双12.3英寸液晶显示屏,仪表使用Clear Linux,仪表盘显示刷新频率达60Hz,中控采用最新的安卓9.0系统,这是转为车载系统开发的,包括一些专用功能,比如AI语音助手,空调灯光音量语音控制,导航AR增强等。同时配备面部识别系统,根据面部识别系统可以个性化设置内饰,同时导航是增强现实AR导航。使用Slim Boot Loader (SBL)技术让仪表盘冷启动低于2秒。
ACRN也有对ADAS的对应。
L4微内核系统由德国国家信息技术研究院JochenLiedtke设计(此人已在2001年过世),1995年公开。众所周知,基于消息传递(Message Passing )IPC 机制是微内核系统的基本特点之一。这一设计理念有助于提高系统的灵活性,模块化,安全性,以及可扩展性。IPC 的性能表现是决定微内核系统性能的关键因素,因为绝大多数系统调用和很多应用程序的服务都需要两个IPC, 一个服务请求,一个结果返回。消息传递IPC 机制现在已经大量用于多种计算机系统中,但是很多IPC 实现的性能并不太好。根据CPU 性能和消息长短不同,一个IPC 大概需要50到500 µs。L4内核支持三种抽象概念:地址空间,线程,和IPC。他只提供7 个系统调用,只有12K 字节代码。在486-DX50 机器上,一个地址空间切换IPC,8 字节参数传递,只需要5 µs 。1998年德国德累斯顿大学开发了基于L4的开源操作系统Fiasco.OC,采用基于对象的C++语言。同时也开发了L4运行环境,即L4Re。德国和法国的虚拟机系统推测有不少都是基于L4Re的。
Fiasco.OC里有专为虚拟机开发的部分,称之为NOVA,这也是德累斯顿大学的作品。
上图为NOVA架构,和虚拟化有关的主要是三个Microhypervisor,VMM(Virtual MachineMonitor)和Root Partition Manager。可以看出hypervisor是对硬件的一种抽象,而且提供一种硬件的并发访问和隔离机制(多个guest+os同时运行,共享硬件,但是又互相不影响),这些功能与操作系统的功能十分类似, 能不能把hypervisor和os+kernel结合起来?答案是肯定的,这就构成 microhypervisor,微内核与hypervisor有许多共性,使得它们的结合巧妙而自然。
VMM在这里的功能是负责管理Virtual+Machine(VM)和host+os(microkernel)之间物理资源的交互。每一个VMM都向它的VM提供一组类似于物理硬件的接口,让所有的guest+os觉得自己好像运行在真实的物理机器上一样,同时microhypervisor保证它们之间的隔离性。需要强调的是,在NOVA里面,hypervisor和VMM不是同义词。一般情况下,我们认为hypervisor和VMM都可以译为虚拟机管理器,都是为了实现对硬件资源的抽象和复用以便支持多个os,但是在NOVA中,hypervisor是代表的privileged+kernel(microhypervisor)而VMM是代表一个deprivileged+user+component(从NOVA的架构图上很容易得出)。
微内核是不包含policy的,所以关于资源分配的策略也应该放在用户空间单独实现。其实这里的Root+Partition+Manager我认为就是Sigma0,Sigma0是L4/fiasco微内核的第一个用户进程,除了内核自己使用的内存之外,所有的内存、外设端口都交给Sigma0进程来管理,Sigma0负责向其他用户进程分配内存和外设资源。这也正体现了L4微内核的递归内存分配,而且所有的分配策略都在用户层决定。对于guest+os来说,它使用的是virtual+cpu(后文简写为vcpu),vcpu在guest+os看来是一个硬件,类似于真实的cpu,但是对于microhypervisor来说就是一个thread。microhypervisor采用的是基于优先级的、可抢占的、时间片轮转调度策略,每个物理cpu都保存一个runqueue。每一次调度的时候,调度器都会在就绪队列里选择出当前优先级最高的线程进行执行,把当前上下文切换到要调度的线程的上下文(context+switch)。对于调度器来说,它并不区分调度的线程是native+thread还是vcpu+thread。
大众下一代(最新的迈腾可能已经使用)中级车采用瑞萨的R-CAR M3(W或N)平台,它采用6核设计,两个A57四个A53,德国厂家的L4RE一般都基于M3或H3平台研究,一般都使用两个A53做仪表,每一个A57运行一个虚拟机VM。L4Re也通常和AGL(车规级Linux)连在一起使用。下图为L4的虚拟SOCKS和虚拟CONSOLE。
2016年7月,松下收购了Opensynergy,该公司有一套名为COQOS的虚拟机系统。不仅可用于座舱,也可以用于自动驾驶系统,对自适应Autosar也有对应。并且也通过了2018版的ASIL B级认证。下一代日产、福特有可能采用这套系统(基于瑞萨R-CAR 3)。
2019年9月ARM在IAA展会上展出了由Mobica与联发科MT2712合作的三屏座舱电子系统,包括中控导航、仪表和副驾(360度环视),集成了TomTom的导航系统,该解决方案是使用 Google 的 Android 开放源代码项目(AOSP)开发的,可让 OEM 保留数据 IP,以用于未来的获利策略。Mobica的虚拟机主要基于Xen Project。
法国Virtual Open System公司在几乎在同时推出了基于MT2712的虚拟机样品,即VOSYSmonitor,并称通过了ASIL C级认证。它不是严格意义上的虚拟机,更像是一个虚拟分区系统。它利用ARM的TrustZone,支持多个并行不同类型不同安全等级的操作系统。
由于不是类似小型操作系统的虚拟机,这种轻量级系统性能比较好,但需要硬件配合,硬件必须像两个芯片那样设计。
全软件虚拟机的优点是软件灵活度很高,可以达到软件定义座舱的程度,也可以减少整体软件开发成本,缺点一是硬件资源消耗必然不低,因此也多在高通和英特尔平台上见到。缺点二,虚拟机对软件技术不足的企业来说,第三方的支持费用会非常高,如果出货量低的话,远不如使用两套独立的系统。硬件虚拟化的优点恰恰是针对这两个缺点的。像德州仪器J6这样的性能不足的芯片都可以虚拟化,第三方支持费用会很低,适合出货量不高的系统。缺点是灵活度不足。至于可靠性,硬件虚拟化有物理区域隔离,似乎更可靠,但全软件虚拟机也主打高可靠性,两者应该相差无几。
上图是NXP i.mx8qm的虚拟机图。
上图是德州仪器最新的J7即TDA4VM,整体达到ASIL B级,MCU岛达到ASIL C级。使用多达6个Cortex R5F来保证实时性和可靠性。