
做嵌入式最怕两件事叠在一起板子还没到以及板子到了却烧录、接线、串口抢资源。CI 流水线更头疼——不可能给每个提交搞一块开发板。于是很多人会问能不能在电脑里「假装」有一台 ARM / RISC-V 机器把内核、根文件系统、甚至裸机固件先跑起来QEMUQuick Emulator就是干这个的一套通用的开源机器模拟器 / 虚拟化器。它可以在你的 PC 上模拟完整计算机CPU、内存、串口、网卡、Flash……也可以在加速模式下接近原生速度跑虚拟机。对嵌入式开发者来说它常常是「没板也能验证」的第一块踏板。截至 2026 年 9 月官网维护发布里较新的稳定版本为11.1.2以 qemu.org/download 实时列表为准。官网https://www.qemu.org文档https://www.qemu.org/documentation源码镜像github.com/qemu/qemu正式投稿与发布说明请看官网许可以仓库 LICENSE 为准多为 GPL-2.0 等组合产品使用请自行核对一、它到底是什么名字有时被念成「Q-EMU」项目定位写得很直白a generic and open source machine emulator and virtualizer。你可以把它理解成三种能力叠在一起能力在干什么嵌入式里常怎么用全系统模拟模拟一整台机器启动 Guest OS / 固件跑 ARM Linux、测启动脚本、联调用户态用户态模拟不模拟整机只翻译「另一种 CPU 的程序」在 x86 电脑上跑arm-linux-gnu编出来的二进制虚拟化加速同架构时借 KVM 等接近原生速度服务器 / 桌面虚拟机和嵌入式仿真是两条常用路它不是 IDE也不是交叉编译器。交叉工具链负责编出镜像QEMU 负责在假机器上跑起来。两边经常成对出现aarch64-linux-gnu-gcc编译 →qemu-system-aarch64启动。等真机只用交叉编译QEMU能否执行能但依赖硬件到货只能看「编过了」能执行、能看串口日志外设真实无模拟常见串口/网卡/存储等CI难规模化容易但测不深易挂进流水线做冒烟速度真机快慢看板子—纯模拟偏慢同架构KVM 很快二、三个常见误解≠ 和 VirtualBox / VMware 是同一种东西。消费级虚拟机产品偏「在 x86 上再开一台 x86 Windows/Linux」。QEMU 更通用强调跨架构模拟比如在 x86 笔记本上跑 ARM 机器也可以配合 KVM 做高性能虚拟化。嵌入式文档里你更常碰到的是qemu-system-arm/qemu-system-riscv64这类命令。≠ 模拟了就等于板上行为 100% 一致。定时精度、Wi‑Fi/射频、特殊加速器、厂封 NPU、奇葩 Flash 时序——模拟机和真机总会有缝。QEMU 适合启动、驱动框架、文件系统、网络协议栈、应用逻辑的早期验证量产标定、射频、极限时序仍要上真机。≠ 「装了 QEMU 就会自动有板级支持」。你要选对machine机器型号和CPU还要有能在该机器上启动的镜像内核 rootfs或带设备树的 zImage 等。Zephyr、Linux、Buildroot、Yocto 文档里通常会写「推荐的 QEMU board / virt 机器」——按文档配对比自己瞎猜-M参数省事。三、架构宿主机上跑一台假电脑从下往上看一次「跑起来」大致是这样层干什么宿主机 OSLinux / macOS / Windows提供进程、文件、真网卡QEMU翻译或加速 Guest 指令模拟内存与外设模型虚拟机器你选的-M机器UART、GIC、PCI、virtio 等GuestLinux、RTOS、U-Boot、甚至裸机 demo全系统模式下Guest 以为自己在操作真实硬件其实读写的是 QEMU 实现的外设模型。串口常常接到你终端的 stdio所以「板子上的 printk」会直接打在你笔记本黑窗口里——这是嵌入式同学最有体感的一刻。TCG vs KVM知道即可TCGTiny Code Generator把 Guest 指令动态翻译成宿主机指令跨架构靠它灵活但更慢。KVMLinuxGuest 与宿主机同架构时让 CPU 硬件虚拟化接力快很多。嵌入式跨架构仿真多半走 TCG在 x86 服务器上开 x86 虚拟机多半走 KVM。四、嵌入式场景里它常出现在哪场景你在干什么没板先跑 LinuxBuildroot / Yocto / OpenWrt 编出镜像用virt等机器冒烟RTOS / Zephyr CI官方 board 列表里带 QEMU 的目标PR 上就能跑 sample调试启动早期配 GDB stub看内核解压、挂根文件系统卡在哪用户态翻译qemu-aarch64 ./my_app快速试跑交叉编出来的程序教学与分享读者不必买板也能复现「启动成功」的截图五、谁适合用、谁不适合多半会喜欢的板子紧缺、样品轮转慢却要持续合代码想把「能否启动 / 基础网络 / 基础存储」放进 CI做内核、驱动框架、根文件系统而不是只调射频教学、写公众号、做分享——降低读者复现门槛建议别神话的必须验证 Wi‑Fi 吞吐量、天线、产测校准强依赖厂商闭源加速器模拟器里根本没有对应模型把「QEMU 上跑通」当成「量产可发货」——中间还差真机长跑与兼容性六、怎么动手先装好 QEMULinux 发行版一般有包装qemu-system-arm、qemu-system-aarch64、qemu-system-riscv64等。版本以发行版为准追新可看官网源码包。选一条「官方已经打通」的路径想碰 LinuxBuildroot / Yocto 文档里的 QEMU 目标想碰 RTOSZephyr 的qemu_*board想碰最小官方或社区的virt机器 现成内核/rootfs 示例先保证串口有打印第一里程碑不是跑满业务而是QEMU启动 → 串口打印 → 能进 shell 或看到 RTOS banner。再挂调试器可选QEMU 提供 GDB 接口后用gdb-multiarch连上去和真机远程调试体感接近。最后才谈加速与外设细节先跑通再纠结网络后端、virtio、共享目录——否则参数海洋会把人淹死。七、和同类工具怎么并列理解方案一句话QEMU通用模拟 / 虚拟化跨架构最常见厂商模拟器 / ISS往往更贴某颗芯片但不通用、不一定开源Renode偏物联网多节点、外设建模叙事强真机 CI 农场最终权威但贵、难维护QEMU 的胜负手是普及度、文档与周边生态、和开源构建系统的对接。它不是每颗芯片的完美替身却是多数开源嵌入式项目默认会提到的那一个名字。八、优缺点优点开源、跨平台、架构覆盖面大能把「启动与基础功能」从真机依赖里部分解放出来和 GDB、CI、Buildroot/Yocto/Zephyr 故事成熟同一套工具桌面虚拟化与嵌入式仿真都能碰到缺点跨架构纯模拟有时很慢外设保真度参差不齐射频与专有 IP 基本指望不上参数多、机器多新手容易卡在「镜像和-M不匹配」跑通 ≠ 量产验证结束九、写在最后下次再因为「板子还在路上」而停下手头验证时不妨多问一句这一步是必须用真实PCB板还是只要需要QEMU模拟就行