图1 智能车载平台系统结构
的开源虚拟机监控器[8]。OKL4针对于嵌入式虚拟化领域的发展趋势提出了具有虚拟化功能的微内核Microvisor,主要应用在智能手机系统中[9]。
OKL4继承了L4系列微内核的特点,对地址空间、线程、进程间通信进行了抽象,实现了安全单元的分区,使得运行其上的虚拟机及其他应用、驱动程序分别运行在各自的隔离分区中,并通过一种相对高效的IPC(Inter-Processor Communication)进行通信[10]。OKL4采用的这种半虚拟化的技术需要其客户机操作系统能够完全运行在OKL4 Microvisor 上,因此需要对操作系统内核进行修改,提供其对O K L4半虚拟化的支持,如OK:Linux、OK:Android、OK:Windows等[10]。
上述两款嵌入式虚拟化系统的实现都相对复杂,对硬件的性能要求较高。分区机制使二者相互隔离
作为硬件平台
同构的核上分别部署SmartOSEK OS
SmartOSEK OS
占用的内存情况
阶段将固定的一段物理内存空间分配给SmartOSEK
Android OS
该段物理空间对于
见的
该段物理地址
内存作为两个操作系统的共享内存空间,
为三种不同的类型
理器硬件不同内核私有的外设资源如时钟源
linux内核设计与实现 pdf图2 双核启动流程
源的分配;通过共享内存、核间中断
等手段实现两个操作系统之间相互通信。
SmartOSEK OS存储映射mm_init(),对临时页表中
OS对应的区块进行重映射
个新的物理地址空间
分配的物理地址对应于该段虚拟地
cpu1响应主核核间中断的处理函数
更改为SmartOSEK OS的入口函数。
因此需要改写相应的函数secondary_
start_kernel(),调用osek_entry()启动
SmartOSEK OS。并在osek_entry()中
初始化cpu1私有定时器资源。
内核间通信
在共享内存空间上划分出三段连
续的空间分别用于同步数据缓冲区和
两个方向上异步通信的消息队列。如
图3所示。src字段为消息的发送方执
行实体的ID,dest字段为消息接受方
处理实体的ID。size字段为消息的有
效长度。msg字段为消息的内容。共
享内存是通过静态分配实现的,同步
消息缓冲区和异步消息队列一条消息
的最大长度和队列大小等信息需要静
态配置。
通过核间中断的方式实现通信
的双方信号的发送。在主核cpu0上注
册四个新的核间中断。前两二个中断
用于发送方触发信号通知接收方数据
发送完成;后两个中断用于同步数据
图3 消息的数据格式
图4 功能测试案例部分输出
时,Android 向SmartOSEK 发出的同步发送信号,以及SmartOSEK 接收完成数据后发出的反馈信号。当发生核间中断时,中断处理函数osek_handle_IPI()判断当前触发的核间中断类型并调用相应的响应函数。
平台验证
对于分区功能,主要测试Android OS 和SmartOSEK OS 能够正确启动,二者能够分别运行在两个处
理器上并访问各自的私有资源,正确响应对应
图5 通信功能测试案例部分输出从给Android 二段将信息发送到共享内存异步缓冲区中接收信号读取发送的消息结束语
数,100+100是为了保证系统性能防止溢出将
水平运算次数与垂直运算次数扩大为围内能的要求上接55
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论