news 2026/9/25 15:18:58

RT-Thread 5.3 在 QEMU virt AArch64 平台上的 BSP 移植与全外设开发验证指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RT-Thread 5.3 在 QEMU virt AArch64 平台上的 BSP 移植与全外设开发验证指南
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式OS
  • RTOS

【免费下载链接】rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/

项目地址:https://gitcode.com/gh_mirrors/rt/rt-thread
点击查看免费下载

导读

本文围绕 RT-Thread 官方 BSPbsp/qemu-virt64-aarch64,系统讲解如何将 RT-Thread 5.3 移植并运行到 QEMU 的virtAArch64 虚拟机上:从交叉编译工具链配置、scons构建,到qemu.py一键启动、各类存储/图形/音频/网络设备的挂载方式,再到 AMP 异构多核、vfio-user 摄像头等进阶玩法。读完本文,你将掌握一套完整的"无硬件、纯软件"驱动的 VirtIO、PCI 与平台驱动开发验证环境,并能够根据自身需求通过 menuconfig 与qemu.py参数自由裁剪虚拟机外设配置。

1. BSP 概述与默认配置

AArch64 是 ARMv8 架构下执行 A64 指令的 64 位执行状态。本 BSP 将 RT-Thread 移植到 QEMU 的virtAArch64 机器上,整体构建在设备模型(DM)、**Open Firmware(OFW/FDT 设备树)**与PCI 总线框架之上,可作为 VirtIO、PCI 及各类平台驱动的开发与验证平台。

BSP 目录位于 bsp/qemu-virt64-aarch64,其 Kconfig 中通过SOC_VIRT64_AARCH64选项自动选中ARCH_ARMV8、ARCH_CPU_64BIT、RT_USING_CACHE、RT_USING_COMPONENTS_INIT、RT_USING_USER_MAIN等基础配置(见 bsp/qemu-virt64-aarch64/Kconfig)。当前默认配置要点如下表:

项目说明
RT-Thread 版本5.3(rtconfig.h中RT_VER_NUM 0x50300)
架构ARMv8 AArch64,MMU(ARCH_ARM_MMU、ARCH_USING_ASID)
SMP4 核(RT_CPUS_NR=4,RT_USING_SMP)
中断控制器GICv2 / GICv3(含 ITS、MSI,见RT_PIC_ARM_GIC_V2M/V3/V3_ITS)
控制台UART0(PL011,ttyAMA0,RT_CONSOLE_DEVICE_NAME "uart0")
根文件系统VirtIO Blockvda0,FatFs(elm-chan,RT_USING_DFS_ELMFAT)
内存默认 128 MB(可通过qemu.py -mem调整)

从 bsp/qemu-virt64-aarch64/rtconfig.h 可以看到,该 BSP 默认已开启十分丰富的外设能力:串口(PL011 + 8250 PCI)、RTC(PL031)、看门狗(I6300ESB)、MTD NOR CFI、AHCI、NVMe、UFS、SCSI、VirtIO 全套(Block/Console/RNG/RPMSG/SCSI/GPU/Input/Crypto/Sound)、PCI ECAM 与 Generic Host、GICv3 ITS、RAMFB 图形(800×600)、音频(Intel HDA)、RPMSG 与 Mailbox PIC 等,是一份开箱即用的"全外设"开发镜像。

2. 编译说明

2.1 交叉编译工具链

建议使用 ARM Developer GNU 交叉编译工具链(支持 Linux / Windows 平台),下载 x86_64 Hosted 平台对应的xxx-aarch64-none-elf二进制包,解压后将RTT_EXEC_PATH环境变量指向该编译器的bin目录。

在 bsp/qemu-virt64-aarch64/rtconfig.py 中可以看到工具链的默认取值逻辑:

EXEC_PATH = os.getenv('RTT_EXEC_PATH') or '/usr/bin' PREFIX = os.getenv('RTT_CC_PREFIX') or 'aarch64-none-elf-'

即默认编译器前缀为aarch64-none-elf-(CC = aarch64-none-elf-gcc),并会优先读取环境变量RTT_EXEC_PATH/RTT_CC_PREFIX。编译参数方面,DEVICE指定了-march=armv8-a -mtune=cortex-a53,链接脚本为link.lds,debug 构建默认-O0 -gdwarf-2。

