背景
最近在看一些uboot相关的内容,有一些疑惑,但是暂时我又没有硬件板子,我就准备用QEMU模拟调试。
uboot是什么东西?
uboot(universal bootloader)是一种可以用于多种嵌入式CPU得BootLoader程序,换言之,uboot是bootloader的一个子集
本人电脑系统
Win10 + WSL2 (ubuntu 20.04)
Win10安装QEMU,WSL2用来编译uboot镜像
一、WSL2编译uboot镜像
1.1 下载uboot代码
git clone https://github.com/u-boot/u-boot
1.2 编译uboot源码
因为我要编译arm64,所以用这个指令,缺少的工具链,请自行安装sudo apt-get install gcc-aarch64-linux-gnu
。
export CROSS_COMPILE=aarch64-linux-gnu-
make qemu_arm64_defconfig
make
编译后的uboot代码根目录会有uboot.bin这个二进制程序,也就是uboot镜像了。
二、Win10安装QEMU
1.1 下载QEMU
window x64 qemu包下载地址:https://qemu.weilnetz.de/w64/
1.2 安装QEMU
双击安装即可,最重要的是记住安装选项,打开System emulation中的下落项选择需要模拟的系统x86_64,arm,riscv64,riscv32等系统,尽量安装默认,全部勾选即可
1.3 配置环境变量
把QEMU的安装路径添加到系统的环境变量中。
1.3 在Ubuntu安装QEMU
如果你是单独ubuntu系统,可以参考这个链接https://blog.csdn.net/Q1302182594/article/details/52134673
三、QEMU启动uboot
执行一下命令即可,u-boot.bin
就是编译uboot生成的二进制文件。
qemu-system-aarch64.exe -machine virt -nographic -cpu cortex-a57 -bios u-boot.bin
启动后的界面,类似linux的控制台,我尝试执行了一下ls
四、Clion导入源码
安装compiledb
pip install compiledb
用这个指令替代1.2 中的最后一步make,将在根目录下生成一个compile_commands.json
compiledb make
用Clion以项目的方式打开compile_commands.json即可。
总结
接下来你就可以方便的修改调试uboot的代码了,学习uboot的代码挺有意思的。
参考资料
https://u-boot.readthedocs.io/en/latest/build/index.html
https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-arm.html
网友评论