汽车ECU虚拟化技术初探(一)
问题引入:
Hypervisor是如何来管理和隔离硬件资源,保证各个不同功能的应用程序的资源使用安全和资源调度?
没有MMU就做不了虚拟化?
1.为什么要提汽车ECU的虚拟化?
模块化阶段:汽车上每个 ECU 负责特定的功能,比如车灯控制器,制动控制器等,这些控制器像叶子一样挂在CAN总线上,随着汽车功能增多这种架构日益复杂,无法持续。
集成化阶段,单个 ECU 负责多个功能,ECU 数量较上一阶段减少。在这两个阶段,汽车电子电气架构仍处于分布式阶段,ECU 功能集成度较低。
集中化阶段,即现在比较主流的功能域控阶段。功能域即根据功能划分的域控制器,最常见的是如博世划分的五个功能域(动力域、底盘域、车身域、 座舱域、自动驾驶域)。域控制器间通过以太网和 CANFD(CAN with Flexible Data-Rate)相连,其中座舱域和自动驾 驶域由于要处理大量数据,算力需求逐步增长。动力总成域、底盘域、车身域主要涉及控制指令计算及通讯资源,算力要求较低。
域融合阶段。在功能域基础上,为进一步降低成本和增强协同,出现了跨域融合,即将多个域融合到一起,由跨域控制单元进行控制。比如将动力域、底盘域、车身域合并为整车控制域,从而将五个功能域(自动驾驶域、动力域、 底盘域、座舱域、车身域)过渡到三个功能域(自动驾驶域、智能座舱域、车控域)。
车载电脑阶段,随着功能域的深度融合,功能域逐步升级为更加通用的计算平台,从功能域跨入位置域(如特斯拉的前域、左域、右域)。区域控制器平台(Zonal Control Unit,ZCU)是整车计算系统中某个局部的感知、数据处理、控制与执行单元。它负责连接车上某一个区域内的传感器、执行器以及 ECU等,并负责该位置域内的传感器数据的初步计算和处理,还负责本区域内的网络协议转换。
车云阶段,将汽车部分功能转移至云端,车内架构进一步简化。车的各种传感器和执行器可被软件定义和控制, 汽车的零部件逐步变成标准件,彻底实现软件定义汽车功能。
可以看到,随着电子电气架构的更新,整车所需的ECU数量更少,但每个ECU功能更加丰富,例如将制动、转向、动力控制的功能全部集中到一个ECU。这种功能的集中对控制器所采用芯片的资源保护提出了巨大的挑战。
因此,借鉴座舱域控将QNX、Android集中到一块SOC的经验,在MCU上实现虚拟化技术,将不同功能安全等级的系统部署到同一个硬件平台上。如下图:
2.虚拟化技术分类
2.1 硬件虚拟化
Type1类型的虚拟化
Tpye2类型的虚拟化。
2.2 操作系统虚拟化
2.3 硬件虚拟化的资源安全
虚拟地址和物理地址的翻译
访问权限控制
对硬件资源物理内存进行管理
在前面,我们聊到虚拟化技术比较关键的就是vECU的虚拟地址翻译问题,例如Cortex-A77就使用MMU来进行虚实地址的转换;实际上,在汽车MCU中,还很少看到带MMU硬件的芯片,那么是否他们就不能使用虚拟化技术呢?
3.U2A虚拟化方案概述
它总共分成了4个大的Partition:A、B、C、D
Partition A:在1个物理CPU里运行单个VM(虚拟机),即VM A;
Partition B:在2个物理CPU里运行多个VM,VMB 0,VM B1;
Partition C\D:2个单个VM共享 1个物理CPU。
在上述VM之上,运行着不同的Guest SW,即不同的vECU,实现不同功能聚合到一个MCU上。
我们这里首先来看看,U2A为虚拟化提供了哪些硬件辅助功能。
4.U2A的虚拟化功能概述
在U2A中,瑞萨使用的是自研内核G4MH2来支持虚拟化功能。当使用虚拟化功能时,瑞萨称这个系统为虚拟系统,没有使用叫做常规系统。如下:
在常规系统中,OS几乎可以使用CPU的所有功能;而在虚拟系统中,OS仅能使用由虚拟软件管理下的VM分配的资源,虽然运行在VM上的软件以为它在独享整个CPU的资源,但实际上从CPU视角,有可能它只用了很少一部分资源。这样的好处就是即使运行在VM上的软件出现了风险,也不至于导致整个硬件系统的崩溃。换句话说,就是不用硬件去Reset整个系统,只需要重启VM,把风险控到最低。
Ps:该种虚拟化也叫作半虚拟化,详见全虚拟化与半虚拟化-阿里云开发者社区
5.虚拟化辅助功能的使能
U2A的CPU G4MH2,在原来运行模式(Supervisor mode和User Mode)的基础上新增了两种模式,叫做Host Mode和Guest Mode;当CPU使能虚拟化辅助功能后,可以使用上述两种模式作为新的CPU运行模式。这几种模式对应不同特权,它们关系如下:
Hypervisor privilege(HV):构建、管理VM和CPU资源的模式,仅在虚拟化辅助功能开启且进入Host Mode,CPU可使用HV特权;主要是给虚拟化软件使用。
Supervisor Privilege(SV):异常、重要系统资源分配、致命错误处理等需要在此特权等级下处理,在常规模式和虚拟模式下均支持,例如在虚拟系统里运行在VM上APP出现了异常,此时需从UM进到SM,使用SV对该异常进行处理。
上面两个是个人认为比较关键的,此外还有User Mode Authority、 协处理器使用权限,这里还没有研究到,后面再谈。
6.留坑
在U2A没有找到关于MMU的描述,那它是如何实现虚拟化的呢?我准备留下这几个方向进一步研究
U2A整体架构分析
U2A 硬件硬件虚拟化辅助功能详解
两个使用相同芯片的vECU集成到U2A时,二者链接文件一样(即Code、Data均放在原MCU相同位置),U2A如何保证在不修改原工程的情况完成Flash的地址隔离(即vECU A使用相同地址,但在VMM翻译地址时映射到物理BankA;vECU B同理)
往期回顾
1.汽车标定合集
2.AUTOSAR合集
3.汽车网络安全合集
4.汽车功能安全合集