2.2 执行 scons 构建

进入rt-thread/bsp/qemu-virt64-aarch64目录执行:

scons

正常生成rtthread.elf与rtthread.bin两个文件(POST_ACTION中通过objcopy -O binary从 ELF 生成裸机二进制rtthread.bin,供 QEMU-kernel直接加载)。

也可通过scons --exec-path="GCC工具链路径"在指定工具链的同时直接编译,无需设置环境变量。

配置修改使用scons --menuconfig(Kconfig 入口在 bsp/qemu-virt64-aarch64/Kconfig),保存后重新执行scons即可增量重建。

3. 运行

本 BSP 使用qemu-system-aarch64模拟器,通过 bsp/qemu-virt64-aarch64/qemu.py 启动。该脚本会读取rtconfig.h自动获取RT_CPUS_NR、检测 QEMU 版本并据此决定是否挂载 UFS 等设备,是理解本 BSP 外设拓扑的最佳入口。

3.1 安装 QEMU

Windows 平台:从 QEMU 官方下载页面获取安装包即可。

Linux 平台(以 Ubuntu、Deepin 为例):

sudo apt update sudo apt install qemu-system-arm

部分可选功能对 QEMU 版本有要求:

功能最低 QEMU 版本
UFS 存储8.2.0
VirtIO Sound(-sound virtio)8.2.0

qemu.py内部实现了版本比较类QEMU_VERSION,当检测到版本低于 8.2.0 时,-sound virtio与 UFS 都会报错退出。

3.2 环境变量

变量说明
RTT_QEMU_ROOTQEMU 可执行文件所在目录前缀(脚本会在其后拼接qemu-system-aarch64)
RTT_ROOTRT-Thread 源码根目录,默认自动取 BSP 上两级目录(os.path.join(os.getcwd(), '..', '..')),用于导入tools/building.py与tools/dtc.py

3.3 基本启动

在 BSP 目录下执行:

python qemu.py

或:

./qemu.py

首次运行会自动创建各存储设备对应的 64 MBqcow2镜像(脚本遍历virtio/scsi/flash/emmc/nvme/ahci前缀执行qemu-img create -f qcow2 xxx.qcow2 64M,QEMU ≥ 8.2.0 时追加ufs.qcow2)。默认以-nographic模式启动,串口输出到当前终端。

典型启动日志:

heap: [0x40042aa0 - 0x40142aa0] \ | / - RT - Thread Operating System / | \ 5.3.0 build ... 2006 - 2026 Copyright by rt-thread team hello rt-thread msh />

其中hello rt-thread来自 bsp/qemu-virt64-aarch64/applications/main.c 的main()入口,打印后进入 msh 命令行。

3.4qemu.py命令行参数

