Skip to content

Latest commit

 

History

History
101 lines (68 loc) · 3.05 KB

File metadata and controls

101 lines (68 loc) · 3.05 KB

RT-Thread VirtIO 驱动

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 输入设备支持

主要区别

传统版 VirtIO (v0.95)

  • 32 位特性协商
  • 单一队列描述符区域
  • 简单状态标志
  • 客户机页面大小配置

现代版 VirtIO (v1.0+)

  • 64 位特性协商(支持更多特性)
  • 独立的描述符/驱动/设备队列区域
  • 增强的状态流程,带 FEATURES_OK 检查
  • 更好的内存对齐和原子性保证

迁移指南

从传统版迁移到现代版

  1. 更新 QEMU 命令行以使用现代版 VirtIO 设备(最新的 QEMU 版本默认使用现代版)
  2. 在 menuconfig 中更改 VirtIO 版本:
    RT-Thread Components → Device Drivers → Using VirtIO device drivers → VirtIO Version
    → 选择 "VirtIO Modern (v1.0+)"
    
  3. 重新构建应用程序
  4. 驱动将自动与设备协商 VERSION_1 特性

向后兼容性

驱动从 MMIO 配置中自动检测设备版本,并相应调整其行为。传统版(版本 0x1)和现代版(版本 0x2)设备在同一构建中都受支持。

BSP 支持

以下 BSP 已更新以支持传统版和现代版 VirtIO:

  • qemu-virt64-riscv:QEMU RISC-V 64 位
  • qemu-virt64-aarch64:QEMU ARM64 (AArch64)

规范参考

许可证

Apache-2.0