汽车ECU的虚拟化技术初探(二)

目录

1.概述

2.U2A虚拟化方案概述

3.U2A的虚拟化功能概述

4.虚拟化辅助功能的使能

5.留坑


1.概述

        在汽车ECU的虚拟化技术初探(一)-CSDN博客里,我们聊到虚拟化技术比较关键的就是vECU的虚拟地址翻译问题,例如Cortex-A77就使用MMU来进行虚实地址的转换;实际上,在汽车MCU中,还很少看到带MMU硬件的芯片,那么是否他们就不能使用虚拟化技术呢?

        为此,我查阅了目前来说应该是有虚拟化方案支持的量产芯片RH850 U2A的datasheet,现抛砖引玉,希望大家共同探讨这项变革汽车域控的技术。

2.U2A虚拟化方案概述

        废话不多说,首先来看U2A的整体资源,该芯片有4个采用双核锁步的 400 MHz  CPU 。 每个CPU都集成了基于硬件的虚拟化辅助功能,允许满足不同 ISO26262 功能安全级别的多种软件系统在高性能模式下独立运行且不受干扰。 此外,还可减少虚拟化占用的资源,以保障实时执行。 这使用户能够将多个 ECU 功能集成到单个 ECU 中,同时保持功能安全、信息安全以及实时操作要求。

        U2B在U2A的基础上新增了QoS、FXU,扩容了Flash以满足未来架构的需求,同时成本仍旧低于与SOC相比。 由于没有看到U2B的片子,这里还是从U2A分析。

        光有硬件虚拟化辅助其实不够,还需要hypervisor软件,因此瑞萨和ETAS进行合作,瑞萨搞硬件,ETAS干软件,结合了U2A 硬件 (HW) 关键功能(例如虚拟化管理程序、QoS服务质量、功能安全和网络安全等)以及ETAS出色的软件产品组合和软件能力,提供软件优先的解决方案,可将多个应用程序集成到单个 ECU 中,从而以安全可靠的方式彼此分离,最大程度地确保相互之间不受干扰。其产品示例架构如下:

        可以看到,在上述产品示例中,仍旧采用了之前讨论的 硬件type1虚拟化方案,其hypervisor软件叫做RTA-HVR;

        它总共分成了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为虚拟化提供了哪些硬件辅助功能。

3.U2A的虚拟化功能概述

        在U2A中,瑞萨使用的是自研内核G4MH2来支持虚拟化功能。当使用虚拟化功能时,瑞萨称这个系统为虚拟系统,没有使用叫做常规系统。如下:

       在常规系统中,OS几乎可以使用CPU的所有功能;而在虚拟系统中,OS仅能使用由虚拟软件管理下的VM分配的资源,虽然运行在VM上的软件以为它在独享整个CPU的资源,但实际上从CPU视角,有可能它只用了很少一部分资源。这样的好处就是即使运行在VM上的软件出现了风险,也不至于导致整个硬件系统的崩溃。换句话说,就是不用硬件去Reset整个系统,只需要重启VM,把风险控到最低。

        Ps:该种虚拟化也叫作半虚拟化,详见全虚拟化与半虚拟化-阿里云开发者社区

4.虚拟化辅助功能的使能

      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、 协处理器使用权限,这里还没有研究到,后面再谈。

5.留坑

  1. U2A整体架构分析
  2. U2A 硬件硬件虚拟化辅助功能详解
  3. 两个使用相同芯片的vECU集成到U2A时,二者链接文件一样(即Code、Data均放在原MCU相同位置),U2A如何保证在不修改原工程的情况完成Flash的地址隔离(即vECU A使用相同地址,但在VMM翻译地址时映射到物理BankA;vECU B同理)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来很大的困扰。那么,如何解决msvcp120.dll丢失的问题呢?本文将为大家介绍…

MySQL大表数据导入到MongoDB

修改参数 &#xff0c;开启into outfile的功能 secure_file_priv/home/backups/mysql_outfile 重启数据库是参数生效 按条件导出MySQL数据 select * from receipt_receive_log where gmt_create > 2020-04-13 00:00:00 and gmt_create< 2020-07-13 00:00:00 INTO O…

屏幕提词软件Presentation Prompter mac中文版使用方法

Presentation Prompter for mac是一款屏幕提词器软件&#xff0c;它可以将您的Mac电脑快速变成提词器&#xff0c;支持编写或导入&#xff0c;可以在一个或多个屏幕上平滑地滚动&#xff0c;Presentation Prompter 下载是为适用于现场表演者&#xff0c;新闻广播员&#xff0c;…

同一个Unity项目打开两个Unity Editor实例

特殊情况下&#xff0c;同一个项目需要同时打开两个编辑器做测试&#xff0c;如多人在线游戏&#xff0c;或者有通信功能的时候就有这样的需求。同时也为了方便调试和观察日志。并且修改的是同一份代码。 命令介绍&#xff1a; 实现思路&#xff1a; 使用 mklink 命令 分别创建…

《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》阅读笔记

论文标题 《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》 Swin 这个词貌似来自后面的 Shifted WindowsShifted Windows&#xff1a;移动窗口Hierarchical&#xff1a;分层 作者 微软亚洲研究院出品 初读 摘要 提出 Swin Transformer 可以…

c语言练习11周(6~10)

输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。 题干 输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。输入样例gfedcba输出样例gbcdefa 选择排序 #include<s…

Linux 部署Sentinel控制台

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 1.版本选择 SpringCloudAlibaba SpringClo…

如何接入电商数据(淘宝/京东)API接口的对接获取(商品详情|价格|SKU)

双11是电商行业的两个重大节点&#xff0c;这两大节日吸引了大量消费者参与&#xff0c;同时也为电商企业带来了巨大的销售机会和业绩增长。 作为疫情放开之后的第一场“战役”&#xff0c;今年618显然被寄予了厚望。无论是大型电商品牌还是小型电商商家&#xff0c;都在积极探…

systemctl enable docker.service报错“Failed to execute operation: Bad message“

将docker加入到开机自启&#xff0c;报错&#xff1a; 解决&#xff1a; 重新粘贴复制&#xff1a; [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target…

VScode配置C/C++环境

文章目录 一、下载MinGW二、配置环境变量三、VScode配置四、验证 一、下载MinGW MinGW官网 划到最下面找 二、配置环境变量 解压后放到自己想放的目录下 右键 此电脑–>属性–>高级系统设置—>环境变量–> 在cmd命令行检测&#xff0c;出现如下界面&#xff1a;…

数据结构—内部排序(上)

文章目录 8.内部排序(上)(1).排序基础#1.为什么是内部排序#2.排序的稳定性 (2).冒泡排序#1.算法思想#2.代码实现#3.稳定性与时间复杂度分析 (3).选择排序#1.算法思想#2.代码实现#3.稳定性与时间复杂度分析 (4).插入排序#1.算法思想#2.代码实现#3.稳定性与时间复杂度分析 (5).希…

AI:86-基于深度学习的人体姿态估计与运动分析

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…