基于Hypervisor智能驾舱的AUTOSAR解决方案(1)
扫描二维码
随时随地手机看文章
引言
当今的汽车制造商正竞相通过使用人机界面(HMI),基于云的服务,车辆自组织网络(VANET)和自动驾驶等技术在未来的车辆中部署这些创新且吸引眼球的新功能。这些新技术增加了车辆电气和电子(E / E)架构的复杂性,并要求软件系统要支持汽车间及汽车和云端的互连及交互。随着现代车辆中100多个ECU的出现,电子控制单元(ECU)的数量不断增加。这迫使汽车OEM厂商将多个单元整合到一个单一的高计算平台中。
尽管这种方法简化了车辆的网络模型,但它给汽车软件系统架构带来了更多挑战。这些挑战同样存在于智能座舱,高级驾驶员辅助系统(ADAS),智能穿戴设备和远程信息通信系统等领域中(图1)。更复杂的是,这些软件应用程序中对在安全性和互连性方面有更严格的实时性和功能安全性要求。对车载通信和对安全性有严格要求的系统通常需要实时操作系统(RTOS),而与安全性无关的信息娱乐应用程序则在Linux通用操作系统上运行。两个OS的组合使这些应用程序具有异构性质。
图1:座舱域控制器网络
解决方案
可以在同一电子控制单元上添加两个微控制器(MCU)。一个MCU运行基于Linux®的应用程序,该应用程序负责AI等算法和信息娱乐功能等高计算任务,而另一个MCU运行通常用于车载和诊断通信的简单,实时的应用程序。这两个MCU通过串行外围设备接口连接,从而允许这两个应用程序之间进行通信(图2)。
尽管此方法允许重用标准软件体系结构,但为每个系统添加专用硬件效率不高且成本很高。而且,通过串行通信接口在这些系统之间大量的数据通信无法保证其通信的可靠性。另一种方法是在Linux上移植实时应用程序。图2:驾驶舱领域进行信息娱乐/ AUTOSAR整合的方法
通过使用高性能的Embedded Hypervisor硬件和 虚拟化技术可在同一处理器上整合多个操作系统。这是开发异构的汽车应用程序的有效方法。下面介绍如何使用Mentor嵌入式管理程序将实时AUTOSAR应用程序与基于Linux的应用程序整合在一起。所描述的解决方案使用TI Jacinto 6信息娱乐评估模块(图3)。图3:TI Jacincto 6信息娱乐评估模块
系统架构与方法
本节定义了虚拟化环境的特征以及用于满足异构汽车应用程序要求的方法。
虚拟化的环境
实现一致的虚拟化环境的核心在于处理影响处理器硬件状态的敏感指令。实现此目的的技术可以总结如下:
-
全虚拟化:全虚拟化(Full virtualization), 也称为原始虚拟化技术,它使用虚拟机协调客户操作系统和原始硬件。这里"协调"是一个关键词, 因为VMM在客户操作系统和裸硬件之间用于工作协调。一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理. 因为操作系统是通过Hypervisor来分享底层硬件.全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源. 全虚拟化最大的优点是操作系统没有经过任何修改. 它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC).
-
半虚拟化:半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化方面的代码. 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作.
-
硬件辅助虚拟化:该技术通过使用硬件扩展来处理敏感操作,从而从全虚拟化和半虚拟化中获得最大收益,从而在大多数情况下消除了虚拟机管理程序仿真的开销,而无需修改虚拟进程在虚拟机管理程序上运行。当然,此方法的缺点是它仅适用于具有虚拟化支持的现代处理器。
CPU虚拟化
Arm®TrustZone®是一个内置的硬件安全解决方案,它定义了一个由两个区域组成的安全域:安全和非安全。引入了处理器模式以进行监视区域的切换,并引入了特权指令(由安全监视软件调用)来管理这两个区域的软件堆栈。
图4:当前的Armv7 CPU模式。
尽管TrustZone主要是为安全性而设计的,但它可以用作混合关键系统的硬件辅助虚拟化方法。不能单独使用TrustZone扩展来处理虚拟机监控程序代码,因为无法捕获非安全区域到安全区域的指令,从而无法虚拟化非安全区域中的其他进程。但是,这可以使用新的HYP模式来实现,该模式降低了虚拟机管理程序设计的复杂性,并降低了敏感指令仿真的成本,因为它通过使用自己的专用寄存器应用陷印和仿真技术。
内存虚拟化
添加了地址转换的新阶段,以使来宾内核对内存地址的管理与物理内存脱钩。这是通过使用第二阶段页表转换将中间物理地址(IPA)转换为物理地址(PA)来实现的。此阶段对来宾内核完全透明,并保护物理内存免受来宾未经授权的访问。图5显示了在虚拟机管理程序上运行的虚拟机的地址转换阶段。图5:内存地址转换 也可以从HYP模式中删除第二阶段地址转换,以使IPA和PA地址相同。
ARM的通用中断控制器
Arm通用中断控制器主要由两个组件组成:
-
分配器(GICD):执行中断优先级分配并路由到所有CPU。还负责软件中断的产生。 -
CPU接口(GICC):负责处理CPU级别的中断,因为它根据CPU当前的优先级接受来自分配器的中断。负责确认并通知中断结束。
ARM的虚拟CPU接口
Arm中通用中断控制器的虚拟化扩展添加了另一个组件,即虚拟CPU接口。虚拟CPU接口寄存器具有与物理CPU相同的编程模型 接口注册,因此来宾内核不会知道它是否正在与物理或虚拟CPU通信。它将始终使用物理接口的地址,但是如果软件已虚拟化,则管理程序可以使用第二阶段地址转换将该接口重定向到虚拟CPU寄存器。这个设计 无需模拟CPU接口访问,因此客户机OS可以更高效地执行诸如中断确认之类的频繁任务。
系统管理程序通过分发器管理所有物理中断,并通过列表寄存器将它们作为虚拟中断路由到来宾,该列表寄存器是系统管理程序用来维护虚拟中断状态的列表。这样,虚拟机管理程序可以为所有访客虚拟化分发服务器的功能,但这也意味着必须模拟对分发服务器注册的访客访问。
在Arm的通用中断控制器的新体系结构中,中断停用的过程可以分为两个步骤:
1)通过降低CPU优先级,以及
2)中断停用。
进行虚拟化时,将这两个步骤分开可能会有所帮助。系统管理程序收到物理中断并将其作为虚拟中断路由到来宾内核后,可以在仍在处理虚拟中断的同时降低CPU的优先级。当降低CPU优先级时,可以触发新的中断,从而允许管理程序
在将它们触发给来宾之前更有效地对收到的中断进行优先级排序。在此配置中,当来宾内核取消激活虚拟中断时,物理中断也将被取消激活。
通用计时器
通用计时器模块为每个CPU提供一个实时计数器和一个计时器,这些计时器和计时器可用于在配置的时间段后生成中断。通常,任何内核都需要具有控制能力并能够操纵计时器,以便实时安排事件。这意味着在虚拟化的情况下,管理程序将必须模拟来宾的所有访问者访问计时器的效率非常低。这将大大降低实时性能。这就是为什么Arm体系结构中的通用计时器提供虚拟计数器和虚拟计时器的原因,来宾内核可以使用这些计数器和虚拟计时器而无需捕获虚拟机管理程序。来宾内核应该能够在没有管理程序干预的情况下配置停止/重启虚拟计时器,而管理程序直接将物理计时器用于其自身的调度目的。虚拟计数器可以配置为 与实体计数器的偏移量,以便每个访客都有自己的相对时间。而且,虚拟计数器将 在切换到HYP模式(将来宾与虚拟机监控程序操作隔离开)的情况下自动停止。
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!