为树莓派4B编译uboot
1.编译环境
- OS
Ubuntu 20.04 - uboot源码
https://github.com/u-boot/u-boot.git
2.安装交叉编译工具链以及相关库
sudo apt install gcc-aarch64-linux-gnu make bison flex libssl-dev
3.构建树莓派4的make配置并编译
export CROSS_COMPILE=aarch64-linux-gnu-
make distclean
make rpi_4_defconfig
make -j
如果编译过程没有报错,则会在根目录下生成u-boot.bin
文件。如有报错,搜索错误代码解决。
4.拷贝文件,上机测试
- 需要将vFAT格式的SD卡,推荐使用树莓派官方的镜像制作工具,执行擦除操作即可,比较方便。
- 修改config.txt文件
如果你给树莓派安装过官方系统的话,config.txt
文件就在官方镜像的boot
分区下,使用任意编辑器在其中加入这行文字保存即可。
kernel=u-boot.bin
如果需要用串口查看效果的话再加入下面这一行:
enable_uart=1
- 将启动u-boot需要的文件放入SD卡根目录
这些文件在官方镜像的boot分区下都能找到,直接复制即可,唯一需要注意的是别漏了u-boot.bin
。
bcm2711-rpi-4-b.dtb
bootcode.bin
config.txt
fixup4.dat
start4.elf
u-boot.bin
官方镜像boot
分区内的文件如图所示。
4. 板子插入SD卡,上电测试。
屏幕看到以下图像即成功启动uboot
启动成功时串口输出如下
U-Boot 2022.04-rc3-00046-g0444cbbe77 (Mar 06 2022 - 03:43:01 -0800)
DRAM: 7.1 GiB
RPI 4 Model B (0xd03114)
Core: 202 devices, 13 uclasses, devicetree: board
MMC: mmcnr@7e300000: 1, mmc@7e340000: 0
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1...
In: serial
Out: vidconsole
Err: vidconsole
Net: eth0: ethernet@7d580000
PCIe BRCM: link up, 5.0 Gbps x1 (SSC)
starting USB...
Bus xhci_pci: Register 5000420 NbrPorts 5
Starting the controller
USB XHCI 1.00
scanning bus xhci_pci for devices... 2 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 0
U-Boot>
至此大功告成。
因笔者能力经验有限,文中所述可能存在错误,欢迎各位读者指正。
参考:
- 在树莓派4(Raspberry Pi 4 B)上运行u-boot - zhangpf的文章 - 知乎
https://zhuanlan.zhihu.com/p/92689086 - https://www.beyondlogic.org/compiling-u-boot-with-device-tree-support-for-the-raspberry-pi/
- 树莓派4B,uboot启动Raspberry Pi OS - 嵌入式干饭人的文章 - 知乎
https://zhuanlan.zhihu.com/p/365748456
– – – – – –
原创不易,转载请注明出处。