参数默认值说明
-gic2GIC 版本(2或3);-smp大于 8 时自动切换为 GICv3;-el 2且 GICv3 时内部使用gic-version=max(不可通过-gic max手动指定)
-smpRT_CPUS_NR(4)CPU 核心数;-dtbo检测到amp_soc时自动加 1
-mem128内存大小(MB)
-el1异常级别:1默认;2开启虚拟化(virtualization=on);3开启 secure(secure=on)
-bootargs见下文内核启动参数
-initrd—指定 initrd 镜像路径
-graphic—图形模式(ramfb +virtio-gpu-device+ VirtIO 键盘/平板),替代-nographic
-gl—图形模式下挂载virtio-gpu-gl-pci并开启 QEMU 显示端 OpenGL(如-gl gtk);需 QEMU 带--enable-opengl、--enable-virglrenderer,且须与-graphic合用
-debug—启用 GDB 调试(-S -s)
-dumpdtb—导出运行时 DTB 并转为 DTS(借助tools/dtc.py的dtb_to_dts)
-dtb—使用自定义 DTB 文件
-virtio-blockvirtioVirtIO Block 磁盘镜像名前缀(生成virtio.qcow2,挂载为vda)
-scsiscsiVirtIO SCSI 磁盘镜像名前缀
-flashflashpflash 磁盘镜像名前缀(pflash1,CFI NOR)
-emmcemmcSDHCI eMMC 磁盘镜像名前缀
-nvmenvmeNVMe 磁盘镜像名前缀
-ahciahciAHCI SATA 磁盘镜像名前缀
-ufsufsUFS 磁盘镜像名前缀(QEMU ≥ 8.2.0)
-cdrom—SCSI CD-ROM 镜像路径(如 ISO 文件)
-soundhda音频设备:hda(Intel HDA)或virtio(VirtIO Sound PCI,QEMU ≥ 8.2.0)
-tap—使用 TAP 网卡(替代 user 模式)
-ssh12055user 模式下 SSH 端口转发(hostfwd=tcp::PORT-:22)
-9p—VirtIO 9P 共享目录路径(需在 menuconfig 中启用 VirtIO 9P;需 QEMU 编译时含--enable-virtfs)
-camera—宿主机 V4L2 设备路径(如/dev/video0);仅 Linux;需对设备有读权限(通常加入video组);后台编译运行qemu-device-camera.c并通过 vfio-user 挂载 PCI 摄像头(需安装libvfio-user)
-dtbo—AMP 模式:指定 DTBO overlay 文件(如amp.dtsi);自动将-smp加 1;须 Smart 版本内核且配置足够-mem(见下文)

默认-bootargs:

console=ttyAMA0 earlycon cma=8M coherent_pool=2M root=vda0 rootfstype=elm rootwait rw

从 bsp/qemu-virt64-aarch64/qemu.py 的源码可以看到这些参数的落地方式:-graphic替换-nographic并追加ramfb、virtio-keyboard-device、virtio-tablet-device;-gl追加virtio-gpu-gl-pci -display <后端>,gl=on;-sound virtio追加virtio-sound-pci+ ALSA 后端;-9p则追加-fsdev local,security_model=passthrough与virtio-9p-device,并在 bootargs 末尾追加9p.tag=hostshare 9p.mount=host。

3.5 常用启动示例

图形界面(VirtIO GPU + 键鼠):

./qemu.py -graphic

QEMU OpenGL 显示(-gl):

./qemu.py -graphic -gl gtk

说明:-gl仅在 QEMU / 宿主机显示链路侧启用 OpenGL(virtio-gpu-gl-pci+ VirGL)。本 BSP 默认仅包含 VirtIO GPU 2D 帧缓冲驱动,没有 OpenGL / VirGL 用户态与内核侧实现,因此-gl不会带来 RT-Thread 内的 OpenGL 加速;图形演示请使用-graphic(virtio-gpu-device)配合 framebuffer 栈。

GDB 调试:

./qemu.py -debug

更大内存与 GICv3:

./qemu.py -mem 256 -gic 3

挂载 CD-ROM:

./qemu.py -cdrom /path/to/image.iso

VirtIO Sound 音频:

./qemu.py -sound virtio

9P 目录共享(需先启用RT_VIRTIO_9P):

./qemu.py -9p /path/to/share

AMP 异构多核(RPMSG 从核,须 Smart 版本):

./qemu.py -dtbo amp.dtsi -mem 300

说明:AMP 示例要求启用Smart 版本(menuconfig 中RT_USING_SMART),且必须使用-mem 300(bsp/qemu-virt64-aarch64/amp.dtsi 内存布局约需 300 MB,默认 128 MB 不足)。qemu.py检测到amp_soc时会将-smp自动加 1(例如RT_CPUS_NR=4时实际以-smp 5启动)。QEMUloader会预先将amp.dtb与rtthread.bin加载到amp.dtsi指定的固定物理地址(如kernel-entry = 0x48480000),主核再通过 PSCI 拉起从核。标准版内核要求在虚拟地址与物理地址相等的区域运行,无法用于从核地址空间。请在 menuconfig 中开启 Smart 后重新编译。

摄像头演示(camera.c叠加画面到 framebuffer,需配合-graphic):

./qemu.py -graphic -camera /dev/video0

