Arm 系统模拟器
QEMU 可模拟 32 位和 64 位 Arm CPU。64 位机器使用 qemu-system-aarch64;
32 位机器可使用它或 qemu-system-arm。通常适用于后者的命令行,在前者
上具有相同行为。
QEMU 对 Arm 客户机的支持较好,能模拟近五十种机器。数量众多是因为 Arm 硬件远比 x86 多样:不同公司把 CPU 和不同设备集成进 SoC,再组成机器, 即使采用同一 SoC,机器仍可能有很大差异。五十种开发板也只覆盖生态的一小部分。
64 位 Arm 情况类似,只是目前实现的机器更少。
除常见的、带 MMU 且可运行 Linux 的 A-profile CPU 外,也支持 Cortex-M0、 Cortex-M4、Cortex-M33 等用于高度嵌入式开发板的 M-profile 微控制器。 多数开发板 CPU 类型与真实硬件一致并固定,通常无需手动指定,virt 等除外。
选择开发板模型
Arm 系统模拟必须用 -M 或 --machine 指定开发板,没有默认模型。
Arm 系统的差异涉及基本设计,因此为一台机器制作的操作系统或固件镜像, 通常完全不能用于另一台。习惯标准 PC 式 x86 系统的新用户常对此感到意外。 内核启动后,多数用户空间软件对硬件细节的依赖则小得多。
如果已有能在硬件运行的系统镜像或内核,先检查 -machine help 是否列出
对应机器。列出时通常可使用该模型;未列出则镜像几乎肯定无法启动。
也许可以提取文件系统,搭配能够在 QEMU 支持机器上启动的其他内核使用。
如果只想运行 Linux,不在意复现特定硬件的内存小、缺少 PCI 或硬盘等限制,
最好使用 virt。它不对应真实硬件,专为虚拟机设计。需要用适当配置编译
Linux。virt 支持 PCI、virtio、较新 CPU、大容量 RAM 和 64 位 CPU。
开发板专用文档
- Analog Devices max78000 开发板 (
max78000fthr) - M5Stack AI Pyramid(
ax650x-pyramid) - Arm Integrator/CP(
integratorcp) - Arm MPS2 和 MPS3 板(
mps2-an385、mps2-an386、mps2-an500、mps2-an505、mps2-an511、mps2-an521、mps3-an524、mps3-an536、mps3-an547) - Arm Musca 开发板(
musca-a、musca-b1) - Arm RealView 开发板(
realview-eb、realview-eb-mpcore、realview-pb-a8、realview-pbx-a9) - Arm 服务器基础系统架构参考板(
sbsa-ref) - Arm Versatile 板(
versatileab、versatilepb) - Arm Versatile Express 板(
vexpress-a9、vexpress-a15) - Aspeed 系列板(
anacapa-bmc、ast2500-evb、ast2600-evb、bletchley-bmc、fuji-bmc、gb200nvl-bmc、fby35-bmc、g220a-bmc、palmetto-bmc、quanta-q71l-bmc、rainier-bmc、romulus-bmc、supermicrox11-bmc、supermicrox11spi-bmc、tiogapass-bmc、witherspoon-bmc、yosemitev2-bmc) - Aspeed 2700 系列板(
ast2700-evb、ast2700fc) - Aspeed 桥接 IC 和平台信任根处理器系列板(
ast1030-evb、ast1040-evb、ast1060-evb) - Banana Pi BPI-M2U(
bpim2u) - B-L475E-IOT01A 物联网节点 (
b-l475e-iot01a) - Boundary Devices SABRE Lite(
sabrelite) - Canon A1100(
canon-a1100) - Cubietech Cubieboard(
cubieboard) - Emcraft SmartFusion2 SOM 套件(
emcraft-sf2) - Exynos4 开发板(
nuri、smdkc210) - Freecom MusicPal(
musicpal) - Kyoto Microcomputer KZM-ARM11-01(
kzm) - Nordic nRF 开发板 (
microbit) - Nuvoton iBMC 板(
kudo-bmc、mori-bmc、npcm750-evb、quanta-gbs-bmc、quanta-gsj、npcm845-evb) - NXP S32K5 板(
s32k566-cvb-r52) - NXP i.MX25 PDK 开发板(
imx25-pdk) - NXP MCIMX6UL-EVK(
mcimx6ul-evk) - NXP MCIMX7D Sabre(
mcimx7d-sabre) - NXP i.MX 8M Plus 和 i.MX 8M Mini 评估套件(
imx8mp-evk、imx8mm-evk) - Orange Pi PC(
orangepi-pc) - 飞腾 E2000Q 机器(
phytium-pi、phytium-e2000-come) - 飞腾 Pomelo 板(
phytium-pomelo) - Raspberry Pi 开发板(
raspi0、raspi1ap、raspi2b、raspi3ap、raspi3b、raspi4b) - Rockchip RK3588 板
- Sharp Zaurus SL-5500(
collie) - Siemens SX1(
sx1、sx1-v1) - Stellaris 开发板(
lm3s6965evb、lm3s811evb) - STMicroelectronics STM32 板(
netduino2、netduinoplus2、olimex-stm32-h405、stm32vldiscovery) - STM32G474 和 ARDEP V2 机器
- 'virt' 通用虚拟平台(
virt) - VMApple 机器模拟
- Xen 设备模拟后端 (
xenpvh) - AMD Versal Virt(
amd-versal-virt、amd-versal2-virt) - Xilinx Zynq 板(
xilinx-zynq-a9) - Xilinx ZynqMP ZCU102(
xlnx-zcu102)