此文参考了以下文章:
https://blog.csdn.net/weixin_42233878/article/details/84980951
个人使用的编译环境为ubuntu1904 64位
我的目的是修改树莓派的uboot代码并且看下深入阅读,最后研究实现U盘启动,我会一一记录下来。(现在还没有人弄出来,我研究研究说不定能弄出来)
1、下载最新的uboot代码:https://ftp.denx.de/pub/u-boot/u-boot-2019.10-rc4.tar.bz2
2、解压并进入uboot目录:tar -xf u-boot-2019.10-rc4.tar.bz2
3、查看uboot对于树莓派4b的支持情况:
cd u-boot-2019.10-rc4/
ls config/|grep rpi
结果如下:
rpi_0_w_defconfig
rpi_2_defconfig
rpi_3_32b_defconfig
rpi_3_b_plus_defconfig
rpi_3_defconfig
rpi_4_32b_defconfig 32位启动配置
rpi_4_defconfig 64位启动配置
rpi_defconfig
说明uboot已经完成了对于树莓派的支持(支持得好还是不好未知,后面阅读uboot代码的时候我们才知道)
4、安装32位和64位编译工具链(我比较懒,源码编译安装不适合我这种懒人,直接在线安装)
sudo apt-get install gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu
5、配置uboot工具链生成64位的 (32位就是个弟弟,有时候多玩玩64位的吧)
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
(32位就改成:export CROSS_COMPILE=arm-linux-gnueabi-)
6、编译生成配置文件 .config:make rpi_4_defconfig
如果编译出错,那么自己百度吧,一般错误是xxx:not found,直接先试下:sudo apt-get install xxx 不行就百度。
7、编译生成新uboot:make -j4
8、测试新uboot可不可用:
(1)确保你当前装的是64位系统,并且可以正常启动的。
(2)64位系统可以使用这个:https://github.com/openfans-community-offical/Debian-Pi-Aarch64
(3)把sd插入电脑,把uboot.bin放到sd卡的/boot目录,并在config.txt中添加一行:kernel=u-boot.bin
(4)插回树莓派看看能不能启动,能启动的话,再free -m看看内存大小,这个uboot版本内存只支持1G,也就是说你是2G或者4G版本的话,内存会被限制。
或者呢,自己编译个32位的看看能不能启动,如果不能启动,说明我们生成的uboot没有问题。
接下来就是阅读uboot代码,并且加打印,GPIO_8和10脚来查看树莓派打印内容。
9、树莓派3的启动过程:https://github.com/Yradex/RaspberryPi3_OS/wiki/树莓派-3-启动过程概述
下一篇详解4的启动过程,等我睡醒来更新!!!!!