说明:-camera必须传入宿主机 V4L2 设备路径。Linux 下需先安装 libvfio-user(详见 bsp/qemu-virt64-aarch64/qemu-device-camera.c 注释),并确保当前用户对设备节点有读权限(例如sudo usermod -aG video $USER后重新登录,或用ls -l /dev/video0确认权限)。若设备正被其他程序占用,也会打开失败。脚本会在后台编译并启动qemu-device-camera辅助进程,等待/tmp/qemu-device-camera.sock就绪后启动 QEMU,并在 QEMU 退出后结束辅助进程(kill -15 \pidof qemu-device-camera``)。

3.6 控制台与 Telnet

端口设备说明
当前终端UART0(PL011)默认-nographic串口
4321VirtIO Consoletelnet 127.0.0.1 4321,端口名org.rt-thread.console
4322PCI 8250 串口telnet 127.0.0.1 4322
4323AMP 从核控制台仅-dtbo模式,telnet localhost 4323

VirtIO Console 连接示例:

telnet 127.0.0.1 4321

从qemu.py源码可见,4321 端口通过-chardev socket,port=4321,server=on,telnet=on+virtserialport,name=org.rt-thread.console提供;4322 端口通过pci-serial挂接 8250 PCI 串口;4323 端口仅在-dtbo模式下以-serial telnet:localhost:4323,server,nowait追加。

3.7 网络

默认使用 user 模式网络(-netdev user),并自动追加hostfwd=tcp::12055-:22将 SSH 转发到本机12055端口(可用-ssh修改)。

TAP 网卡模式示例(以tap0为例):

./qemu.py -tap

Linux 下需预先配置 TAP 网桥(qemu.py注释中给出了完整的 bridge 建立/拆除命令序列,包括ip link add br0 type bridge、ip tuntap add dev tap0 mode tap等)。Windows / WSL 下 TAP 支持有限。TAP 模式下 SSH 端口转发不可用(脚本会打印Warning: SSH not set in TAP)。

4. QEMU 默认挂载设备

qemu.py默认向虚拟机挂载以下设备(与驱动默认配置对应)。UFS 仅在 QEMU ≥ 8.2.0 时挂载;带触发条件的可选设备在表中标注。

QEMU 设备镜像文件RT-Thread 侧
virtio-blk-devicevirtio.qcow2VirtIO Block,根分区vda0
virtio-scsi-pci+scsi-hdscsi.qcow2VirtIO SCSI
scsi-cd(可选-cdrom)用户指定SCSI CD-ROM
pflash(index=1)flash.qcow2MTD NOR CFI
sdhci-pci+sd-cardemmc.qcow2SDHCI eMMC(需启用 SDIO)
nvme+nvme-nsnvme.qcow2NVMe
ahci+ide-hdahci.qcow2AHCI SATA
ufs+ufs-lu(仅 QEMU ≥ 8.2.0)ufs.qcow2UFS
virtio-net-device—VirtIO Net(需启用网络协议栈)
virtio-rng-device—VirtIO RNG
virtio-crypto-device—VirtIO Crypto
virtio-serial-device—VirtIO Console / RPROC Serial
pci-serial(8250 PCI)—PCI 8250 串口
intel-hda+hda-duplex—Intel HDA 音频
i6300esb—I6300ESB 看门狗
edu—QEMU EDU 教学设备(MFD)
virtio-gpu-device(-graphic)—VirtIO GPU 2D(默认)
virtio-gpu-gl-pci(-graphic -gl)—QEMU OpenGL 显示设备;RT-Thread 侧无对应 GL 驱动
virtio-keyboard-device/virtio-tablet-device—VirtIO Input
virtio-9p-device(-9p)—VirtIO 9P(需启用驱动)
virtio-sound-pci(-sound virtio)—VirtIO Sound
vfio-user 摄像头(-camera <路径>)宿主机 V4L2 设备PCI 摄像头(BSPdrv_camera)

其中基础命令行模板(cmd_base)还包含了-M virt,acpi=on,its=on,gic-version=N、-cpu max、-kernel rtthread.bin、-serial mon:stdio等关键参数,-device edu,dma_mask=0xffffffff用于挂载 QEMU 教学设备。注意 pflash 有 pflash0/pflash1 两个实例:pflash0 用于 BootROM(如 UEFI),因此脚本只使用 pflash1(-drive if=pflash,...,index=1)。

