English | 中文
VirtIO 驱动为 RT-Thread 提供虚拟 I/O 设备支持,主要用于 QEMU 等虚拟化环境。
驱动现已支持传统版和现代版 VirtIO 规范:
- 传统版 VirtIO (v0.95):版本字段为 0x1,兼容较旧的 QEMU 版本
- 现代版 VirtIO (v1.0+):版本字段为 0x2,支持 VirtIO 1.0、1.1 和 1.2 规范
- VirtIO 块设备 (virtio-blk):虚拟块设备
- VirtIO 网络设备 (virtio-net):虚拟网络接口
- VirtIO 控制台 (virtio-console):虚拟串口控制台
- VirtIO GPU (virtio-gpu):虚拟图形设备
- VirtIO 输入设备 (virtio-input):虚拟输入设备(键盘、鼠标、触摸板)
使用 menuconfig 配置 VirtIO 支持:
RT-Thread Components → Device Drivers → Using VirtIO device drivers
在传统版和现代版 VirtIO 之间选择:
RT-Thread Components → Device Drivers → Using VirtIO device drivers → VirtIO Version
选项:
- VirtIO Legacy (v0.95):与较旧的 QEMU 版本兼容(默认)
- VirtIO Modern (v1.0+):用于较新的 QEMU 版本(2.4+),具有增强功能
启用各个 VirtIO 设备:
RT_USING_VIRTIO_BLK:VirtIO 块设备支持RT_USING_VIRTIO_NET:VirtIO 网络设备支持RT_USING_VIRTIO_CONSOLE:VirtIO 控制台支持RT_USING_VIRTIO_GPU:VirtIO GPU 支持RT_USING_VIRTIO_INPUT:VirtIO 输入设备支持
- 32 位特性协商
- 单一队列描述符区域
- 简单状态标志
- 客户机页面大小配置
- 64 位特性协商(支持更多特性)
- 独立的描述符/驱动/设备队列区域
- 增强的状态流程,带 FEATURES_OK 检查
- 更好的内存对齐和原子性保证
- 更新 QEMU 命令行以使用现代版 VirtIO 设备(最新的 QEMU 版本默认使用现代版)
- 在 menuconfig 中更改 VirtIO 版本:
RT-Thread Components → Device Drivers → Using VirtIO device drivers → VirtIO Version → 选择 "VirtIO Modern (v1.0+)" - 重新构建应用程序
- 驱动将自动与设备协商 VERSION_1 特性
驱动从 MMIO 配置中自动检测设备版本,并相应调整其行为。传统版(版本 0x1)和现代版(版本 0x2)设备在同一构建中都受支持。
以下 BSP 已更新以支持传统版和现代版 VirtIO:
qemu-virt64-riscv:QEMU RISC-V 64 位qemu-virt64-aarch64:QEMU ARM64 (AArch64)
- VirtIO 规范 v1.2(最新,2022)
- VirtIO 规范 v1.1(2019)
- VirtIO 规范 v1.0(2016)
- OASIS VirtIO 技术委员会
Apache-2.0