<第1章>树莓派4B启动过程

树莓派的GitHub

首先上树莓派的github 里面能找到关于RPI 4B板卡的资源

https://github.com/raspberrypi

树莓派4B启动过程:

玩一颗SOC首先要了解启动过程,做到知彼,

1):当PRI 4B上电启动时,ARM Cortex-A72 Core处于standby状态,VideoCore IV GPU Core负责启动系统。boot的启动都是由GPU code来完成。GPU Loade片上ROM code 并执行,ROM Code主要功能为初始化 SD host controller,为后续读取sd卡上的文件做准备。

2):在RPI 4B以前的板卡如3B/3B+ 板卡会把一个名为bootcode.bin 的bin文件放在SD卡内,SD host controller初始化完成后ROM Code加载bootcode.bin并执行此文件,

3):bootcode.bin 负责加载sd卡上的start.elf文件(RPI 4B是start4.elf)并执行

4):start.elf负责解析sd卡上的config.txt 加载sd卡上的kernel.img 到内存指定地址,然后CPU结束standby状态开始执行内核,bootcode.bin start.elf 文件是树莓派官方提供的,不开源(这些不开源的文件下篇博客会指定地址下载)

RPI 4B板卡与之前的板卡区别在于,USB被挂到了PCIE总线上,还有其他硬件的升级,导致了4B启动过程和SDRAM初始化比之前的板卡都要复杂的多,把这些功能都做到ROM里增加了代码复杂度,引入bug的风险大大提升,
所以4B在芯片内部增加了一块EEPROM来规避风险,将复杂的初始化程序放在了EEPROM里,这样减少了ROM code的工作量,方便维护,降低风险,并把bootcode.bin的功能也放进了EEPROM,所以RPI 4B板卡SD卡启动时,卡内不需要bootcode.bin

既然内部集成EEPROM,可读写,这就有内部固件损坏的可能。

如何鉴别EEPROM固件已经损坏?

树莓派官网介绍了怎么检查EEPROM 固件是否完好,和Recovery
 https://www.raspberrypi.org/downloads/

<第1章>树莓派4B启动过程_第1张图片

大概翻译如下:

鉴于鄙人英语水平有限,只能译个大概,如有错误评论区指正,多谢看官!!!
如果你的板卡没boot起开,可能你的EEPROM 固件已经损坏。拔出SD卡,设备下电,再上电。绿色LED不闪烁,表明EEPROM已经损坏。

刷EEPROM:

一旦EEPROM损坏,去以下链接下载Recovery固件,下载速度会比较慢
 https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2020.07.16-138a1

恢复方法:

把下载的压缩包解压到一张fat32 格式的空卡上,然后插入板卡上电,绿色LED快速闪烁,等20S 就OK了,具体步骤参考压缩包里的README

下篇博文我们来用RPI 4B把Uboot 先跑起来!!!下班回家。。。

 

你可能感兴趣的:(树莓派)