5. 驱动支持情况

5.1 默认已启用

类别驱动说明
串口PL011UART0,系统控制台uart0/ttyAMA0
串口8250 PCIPCI 串口,Telnet 端口 4322
RTCPL031实时时钟
GPIOPL061GPIO 控制器
看门狗I6300ESBPCI 看门狗
存储VirtIO Block块设备,vda
存储VirtIO SCSISD / CD-ROM
存储AHCI PCISATA 磁盘
存储NVMe PCINVMe 磁盘
存储UFS PCIUFS 磁盘
存储MTD NOR CFIpflash 闪存
存储BLK 分区DFS / EFI 分区表
图形VirtIO GPU2D 帧缓冲(-graphic);不含 OpenGL / VirGL
图形FramebufferRAMFB 800×600(RT_GRAPHIC_ROMFB_WIDTH/HEIGHT,bsp/qemu-virt64-aarch64/drivers/drv_romfb.c)
图形LCDLCD 设备框架
输入VirtIO Input键盘、鼠标、平板(-graphic)
音频Intel HDA默认-sound hda
音频VirtIO Sound-sound virtio
加密VirtIO CryptoVirtIO 加密后端
随机数VirtIO RNG硬件随机数
通信VirtIO ConsoleTelnet 4321
通信RPMSGVirtIO RPMSG 字符设备
通信Mailbox PIC邮箱中断控制器
固件QEMU FW_CFG固件配置接口
总线PCIECAM + Generic Host,MSI / MSI-X
其他MFD EDU多功能设备

以上配置均可在 bsp/qemu-virt64-aarch64/rtconfig.h 中找到对应的#define(如RT_SERIAL_PL011、RT_RTC_PL031、RT_PIN_PL061、RT_WDT_I6300ESB、RT_ATA_AHCI_PCI、RT_NVME_PCI、RT_USING_UFS、RT_USING_MTD_NOR_CFI、RT_GRAPHIC_FB、RT_USING_MBOX/RT_MBOX_PIC、RT_USING_RPMSG/RT_RPMSG_RT_THREAD_VIRTIO等),可作为判断驱动可用性的权威依据。

5.2 默认未启用但可通过 menuconfig 开启

本 BSP 已启用 PCI 总线与 VirtIO PCI 传输(RT_VIRTIO_TRANSPORT_PCI、RT_USING_PCI),QEMU 中也已挂载对应设备。下列驱动在默认.config中未勾选,开启相应 Kconfig 选项并重新编译后即可使用(无需修改qemu.py):

驱动 / 功能Kconfig 要点QEMU 设备说明
VirtIO NetRT_USING_SAL+RT_USING_LWIP+RT_USING_ETHERNETvirtio-net-device网络协议栈未默认启用
VirtIO 9PRT_VIRTIO_9Pvirtio-9p-device配合-9p共享目录
SDHCI eMMCRT_USING_SDIO+RT_SDIO_SDHCI_PCIsdhci-pcieMMC 存储

说明:凡标注depends on RT_USING_PCI的 PCI 类驱动,均可在此 BSP 上通过 menuconfig 启用;QEMU 侧若未挂载对应设备,需自行在qemu.py中添加-device参数。

5.3 BSP 特有功能(驱动层)

功能配置项启动方式
RAMFB 分辨率RT_GRAPHIC_ROMFB_WIDTH/RT_GRAPHIC_ROMFB_HEIGHT-graphic(bsp/qemu-virt64-aarch64/drivers/drv_romfb.c 向 RAMFB 提供尺寸)
摄像头驱动RT_SOC_CAMERA-camera <v4l2路径>;camera.c预览需加-graphic

5.4 示例应用(applications/)

源文件编译条件说明
main.c始终编译入口main(),打印hello rt-thread
amp.cRT_RPMSG_RT_THREAD_VIRTIOAMP 异构多核与 RPMSG 通信示例
camera.cRT_SOC_CAMERA摄像头画面叠加到 framebuffer

