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
相关推荐
扶风ff1 小时前
新品知识更新太快?用练题簿在线刷题,安排企业培训的小测与复盘
前端·学习·小程序
传奇开心果编程4 小时前
【SwiftUI提高练中学】第13课 实时活动与灵动岛:ActivityKit 实战
学习·ui·ios·swiftui·swift
欣欣之王来了4 小时前
Python入门:什么是Python以及为什么选择它
学习·架构·面向对象·项目·python教程
dadaobusi5 小时前
pcie原子操作和nvme原子操作
学习
sunshine22 girl5 小时前
Java学习五 面向对象高级5 内部类1
java·学习
每天题库7 小时前
架子工脚手架工题库:安全操作考点与模拟题练习指南
学习·安全·考试·题库·考证
yangmu32038 小时前
Codex 提示词优化教程:用四要素把模糊需求变成可执行任务
人工智能·学习
无敌贵点大王9 小时前
RTThread学习记录13——关于要使用一个外设,RTThread与cubemx到底要怎么配合?
c语言·stm32·学习·rtthread
喜欢打篮球的普通人10 小时前
MiniMind 学习笔记(十二):Pretrain 实操——从版本梳理到 8GB 显卡上的真实训练
人工智能·笔记·学习
m4Rk_11 小时前
【论文阅读】Agent 记忆机制(87):VizoMem——把文本历史转化为可检索的视觉记忆
论文阅读·人工智能·学习·开源·github