1. 背景介绍
	嵌入式实时虚拟化技术是一种允许在单个硬件平台上同时运行多个操作系统、并保持确定性和时间关键性能的技术,该技术可为嵌入式系统开发带来许多好处,例如硬件整合、系统隔离、系统灵活可靠性、安全性和可扩展性等。嵌入式实时虚拟化可支持智能汽车、数控机床及5g设备等高级应用。
	开发嵌入式实时虚拟化软件面临着一些挑战。第一个挑战是如何确保不同guest os间的隔离和安全性,尤其是当它们具有不同级别的关键性和可信度时。第二个挑战是如何在不同guest os间有效地共享或分配 i/o 设备,这可能需要设备模拟或直通机制。第三个挑战是如何确保作为guest os运行的rtos具备低延迟和高吞吐量。
	嵌入式实时虚拟化软件需要通过提供强制的隔离和安全、高效的中断处理、灵活的 i/o 设备管理机制及硬件支持来应对这些挑战。基于架构硬件虚拟化支持与虚拟化主机拓展支持,湖大嵌入式实验室开发了基于zephyr rtos的虚拟化软件zvm,实现了guest os间的隔离、设备分配及中断处理,保证了系统的安全与实时。
	2. 技术路线
	zvm总体功能需要关注三个部分:安全隔离、设备管理和系统性能提升。
	(1)安全隔离:利用虚拟化技术实现不同特权级的应用支持,确保不同guest os间的隔离和安全,尤其是当它们具有不同级别的关键级时。为每个guest os分配不同的虚拟地址空间和虚拟设备,实现虚拟机间的隔离以保证系统安全。
	(2)设备管理:使用支持设备模拟和直通机制的管理程序,在不同guest os之间有效共享或分配i/o设备。对于中断控制器需独占的设备,用完全虚拟化的方式进行分配,对于uart等非独占的设备,使用设备直通的方式进行分配。
	(3)系统性能提升:在处理器方面,使用支持arm64硬件辅助虚拟化拓展技术来减少上下文开销;在内存管理方面,使用基于硬件的两阶段地址转换地址转换性能开销;在中断方面,使用基于硬件的中断注入机制来减少上下文开销和中断时延。
	3. 系统架构
	zvm整体系统架构如下图所示,通过在zephyr rtos中加入虚拟化模块,实现cpu虚拟化、内存虚拟化、中断虚拟化、定时器虚拟化和i/o虚拟化。zvm支持两种类型的guest os,即通用的linux操作系统和zephyr rtos。
(1)cpu虚拟化。cpu虚拟化模块的主要功能是为每个guest os的vcpu虚拟出一个单独的隔离上下文。每个vcpu均作为一个线程存在,由zvm统一调度。为了提高vcpu的性能,arm64架构为zvm提供了vhe支持,vhe可以使host os迁移到el2特权模式,而无需改变操作系统原有代码。vhe主要实现了arm寄存器重定向,可以在不修改zephyr rtos内核代码的情况下,将其迁移el2层开发zvm,既降低了系统冗余,又提高了系统性能。
	(2)内存虚拟化。内存虚拟化模块的主要作用是实现guest os间内存地址的隔离。系统需要隔离不同guest os的内存空间,监控guest os对实际物理内存的访问,以保护物理内存。为了实现该功能,arm64提供了两阶段的地址查找策略。第一阶段是从guest os的虚拟地址到guest os的物理地址转换,第二阶段是从guest os的物理地址到host os的物理地址转化。arm专门为第二阶段转换提供单独的硬件,以提高地址翻译性能。
	(3)中断虚拟化模块。中断虚拟化使用arm的通用中断控制器(gic)设备,并基于该设备实现虚拟中断配置。guest os的中断统一路由到zvm,然后zvm会将它们分配给不同的vcpu。虚拟中断的注入通过gic中的virtual cpu接口或list register具体实现。
	(4)定时器虚拟化。定时器虚拟化为每个cpu定义了一组虚拟定时器寄存器,它们在预定时间后单独计数并抛出中断,由host os转发给guest os。同时,在guest os切换过程中,虚拟定时器会计算guest os的实际运行时间,并对guest os退出的时间进行补偿,为guest os提供定时器服务。
	(5)设备虚拟化。在设备虚拟化方面,zvm采用arm中的memory-mapped i/o (mmio)方法将设备地址映射到虚拟内存地址,构建虚拟设备空间,实现guest os对设备地址的访问。在具体实现上,zvm统一构建一个虚拟的mmio设备,在guest os创建过程中将该设备分配给指定的guest os,实现i/o虚拟化。此外,对一些非独占设备,zvm使用设备直通的方式实现设备的访问。
	4. 未来规划
	zvm由sig-zephyr进行维护,并计划在2023年5月推出第一个支持zephyr最新lts的基础版本,7月实现openeuler embedded和zvm整合,并将完善各项其它高级功能,如io设备框架支持、虚拟机动态资源管理及实时性支持等。
			
			
       	 	
    	双极步进电机和单极步进电机之间差异
         	 	
    	QD0325-C导尿管强度测试仪
         	 	
    	代码覆盖率工具的重要性
         	 	
    	高耐久低成本的NRAM是如何铸就的?
         	 	
    	深圳先进院等提出基于卷积神经网络的低剂量光声成像方法
         	 	
    	嵌入式实时虚拟机ZVM介绍
         	 	
    	验证FPGA设计的策略
         	 	
    	电容降压稳压电源电路
         	 	
    	真会玩!支付宝:今天“扫福字得福卡”已达上限,明天再约哦
         	 	
    	磁性的本质
         
       	 	
    	S7-1200 CPU时钟与CP时钟的同步
         	 	
    	学习proteus的仿真原理图解析和经典案例分享
         	 	
    	TouchGFX Designer 4.17帮助构建更好的用户界面
         	 	
    	面向IGBT与MOSFET的栅极驱动器
         	 	
    	苹果13什么时候上市,iphone13中国预计上市时间
         	 	
    	蓝牙耳机系统电路的设计方案详细说明
         	 	
    	一款名为CytoPAN的紧凑型自动化细胞计数测试装置
         	 	
    	利用网络代理扩展1-Wire范围
         	 	
    	小米6还会是1999元吗?看看MIUI官方怎么回答,4月19下午两点见分晓
         	 	
    	合资SUV只是绣花枕头?看了哈弗H9就不想看其他的了