main.c:默认应用,系统启动后输出hello rt-thread,随后进入 msh。

amp.c(AMP + RPMSG):QEMUloader预先将amp.dtb与rtthread.bin加载到 bsp/qemu-virt64-aarch64/amp.dtsi 指定地址,主核再通过amp_soc设备树节点与 PSCI 拉起从核 CPU。主从之间通过 VirtIO RPMSG + Mailbox 通信。主核将 VirtIO Blockvdb的资源信息写入从核 DTB 后启动从核。qemu.py会为这颗额外 CPU 将-smp加 1,并额外挂载virtio-block的 AMP 副本镜像(virtio.amp.qcow2)。

版本要求:须Smart 版本(menuconfig 中RT_USING_SMART),且须使用-mem 300。标准版内核必须在虚拟地址与物理地址一致的映射下运行;AMP 从核加载到独立物理内存区域(见amp.dtsi中amp_memory、kernel-entry等),不满足该约束,因此标准版无法用于 AMP 演示。

启动方式:

./qemu.py -dtbo amp.dtsi -mem 300

从核控制台:telnet localhost 4323。

msh 命令:

命令说明
rpmsg_write <设备> <消息>向 RPMSG 字符设备写入消息
rpmsg_read <设备>读取 RPMSG 字符设备全部消息
amp_startup手动触发 AMP 从核启动(同时启用控制台与 msh 时导出;否则自动在应用初始化阶段执行)

系统启动时会自动创建 RPMSG 端点(rpmsg_char0,端点名rpmsg-char,地址 114/514)。从核侧地址互换。在-dtbo模式下,qemu.py会为 bootargs 前置rpmsg.mode=master,并将amp.dts与运行时 DTB 合并(借助tools/dtc.py的dts_to_dtb)后作为最终 DTB 启动 QEMU。

camera.c(摄像头预览):将 vfio-user PCI 摄像头画面居中叠加到 framebuffer,默认设备camera0→fb0,约 10 秒(300 帧)。

启动方式(Linux 宿主机,已安装 libvfio-user 且存在 V4L2 摄像头):

./qemu.py -graphic -camera /dev/video0

msh 命令:

camera [摄像头设备] [framebuffer设备]

示例:camera camera0 fb0

6. 存储与分区

  • 根文件系统默认挂载在 VirtIO Block 第一个分区vda0,文件系统类型elm(FatFs),对应 bootargs 中的root=vda0 rootfstype=elm rootwait rw。
  • 各存储镜像首次运行自动创建为 64 MBqcow2文件,可通过qemu-img扩容或预先替换。
  • pflash0 用于 BootROM(如 UEFI),本 BSP 使用 pflash1(flash.qcow2)作为 CFI NOR;pflash0 数据在 QEMU 退出后不保留。
  • Linux 下可使用qemu-nbd+fdisk对qcow2镜像分区(Windows 不支持)。qemu.py注释中给出了完整流程:modprobe nbd max_part=12→qemu-nbd --connect=/dev/nbdX ABC.qcow2→fdisk /dev/nbdX→qemu-nbd --disconnect /dev/nbdX。

7. QEMU Monitor 热插拔提示

在 QEMU Monitor 中可动态增删 VirtIO 串口端口:

(qemu) chardev-add socket,host=127.0.0.1,port=4323,server=on,wait=off,telnet=on,id=console2 (qemu) device_add virtserialport,chardev=console2,name=org.rt-thread.port,id=port2 (qemu) device_del port2 (qemu) chardev-remove console2

VirtIO 设备可选参数(在qemu.py中按需添加):

  • 禁用 legacy:-global virtio-mmio.force-legacy=false
  • Virtqueue packed:-device virtio-XXX-device,packed=on
  • PCI 模式(≥ 1.0):-device virtio-XXX-pci,disable-legacy=on

