当前位置: 首页 > news >正文

“软件定义汽车”下的软件虚拟化技术

01.虚拟化技术概述

近年来,随着嵌入式软硬件的高速发展,嵌入式系统产品已融入日常生活的方方面面,在航空航天、车载电子、工业控制等要求更为严苛等领域的应用也更加广泛。特别对汽车领域,每辆车内ECU的使用数量已从21世纪初的30-50个飙升至上百个,其复杂程度也呈指数级上升,给汽车嵌入式软件的开发与测试带来极大挑战。引入虚拟化技术来应对复杂硬件所带来的挑战,成为了历史长河发展的必然。

虚拟化本质是提供一个虚拟的操作系统执行环境,让复杂多样的嵌入式程序(包括操作系统)能够并行运行在同一物理硬件环境上。自上世纪六十年代以来,虚拟化技术已形成一套合理且受业界认可的理论体系:运行在真实物理环境上的称为宿主机(host OS,Operating System),通过虚拟化技术实现的全系统运行环境称为虚拟机(Virtual Machine,VM),在虚拟环境中执行的操作系统称为客户操作系统(Guest OS)。

世界上第一位计算机博士David Wheeler说过,“计算机科学中的任何问题都可以通过增加一个中间层来解决”,因此虚拟化技术在硬件和客户操作系统软件之间引入了一个新层级,称之为Hypervisor或VMM(Virtual Machine Monitor),这一层级就可以简单理解为软件虚拟化技术。

02.如何理解Hypervisor

可以进行如此理解:一台电脑的硬件就好比一栋高层大楼,电脑中的诸多虚拟机就可看做大楼中的多套房屋。每个房屋都有各自的卧室(CPU)、储藏室(内存)和私人网线(网络资源),享受着独门独户的私密空间和生活设施。

但实际上,大楼的电梯、供水系统、电网是所有房屋共用的。也就是说,虽然每个房屋看似拥有专属资源,但其背后依赖的是全楼共享的基础设施。这些资源是由物理主机(大楼)统一提供并智能分配的,每个虚拟机只在需要时,按需使用共享资源的一部分。

Hypervisor就像这栋大楼的物业管理员,在幕后精心安排以确保每个虚拟机(房屋)既能安全、高效的享用所需资源,又不会互相干扰,就像住在独立的房屋中一样。

03.Hypervisor分类

在虚拟化技术的发展历程中,由于特点、用途、功能不同,出现了多个种类的虚拟化类型。大体上可以根据host OS的有无,或者Hypervisor是否直接运行在硬件上,将其分为Type-1型和Type-2型。

3.1 Type-1型Hypervisor

Type-1型也被称为裸机型Hypervisor,如下图所示,没有宿主操作系统,而是直接运行底层硬件之上,直接管理CPU、内存等真实资源的同时,向上层提供客户操作系统的抽象执行环境,常见的有VMware ESXi、Microsoft Hyper-V、Xen。

▲Type-1型Hypervisor

由于需要一定程度上融合操作系统的功能,Type-1型也被分为微内核架构和宏内核架构,刚才介绍的前两种属于宏内核Hypervisor产品,而Xen就是典型的微内核产品。

虽然Hypervisor能够为虚拟机提供更接近物理机的性能,但也存在显著的缺点与局限性:

1. 复杂性和部署难度:由于直接安装在物理硬件上,其安装与配置通常更为复杂,需要特定的管理工具来配置和管理虚拟机,这些工具可能需要额外的培训与学习成本。复杂装备中,高昂的硬件成本也会对后续测试与验证带来挑战。

2. 硬件兼容性:直接运行在硬件上导致Type-1型的硬件依赖性较强,如果硬件不支持或兼容性较差,就可能导致系统不稳定或性能下降。

3. 灵活性较低:无法轻松与现有的桌面操作系统集成,每次调整配置或测试新环境都需要直接在硬件上操作,系统更新与补丁管理也需要精心规划以减少对生产环境的影响。

3.2 Type-2型Hypervisor

Type-2型Hypervisor安装在操作系统上,依赖于基础操作系统提供服务,其寄生的宿主操作系统拥有对硬件平台和资源的全部控制权,包括CPU与物理内存。如下图所示,Hypervisor包含在Host OS中,并不直接与硬件交互:

▲Type-2型Hypervisor

此类Hypervisor可以使用宿主机的各种功能模块,如宿主机自身的调度模块等,充分利用宿主操作系统对物理硬件的管理功能,只需提供对客户操作系统的管理即可。这意味着,宿主操作系统首先启动并管理硬件资源,而后Hypervisor在宿主系统内部运行,并进一步创建和管理虚拟机。最具代表性的Type-2型硬件虚拟化产品为KVM(Kernel-based Virtual Machine),软件虚拟化产品则为SkyEye(详见下文)。

