qemu_buildroot

此文档属于实践类文档,直接讲解某一个具体的板子对应的qemu操作步骤,不分析qemu的原理。

0. 简述

如果大家想要研究linux kernel driver框架原理?或想要研究linux kernel各种子系统原理?利用qemu摸拟某一个具体的板子,进行研究,是最合适的步骤,下面我一步一步介绍,共分成四步骤:

  1. 下载buildroot源码

  2. 配置、编译buildroot

  3. qemu启动linux kernel

  4. gdb调试linux kernel

1. 下载buildroot源码

目前是2020/02/25,目前最新的稳定版的buildroot是buildroot-2019.11.1,所以此文档用buildroot-2019.11.1

buildroot官网:https://buildroot.org/

2. 配置、编译buildroot

具体详细的buildroot操作,请看buildroot官方手册,下面只用最简单的步骤进行操作:

注意:此处利用arm vexpress板子进行讲解

$ make O=output/qemu_arm_vexpress qemu_arm_vexpress_defconfig // 配置buildroot
$ cd output/qemu_arm_vexpress
$ make                                                        // 编译buildroot

编译完成后,生成如下目录与文件:

各目录与文件的说明:

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使用

3. qemu启动linux kernel

上面命令为了简单容易理解,没有列出对应文件的目录位置,下面一一说明:

  • 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 不使用图形化

4. gdb调试linux kernel

上面命令的各参数说明:

  • -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来连接它,如下:

5. 参考链接

buildroot手册

qemu-system-arm 启动系统

qemu手册

ARM Versatile Express

Last updated

Was this helpful?