qemu_buildroot
Last updated
Was this helpful?
Last updated
Was this helpful?
此文档属于实践类文档,直接讲解某一个具体的板子对应的qemu操作步骤,不分析qemu的原理。
如果大家想要研究linux kernel driver框架原理?或想要研究linux kernel各种子系统原理?利用qemu摸拟某一个具体的板子,进行研究,是最合适的步骤,下面我一步一步介绍,共分成四步骤:
下载buildroot源码
配置、编译buildroot
qemu启动linux kernel
gdb调试linux kernel
目前是2020/02/25,目前最新的稳定版的buildroot是buildroot-2019.11.1,所以此文档用buildroot-2019.11.1
buildroot官网:
具体详细的buildroot操作,请看buildroot官方手册,下面只用最简单的步骤进行操作:
注意:此处利用arm vexpress板子进行讲解
编译完成后,生成如下目录与文件:
各目录与文件的说明:
build:目录,存储各种源码的编译目录,如linux kernel目录、qemu目录
host:目录,存储编译过程需要用到的工具,如编译linux kernel的交叉工具链/bin/arm-linux-xxx
images:目录,最后生成的可执行文件,如rootfs.ext2/vexpress-v2p-ca9.dtb/zImage
Makefile:文件,让用户可以在output/qemu_arm_vexpress目录中,执行make [target]命令
staging:交叉工具链的软链接,为了向后兼容
target:目录,板子根文件系统,但是没有/dev/相关文件,所以不能作为NFS使用
上面命令为了简单容易理解,没有列出对应文件的目录位置,下面一一说明:
host/bin/qemu-system-arm 或 build/host-qemu-3.1.1.1/arm-softmmu/qemu-system-arm
images/zImage 或 build/linux-4.19.16/arch/arm/boot/zImage
images/vexpress-v2p-ca9.dtb 或 build/linux-4.19.16/arch/arm/boot/dts/vexpress-v2p-ca9.dtb
images/rootfs.ext2
上面命令的各参数说明:
-M:指定开发板
-m:指定内存
-nographic 不使用图形化
上面命令的各参数说明:
-S:Do not start CPU at startup (you must type ’c’ in the monitor)
-s:Shorthand for -gdb tcp::1234
, i.e. open a gdbserver on TCP port 1234
此时,linux kernel暂停在启动时,等待gdb来连接它,如下: