Linux利器:QEMU!用它模拟开发板能替代真开发板?
不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我!
你可以把它当作一块召之即来的开发板,在上面运行 U-Boot、Linux Kernel、甚至 Ubuntu 等各种软件和操作系统。
有时候我们想体验一下 mainline 上最新的 U-Boot 或者 Linux Kernel,可是却发现手边没有合适的板子,或者手边的板子搭载的 U-Boot 和 Linux Kernel 版本都比较低,这时候 QEMU 可以帮你迅速实现这一愿望。
我们安装的是 Arm 版本的 QEMU,如果直接在 Ubuntu 上用sudo apt install qemu-system-arm命令安装的话,得到的 QEMU 版本比较旧,最好直接通过源码去编译。
我在 Ubuntu 18.04 系统上发现系统默认安装的 QEMU 在图形模式(不带 -nographic 参数)下无法启动。
是不是有很多熟悉的开发板都在里面,i.MX、EXYNOS 这些知名的芯片都有包含。
第一步:U-Boot 代码下载:
git clone https://gitlab.denx.de/u-boot/u-boot.git
vexpress_ca9x4_defconfig
第二步:编译
make vexpress_ca9x4_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- all
git clone git://git.buildroot.net/buildroot
arm-linux-gnueabihf/libc/usr/include/linux/version.h
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
.
arm vexpress_defconfig =
在 Kernel hacking->printk and dmesg options选项中选中第一项,这样打印的内核 log 前面会附带有时间戳信息,比较好看。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
dd if=/dev/zero of=sd.img bs=4096 count=4096
mkfs.vfat sd.img
sudo mount sd.img /mnt/ -o loop,rw
sudo cp arch/arm/boot/zImage /mnt/
sudo cp arch/arm/boot/dts/vexpress-v2p-ca9.dtb /mnt/
sudo umount /mnt
sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel ../uboot-imx/u-boot-nographic -sd sd.img
fatload mmc 0:0 0x62008000 zImage
fatload mmc 0:0 0x64008000 vexpress-v2p-ca9.dtb
bootz 0x62008000 - 0x64008000
评论