首先下载uboot源码包,UBOOT源码下载地址:http://ftp.denx.de/pub/u-boot/。这里取版本u-boot-2018.09.tar.bz2。
配置好指定的交叉编译工具链,工具链的制作方法,请参考文章——ARM交叉编译工具链的制作 。
进入Uboot的根目录,执行如下命令编译UBOOT:
1、生成配置文件, make ARCH=arm vexpress_ca9x4_defconfig
2、编译Uboot, make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- -j4
编译成功,图下图所示,
现在准备启动qemu模拟器,运行u-boot。由于我们之前选择的配置文件是vexpress_ca9x4_defconfig,即应该是arm cortex-a9的核。我们使用qemu的时候一定要选对参数模型。可输入如下命令启动uboot,
qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot --nographic
参数-M 机器模型 -m 运行内存MB -kernel 运行的内核程序(此处后面可以换成linux内核) --nographic 不输出图像窗口,直接通过串口或者命令行控制台输出打印信息。
其实还可以加个cpu模型,-cpu,具体选择什么cpu,qemu支持什么cpu,可以通过如下命令查看:
qemu-system-arm -M vexpress-a9 -cpu help
Available CPUs:
arm1026
arm1136
arm1136-r2
arm1176
······
下面执行具体的qemu模拟启动uboot的命令:
qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 256 -kernel u-boot --nographic
模拟器把Uboot运行起来后,和真实的物理板打印信息一致,可以看到下面的打印信息:
U-Boot 2018.09-rc3-00026-g4cdeda5 (Oct 29 2018 - 06:46:26 -0700)
DRAM: 256 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC: MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: smc911x-0
Hit any key to stop autoboot: 0
=>
怎么样是不是感觉很熟悉。这样就可以脱离物理单板学习研究Uboot了。
如果需要退出qemu,可以使用组合键,ctrl+a然后再按下x,就可以退出qemu模拟器了。