编译2022年最新的U-Boot源码,并用QEMU模拟器运行
- Gitee源码和工程地址:才鲸嵌入式 / 嵌入式QEMU教程
- CSDN文章地址:项目介绍:嵌入式QEMU教程
1)直接编译Linux源码并运行
1、编译U-Boot并在QEMU中运行
-
网上能搜到的QEMU + U-Boot已有的示例都是使用的ARM官方的开发板配置:如vexpress_ca9x4_defconfig、qemu_arm_vexpress_defconfig、versatile_defconfig,第一阶段我也使用相同的配置,后续我会在树莓派2b的硬件上尝试。
-
编译好的u-boot文件放在本仓库根目录/linux/文件夹下,可以直接运行查看效果
-
当前硬件为ARM Versatile™ Express开发板系列的CoreTile Express主板。
- 开发板资料:express_ca9x4 uboot分析
-
我使用最新版本的U-Boot官方源码,系统使用的是VMware Player Ubuntu18.04。当前下载的U-Boot版本是v2023.01-rc2,地址:Gitee 极速下载 / u-boot Prepare v2023.01-rc2,文件有33M,要查看所有版本的话则进入https://gitee.com/mirrors/u-boot/tags
- 当前VM Player最新的版本是17,https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/17_0 ,但我因为之前已经安装了16,所以就用这个。没用过VM的建议先用VMware Workstation的破解版,网上的教程更多,但是Player和VM的使用方法是一样的,如果遇到了问题可以直接按VM搜到的解决办法来处理。
- 我在32位Ubuntu16.04上编译最新的U-Boot有报错,中文和外文网站搜索都未解决问题,见于16.04的版本官方也早已不支持了,现在重装为64位的Ubuntu18.04
- Ubuntu下载请找国内源下载,16.04是最后一个提供32位系统的版本,不用配置32位的依赖库。
-
参考网址
- qemu启动uboot
- QEMU 实验(二): 通过 u-boot 启动 kernel
- QEMU模拟arm u-boot/linux【转】
- Linux内核实战应用:编译uboot并灵活使用qemu
-
如果使用虚拟机,则下载安装VMware Player,过程略。
-
下载并安装64位Ubuntu 18.04,因为我的笔记本电脑是2012年买的,配置不行,所以我在虚拟机中用老系统能跑的比较快;Ubuntu 18.04系统会持续支持到2028年,不用担心里面的软件过时。
- 不要从Ubuntu官方下载,从各种大学的镜像中下载,速度会更快,我下载的地址是 ubuntu-18.04.6-desktop-amd64.iso,如果要下载其它的版本,如Ubuntu 22.04,则进入http://mirrors.ustc.edu.cn/ubuntu-releases/ 对应的文件夹中,下载.iso文件;不管是Intel芯片还是AMD芯片,iso的文件尾都是amd64.iso,都可以用。
- 虚拟机中安装Ubuntu18.04的过程略;为了在命令行中进入桌面方便,我选择先安装英文系统,然后再安装中文输入法;安装要花几十分钟,安装的过程中要不联网,否则安装的过程中会更新程序,速度非常慢。
- 如果你用的笔记本,Ubuntu18虚拟机中使用不了触摸板的手势功能,不能双指滚动,忍耐一下。
- Ubuntu18.04选了中文之后,默认的软件源为国内源,但还是需要指定为具体的哪个源,例如指定阿里云的源;更换国内源后更新一下系统。
- 不要按屏幕下方VMware的提示使用CD的方式安装安装VMware Tools,而要在Ubuntu中用命令行直接安装;这样才能全屏和与Windows拖动文件;安装过程略。
- VMware 16安装的Ubuntu18.04 系统,无法在Windows和Ubuntu之间直接自由拖拽复制文件
- 如果安装系统时选择的是英语,则安装中文输入法。
- Ubuntu 18.04 配置ibus中文拼音输入法(超简单)
- 如何在ubuntu18.04中设置使用中文输入法
- Ubuntu18.04 上如何使用中文输入法?
- 取消窗口合并:ubuntu gnome下, alt + tab切换窗口时,不要把同组的窗口合并的配置方法+解决ubuntu无法使用root用户启动Google Chrome浏览器
-
参考网址:
-
Ubuntu 国内镜像下载地址大全
-
转载:ubuntu各个版本的发行时间和停止支持的时间,更新到最新版和代号。
# 因为我当前不编译Linux PC下的程序,所以我直接将整个环境都配成交叉编译的
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabihf-
# 增加交叉编译器的路径,修改成你自己解压的路径
export PATH=$PATH:/home/jim/Desktop/tools/arm-gnu-toolchain-11.3/bin
- 编译uboot时报错发现未安装而需要安装的软件:
- sudo apt-get install make
- sudo apt-get install gcc
- sudo apt-get install bison
- sudo apt-get install flex
- sudo apt-get install libssl-dev
- 如果lib/display_options.c:59:9: 编译器内部错误: 非法指令报错时将该行改成:
unsigned long d = 1000000000;//1e9;
- 编译完成后会在uboot源码目录下生成u-boot文件,将其用QEMU运行即可。
- 编译好的u-boot文件我已经放在另一个仓库中,地址为:https://gitee.com/langcai1943/linux_kernel_u-boot_busybox_code_comments/bin/v1.0.0
jim@DESKTOP-SVP3BEM MSYS /d
$ qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot --nographicU-Boot 2023.01-rc2 (Nov 25 2022 - 17:27:26 +0800)DRAM: 256 MiB
WARNING: Caches not enabled
Core: 18 devices, 10 uclasses, devicetree: embed
Flash: 64 MiB
MMC: mmci@5000: 0
Loading Environment from Flash... *** Warning - bad CRC, us
ing default environment
......