8. 修改配置后的注意事项

  • 修改 CPU 数量后,重新编译使RT_CPUS_NR与之一致(或用qemu.py -smp覆盖)。-dtbo模式下qemu.py会自动将 CPU 数加 1。
  • 超过 8 核时 GIC 自动切换为 v3(qemu.py中if q_smp > 8: q_gic = 3),也可手动指定-gic 3。gic-version=max仅在-el 2且 GICv3 时由脚本内部设置。
  • 启用 9P 目录共享需 QEMU 编译时包含 virtfs(--enable-virtfs)。
  • 使用-gl需 QEMU 编译时包含 OpenGL / VirGL(--enable-opengl、--enable-virglrenderer);这与 RT-Thread 是否支持 OpenGL 无关,当前软件栈默认仅 2D 图形。
  • AMP(-dtbo)须 Smart 版本内核(RT_USING_SMART)、-mem 300,且自动增加 CPU 数;标准版要求 VA=PA 运行,无法用于从核固定物理地址加载场景。
  • -camera须传入宿主机 V4L2 设备路径,仅支持 Linux,且需 libvfio-user;当前用户须能访问该设备(通常加入video组);-graphic仅camera.cframebuffer 预览演示需要。
  • 修改根设备或启动参数时,通过-bootargs覆盖默认参数。

结语

bsp/qemu-virt64-aarch64是 RT-Thread 官方维护的"全外设"虚拟验证 BSP:一方面通过 VirtIO / PCI 总线覆盖了块存储、SCSI、NVMe、AHCI、UFS、网络、GPU、输入、音频、加密、随机数、控制台等主流外设驱动;另一方面借助 QEMU 的动态设备挂载与热插拔能力,配合-dtbo、-camera等扩展参数,还能演练 AMP 异构多核与 vfio-user 设备直通这类高级场景。开发者完全可以基于本文的编译、启动与配置流程,在无实体硬件的情况下完成驱动开发、内核调试与功能验证,是学习 AArch64 平台驱动开发与 RT-Thread 设备模型(DM)/ OFW / PCI 框架的绝佳入口。

  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式OS
  • RTOS

【免费下载链接】rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/

项目地址:https://gitcode.com/gh_mirrors/rt/rt-thread
点击查看免费下载
上一篇:八大网盘直链下载免费搞定:网盘直链下载助手一键解析真实下载地址
下一篇:HEIC缩略图插件免费方案:让 Windows 10/11 一秒预览 iPhone 照片的完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 15:10:34

多协议以太网温湿度变送器在楼宇自控中的选型与部署要点

作为在楼宇自控行业摸爬滚打十几年的老工程师&#xff0c;这几年感触最深的变化&#xff0c;就是温湿度变送器这类最基础的传感设备&#xff0c;正在从“能测就行”快速转向“能接入、能互通、能联动”。越来越多的智慧楼宇项目在采购温湿度变送器时&#xff0c;已经不满足于传…

作者头像 李华
网站建设 2026/9/25 15:06:37

Bagging集成深度学习模型提升财务造假预测AUC的完整实践

简介&#xff1a;面向机器学习与财务风控从业者&#xff0c;这套基于Bagging与深度学习的上市公司财务数据造假预测方案&#xff0c;完整覆盖从制造业、其他行业特征工程到二分类模型训练与预测的全流程&#xff0c;适合数据挖掘竞赛、毕业设计或企业财务异常识别场景的复现与二…

作者头像 李华
网站建设 2026/9/25 14:59:42

C# 网络相关 API 汇总:Socket / TcpListener / TcpClient / UdpClient

一、整体层级架构&#xff08;核心认知&#xff09;从底层到上层依次递进&#xff0c;所有高层类均基于原生Socket封装&#xff1a;原生底层&#xff1a;Socket&#xff08;TCP/UDP通用&#xff0c;自由度最高&#xff09;高层封装&#xff1a;TCP体系&#xff1a;TcpListener&…

作者头像 李华
网站建设 2026/9/25 14:57:12

江苏食品级螺杆泵正规厂商源头工厂企业全景分析:省心选择指南

江苏食品级螺杆泵正规厂商源头工厂省心选择指南 食品级螺杆泵是食品生产加工领域用于高粘度、含颗粒食品介质输送的核心卫生级泵类设备&#xff0c;浙江久江泵业作为专业的食品级螺杆泵生产制造源头工厂&#xff0c;可提供合规稳定、适配多元食品加工场景的卫生级泵类产品与全流…

作者头像 李华