05-SA8155 QNX Hypervisor 之 Virtio-i2c虚拟I2C

本文深入探讨了VirtIO作为I/O半虚拟化解决方案的角色,以及在QNX系统中的虚拟设备(Vdev)概念。QNX的虚拟设备可以模拟或半虚拟化物理设备,允许GuestOS像使用真实设备一样使用它们。特别地,VirtIO-i2c在QNX和Android中的实现被详细解析,解释了如何通过VirtIO框架实现主机和GuestOS之间的I2C通信。文章还提供了配置和使用VirtIO-i2c进行实际设备操作的步骤,并强调了GuestOS无需关心设备是否虚拟化的事实。

1.  VirtIO与VirtualDevice概念

1.1 VirtIO 

virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化Hypervisor 中的一组通用 I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。

在完全虚拟化的解决方案中,guest VM 要使用底层 host 资源,需要 Hypervisor 来截获所有的请求指令,然后模拟出这些指令的行为,这样势必会带来很多性能上的开销。半虚拟化通过底层硬件辅助的方式,将部分没必要虚拟化的指令通过硬件来完成,Hypervisor 只负责完成部分指令的虚拟化,要做到这点,需要 guest 来配合,guest 完成不同设备的前端驱动程序,Hypervisor 配合 guest 完成相应的后端驱动程序,这样两者之间通过某种交互机制就可以实现高效的虚拟化过程。

 图:ACRN Kernel Land Virtio Framework

参考:

 virtio 简介 - bakari - 博客园 (cnblogs.com)

ACRN Hypervisor

1.2 Qnx Virtual Device

上图,QNX 虚拟机管理程序 2.0 概述,介绍虚拟机以及Guest访问虚拟或者物理设备的一些方式。

虚拟设备可以模拟物理设备,也可以是半虚拟化设备(不存在完全对应的物理设备的虚拟设备)。虚拟设备(vdev)仅存在于虚拟化环境中。它们是在虚拟机管理程序层运行的软件代码,可以模拟物理设备,也可以提供物理设备提供的功能,而无需模拟任何特定的物理设备。若要使用 vdev,Guest OS需要驱动程序,就像需要驱动程序在非虚拟化环境中使用物理设备一样。

VM(虚拟机) 定义虚拟硬件(Virtual devices),并将其和直通硬件(Pass-through devices)呈现给Guest OS,Guest OS不需要知道它是在VM 中运行还是在硬件直接定义的环境中运行。

网址:QNX Hypervisor 

2. QNX Vdev-VirtIO

代码路径:qnx_ap/AMSS/platform/vm/vdev

目录结构:

.├── Makefile
├── vdev-glink-ssr
│   ├── aarch64
│   ├── common.mk
│   ├── Makefile
│   ├── pinfo.mk
│   ├── protected
│   ├── vdev.c
│   └── vdev.use
├── vdev-io
│   ├── 8155
│   ├── common.mk
│   ├── inc
│   ├── main.c
│   ├── Makefile
│   └── protected
├── vdev-minidump
│   ├── aarch64
│   ├── common.mk
│   ├── Makefile
│   ├── vdev-minidump.c
│   └── vdev-minidump.use
├── vdev-mmu-s2
│  

评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村里小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值