关于qemu调试Linux,相信已经有很多大佬做过了,qemu的virt可以调试Linux,在这方面,奔跑吧Linux已经通过-O0编译了两个版本的内核(曾经问过笨叔,如何-O0编译qemu可调式的Linux,但是没有人搭理我),用来熟悉内核的一些机制,还是很有用的。但virt版本的调试没法调试一些常用的外设驱动框架。因此。。。如果可以通过qemu,模拟一个具体的开发板,这样就可以让初学者调试学习一些驱动的框架。
于是 qemu+树莓派3B的调试似乎成了一个可行的方式
优点:可以支持外设调试,spi,i2c,mmc都有,中断不是GIC
缺点:目前没法-O0编译,调试优点麻烦,需要使用printk
当然。。。本文也参考了网上的其他资料,稍后会针对具体的操作方式,以及环境搭建,进行阐述。
最佳参考:知乎一篇帖子:保姆级教程
以下是懒人教程
1:启动镜像下载:https://downloads.raspberrypi.org/raspbian_lite/images/
目前下载了2020-05-27-raspios-buster-lite-armhf的版本,解压后可用
2:设备树和内核文件
参考顶部下载,已将设备数和内核压缩为一个文件
【要是上传的文件无法下载,可以参考保姆教程里面的提取方法】
3:命令
直接启动:
qemu-system-aarch64 -machine type=raspi3b -m 1024 -dtb bcm2710-rpi-3-b.dtb -kernel kernel8.img -drive id=hd-root,format=raw,file=2020-05-27-raspios-buster-lite-armhf.img -nographic -append "'rw earlycon=pl011,0x3f201000 console=ttyAMA0 loglevel=8 root=/dev/mmcblk0p2 fsck.repair=yes net.ifnames=0 rootwait memtest=1 dwc_otg.fiq_fsm_enable=0"
4:源码编译:
https://github.com/raspberrypi/linux
该地址有内核源码
编译命令如下(工具链自行安排)
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4