<第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初始化完成后加载bootcode.bin并执行此文件,
3):bootcode.bin 负责加载sd卡上的start.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/
大概翻译如下:
鉴于鄙人英语水平有限,只能译个大概,如有错误评论区指正,多谢看官!!!
如果你的板卡没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 先跑起来!!!下班回家。。。