尽管可能在资源效率方面有所欠缺,但Type-2型相较Type-1型有着易用性和兼容性方面的巨大优势:

1. 易于部署和管理:直接安装在操作系统上,不需要额外的硬件配置或引导管理,能与更多种类的硬件兼容。

2. 使用体验与测试友好:Type-2型能直接在桌面操作系统中使用,通常带有图形用户界面(Graphical User Interface,GUI),用户可以更方便地创建、管理和操作虚拟机。

04.利用虚拟化技术模拟汽车嵌入式系统

对汽车领域而言,虚拟化技术的模拟可分为硬件虚拟化和软件虚拟化。硬件虚拟化由于需要使用和嵌入式系统CPU相同架构的平台,在采购成本上较为受限,仅能模拟同源架构,在外设虚拟化上的支持也较为逊色。

软件虚拟化则较好解决了上述问题,通过将汽车嵌入式系统硬件环境进行虚拟仿真实现更高的灵活性,资源分配也更为灵活,工程师可不受物理硬件的限制,随时访问目标系统,快速搭建虚拟硬件原型,提前进行开发、测试及验证工作。

05.应用案例

天目全数字实时仿真软件SkyEye,属于Hypervisor Type-2型的软件虚拟化工具,是符合“软件定义汽车”的工具软件。

作为一款国产自主的基于可视化建模的硬件行为级仿真平台,SkyEye目前已支持涵盖汽车ECU所用到的大部分处理器架构,如PowerPC、Tricore系列等,能够用于汽车BMS系统、汽车发动机管理系统等虚拟原型(即虚拟ECU)的搭建。

应用基于SkyEye的虚拟ECU,工程师可以:

  • 无需关心真实线缆繁琐的连接关系,工程一次搭建,持续可复用;
  • 具备真实CAN总线和INCA硬件的仿真能力,支持数量几乎无限制的仿真硬件;
  • 支持符合AUTOSAR协议的OS及应用程序的运行;
  • 集成原有标定上位机软件,外接Simulink模型模拟真实数据。

▲SkyEye汽车BMS系统仿真

除了通过虚拟化技术及数字孪生帮助快速构建所需ECU、有效缩短整车研发周期外,SkyEye还能帮助用户节省昂贵的硬件设备制造成本,无需对程序进行任何修改即可实现嵌入式软件的运行与调试,覆盖嵌入式软件开发全生命周期,真正实现嵌入式的“敏捷开发,降本增效”。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity常用插件记录
  • MATLAB算法实战应用案例精讲-【人工智能】暗数据(概念篇)
  • 添加数据判断是否存在存在不添加,或存在更新
  • 【网络编程】第十章 网络层-IP(分片组装+网段+路由+NAT)
  • Linux rocky 9.2 安装mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz
  • 引领未来的NVR方案:海思3520D芯片与全套NVR模组源代码解析
  • 搭建springboot项目,并解决项目出现红色J问题
  • 网络之DHCP实验
  • simulink 回放can数据,离线仿真,用来验证算法,应该怎么回读mat格式文件(重要)
  • 拍立淘API在商品搜索中的应用实践案例
  • 教程:postman的平替hoppscotch,又叫postwoman,hoppscotch的docker-compose安装过程
  • linux定期统计某个目录内每天的文件增量大小
  • 虚幻引擎游戏开发 | 程序化生成道具位置 Randomize Height
  • G1处理器GC调优常用参数详解
  • 设计模式24-命令模式
  • Docker入门(二) - Dockerfile
  • FineReport中如何实现自动滚屏效果
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java第三方包学习之lombok
  • MYSQL 的 IF 函数
  • react 代码优化(一) ——事件处理
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • springMvc学习笔记(2)
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 爬虫模拟登陆 SegmentFault
  • 实战|智能家居行业移动应用性能分析
  • 运行时添加log4j2的appender
  • 交换综合实验一
  • 说说我为什么看好Spring Cloud Alibaba
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (简单) HDU 2612 Find a way,BFS。
  • (五)activiti-modeler 编辑器初步优化
  • (转)JAVA中的堆栈
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)可以带来幸福的一本书
  • *上位机的定义
  • .bashrc在哪里,alias妙用
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core Redis 使用有序集合实现延迟队列
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .Net插件开发开源框架
  • @SuppressWarnings注解
  • [ Socket学习 ] 第一章:网络基础知识
  • [20171101]rman to destination.txt
  • [240903] Qwen2-VL: 更清晰地看世界 | Elasticsearch 再次拥抱开源!
  • [AIGC] Java List接口详解
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BUUCTF 2018]Online Tool
  • [cb]UIGrid+UIStretch的自适应
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [Flutter]打包IPA