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
相关推荐
千寻xun2 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
researcher-Jiang2 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
MartinYeung57 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
AOwhisky8 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
心中有国也有家8 小时前
AtomGit Flutter 鸿蒙客户端:白噪音场景的视觉设计
学习·flutter·华为·harmonyos
心中有国也有家8 小时前
AtomGit Flutter 鸿蒙客户端:呼吸练习的完整生命周期
学习·flutter·华为·harmonyos
Zeeland8 小时前
构建护城河:自学习 Agent
学习
尼米棕熊8 小时前
大模型学习8上-推理部署框架llama.cpp与Ollama使用指北
学习·llama
brave_zhao9 小时前
nginx的进程架构
java·学习·nginx
枫零NET9 小时前
跟着OpenCode学习Pi Coding Agent-05-Agent的类型系统
人工智能·学习