qemu相关脚本

安装和常用命令

bash 复制代码
# 安装
sudo apt install qemu-system-arm qemu-utils
#  帮助信息
qemu-system-arm --help
# 支持的机器
qemu-system-arm -machine help
# 支持的cpu
qemu-system-arm -cpu help
# 指定内存启动
qemu-system-arm -M virt -m 512M -kernel nuttx -nographic
# 开启gdb调试
# -s = 监听 1234 端口
# -S = 启动时暂停,等 GDB 连接
qemu-system-arm -M virt -kernel nuttx -nographic -s -S

退出

bash 复制代码
Ctrl+A X
quit
# 强制杀死所有 QEMU 进程(卡死时用)
pkill qemu-system-arm

三个常用机器

bash 复制代码
# 通用虚拟 ARM 板,跑 NuttX / Linux / RTOS 最快最方便
-M virt
# 跑 STM32 裸机 / 单片机程序
-M stm32vldiscovery
# 跑 Zynq Cortex-A9 Linux / 裸机 / FreeRTOS
-M xilinx-zynq-a9

qemu-utils工具(非必须)

工具 作用
qemu-img 最核心:磁盘镜像创建/转换/压缩
qemu-nbd 把镜像挂载成块设备
qemu-io 直接对镜像做 IO 测试
qemu-storage-daemon 存储后端服务(高级)

gdb 调试

安装

bash 复制代码
sudo apt update
sudo apt install  gdb-multiarch

启动板子

bash 复制代码
qemu-system-arm \
  -M virt \
  -m 512M \
  -nographic \
  -kernel nuttx \
  -s -S

新建窗口启动gdb

bash 复制代码
gdb-multiarch nuttx
# 输入
set architecture arm
target remote localhost:1234
continue
# 打断点
b hello_main.c:12
# 断点信息
info break
#清楚断点
clear hello_main.c:12
# 局部变量列表
info locals
# 全局变量列表
info variables
## 变量过滤
info variables run
# 看变量
p run
# 看线程
info threads

例子

运行 nuttx

是 ARMv7/ARMv8 通用虚拟平台

bash 复制代码
# 启动
qemu-system-arm \
  -M virt \
  -m 512M \
  -nographic \
  -kernel nuttx
# 调试
qemu-system-arm \
  -M virt \
  -m 512M \
  -nographic \
  -kernel nuttx \
  -s -S

运行zynq linux

bash 复制代码
qemu-system-arm -M xilinx-zynq-a9 -m 1024M   -kernel zImage   -dtb system.dtb   -initrd rootfs.cpio.gz   -serial mon:stdio -display none

运行zynq 裸机

bash 复制代码
# 运行
qemu-system-arm \
  -M xilinx-zynq-a9 \
  -m 512M \
  -kernel zynq_helloworld.elf \
  -nographic \
  -serial mon:stdio
# 调试
qemu-system-arm \
  -M xilinx-zynq-a9 \
  -m 512M \
  -kernel zynq_helloworld.elf \
  -nographic \
  -serial mon:stdio \
  -s -S

petalinux-boot --qemu

等效于下面命令,无法跑裸机

bash 复制代码
qemu-system-arm -M xilinx-zynq-a9 \
  -kernel images/linux/zImage \
  -dtb images/linux/system.dtb \
  -initrd images/linux/rootfs.cpio.gz \
  -serial mon:stdio -display none
相关推荐
早睡早起身体好1232 小时前
为什么 Network 中会出现两个同名请求?——CORS 预检请求学习笔记
网络·笔记·学习·网络安全
菩提树下的打坐2 小时前
测试左移的更深一层:用 DDD 战术设计反推测试边界
学习
casual~3 小时前
模逆元计算方法详解:扩展欧几里得算法与费马小定理
学习·算法·逆元
@Mike@3 小时前
06-数据库学习笔记(存储模型与数据压缩)
数据库·笔记·学习
我的xiaodoujiao4 小时前
快速学习Python基础知识详细图文教程14--模块
开发语言·python·学习·测试工具
wdfk_prog4 小时前
嵌入式面试真题学习笔记系列
笔记·学习·面试
懿路向前4 小时前
【HarmonyOS学习笔记】2026-07-30 | 小艺开放平台智能体接入实战
笔记·学习·harmonyos
吃好睡好便好4 小时前
MATLAB中图像的线性变换
开发语言·图像处理·学习·计算机视觉·matlab
YUS云生4 小时前
大模型学习·第41天:LangChain进阶——提示词模板与Chain链式调用
学习·langchain·c#
boppu4 小时前
酒店毛巾浴巾洗涤后手感评判标准
学习