继上篇博文今天那我们来跑跑Uboot,用本章来记录下RPI 4B板卡运行Uboot的过程。
Linux ubuntu 4.15.0-107-generic #108~16.04.1-Ubuntu SMP Fri Jun 12 02:57:13 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
树莓派4B Raspberry Pi 4代B 8G开发板
用USB转串口线接GPIO14 GPIO15
框内文件是必备的。config.txt自己编辑即可,保存为config.txt,内容如下:
1):可以去树莓派的github上下载
2):我已经把启动相关的所有文件及u-boot.bin打包上传的CSDN,直接下载即可链接如下:
https://download.csdn.net/download/qq_22182835/12660161
去Uboot 官网下一份Uboot源码, 我选的u-boot-2020.01.tar.bz2比较新
http://www.denx.de/wiki/U-Boot/WebHome
交叉编译器配置略过 .....
我用的版本:
解压完成uboot源码包后进入到uboot目录
1):make rpi_4_defconfig
2):make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j2
等待编译完成即可。
有个警告,网卡驱动DM架构相关,日后我们换2020.07即可暂且先略过这个警告
我们把编译生成的u-boot.bin 复制到SD卡,给板卡上电等待启动Uboot
很遗憾,Uboot并没有跑起来,
小朋友!是不是有很多???
EEPROM里的固件坏了?板卡下电,拔卡,重新给板卡上电,绿灯有闪烁,固件没坏!
SD卡控制器初始化有问题?读不到u-boot.bin文件?看打印信息,start4.elf 都跑起来了,SD卡控制器没问题!
那只能说明u-boot.bin有问题 !还也许是其他问题!或许是u-boot.bin已经跑起来了,串口没有使能,或许串口配置的有问题,来看一看配置吧。
首先check uboot下的配置文件.config !
问题出现了。。。
CONFIG_OF_CONTROL=y 开启设备树
CONFIG_DEFAULT_DEVICE_TREE=" "并没有指定dts文件
CONFIG_OF_BOARD=y 不知道什么意思,看看帮助文档吧
doc/README.fdt-control 里描述如下:
大概意思是配置了该选项 应该事先准备好DTB,至少在uboot运行前准备好,然后传给uboot。
现在问题已经定位清楚了,我们缺少DTB文件。
找了一圈,uboot里没有PRI 4B的设备树文件,linux 内核里倒是有,我们还是先用树莓派拍官方提供的DTB吧!
去GitHub下载后放入sd卡
板卡插卡后,上电,等待uboot启动。。。
问题又来了,板卡明明是8G内存,到Uboot里只剩下4G了,剩下4G内存被哪里吃掉了?
再次check uboot的配置文件.config,默认配置bank数是2,应该是4G内存板卡的配置,我的猜想
把bank数配置成4试试,果然被吃的内存又回来了
至此uboot已经在RPI 4B的板卡上run起来了!!!
下篇我们再说说 通过Uboot启动linux kernel。