<第2章>树莓派4B上运行 uboot

继上篇博文今天那我们来跑跑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开发板

串口线链接:

<第2章>树莓派4B上运行 uboot_第1张图片

 

用USB转串口线接GPIO14 GPIO15

准备SD卡内启动文件:

<第2章>树莓派4B上运行 uboot_第2张图片

框内文件是必备的。config.txt自己编辑即可,保存为config.txt,内容如下:

<第2章>树莓派4B上运行 uboot_第3张图片

 

文件来源:

1):可以去树莓派的github上下载
2):我已经把启动相关的所有文件及u-boot.bin打包上传的CSDN,直接下载即可链接如下:

https://download.csdn.net/download/qq_22182835/12660161

Uboot 版本选择:

去Uboot 官网下一份Uboot源码, 我选的u-boot-2020.01.tar.bz2比较新

http://www.denx.de/wiki/U-Boot/WebHome

编译Uboot:

交叉编译器配置略过 .....

我用的版本:

 

编译Uboot:

解压完成uboot源码包后进入到uboot目录

1):make rpi_4_defconfig

2):make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j2

等待编译完成即可。

<第2章>树莓派4B上运行 uboot_第4张图片

有个警告,网卡驱动DM架构相关,日后我们换2020.07即可暂且先略过这个警告

运行Uboot:

我们把编译生成的u-boot.bin 复制到SD卡,给板卡上电等待启动Uboot

<第2章>树莓派4B上运行 uboot_第5张图片

很遗憾,Uboot并没有跑起来,
小朋友!是不是有很多???
EEPROM里的固件坏了?板卡下电,拔卡,重新给板卡上电,绿灯有闪烁,固件没坏!
SD卡控制器初始化有问题?读不到u-boot.bin文件?看打印信息,start4.elf 都跑起来了,SD卡控制器没问题!
那只能说明u-boot.bin有问题 !还也许是其他问题!或许是u-boot.bin已经跑起来了,串口没有使能,或许串口配置的有问题,来看一看配置吧。

首先check uboot下的配置文件.config ! 

问题出现了。。。

<第2章>树莓派4B上运行 uboot_第6张图片

 

CONFIG_OF_CONTROL=y   开启设备树

CONFIG_DEFAULT_DEVICE_TREE=" "并没有指定dts文件 

CONFIG_OF_BOARD=y       不知道什么意思,看看帮助文档吧

doc/README.fdt-control 里描述如下:

<第2章>树莓派4B上运行 uboot_第7张图片

 

大概意思是配置了该选项 应该事先准备好DTB,至少在uboot运行前准备好,然后传给uboot。

现在问题已经定位清楚了,我们缺少DTB文件。

找了一圈,uboot里没有PRI 4B的设备树文件,linux 内核里倒是有,我们还是先用树莓派拍官方提供的DTB吧!

去GitHub下载后放入sd卡

<第2章>树莓派4B上运行 uboot_第8张图片 下载比较慢,也可下载我用的,链接博文开头已经给出。

板卡插卡后,上电,等待uboot启动。。。

<第2章>树莓派4B上运行 uboot_第9张图片

 

问题又来了,板卡明明是8G内存,到Uboot里只剩下4G了,剩下4G内存被哪里吃掉了?

再次check uboot的配置文件.config,默认配置bank数是2,应该是4G内存板卡的配置,我的猜想

<第2章>树莓派4B上运行 uboot_第10张图片

 

把bank数配置成4试试,果然被吃的内存又回来了

<第2章>树莓派4B上运行 uboot_第11张图片

 

至此uboot已经在RPI 4B的板卡上run起来了!!!

下篇我们再说说 通过Uboot启动linux kernel。

 

你可能感兴趣的:(树莓派,嵌入式,树莓派,u-boot)