<第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/

大概翻译如下:

鉴于鄙人英语水平有限,只能译个大概,如有错误评论区指正,多谢看官!!!
如果你的板卡没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 先跑起来!!!下班回家。。。

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的pandas库来将XML数据转化为Excel格式,以下是示例代码: ```python import pandas as pd from xml.etree import ElementTree # 读取XML数据 xml_data = '''<?xml version="1.0" encoding="UTF-8"?> <list> <item> <userId>3f2bc360-adc1-4adf-bbd9-092939603af8</userId> <eid>xuyang</eid> <displayName>yang xu</displayName> <type>registered</type> </item> <item> <userId>5d7713fd-8133-40a8-94ad-3a145ed44df8</userId> <eid>yisirui</eid> <displayName>sirui yi</displayName> <type>registered</type> </item> <item> <userId>5dcaf2c0-fb7c-47fe-99bc-df21ede9011b</userId> <eid>xiaosun</eid> <displayName>xuyang sun</displayName> <type>registered</type> </item> <item> <userId>7ea060ff-d6e4-4552-9682-6483eb692a8f</userId> <eid>alex</eid> <displayName>alex Yu</displayName> <type>registered</type> </item> <item> <userId>e190e122-96ef-4b43-9b9e-11a08400c87f</userId> <eid>wanglinkai</eid> <displayName>cui xiai</displayName> <type>registered</type> </item> <item> <userId>e3d6d07e-7a34-47c0-969f-9401ddeab675</userId> <eid>cuikairui</eid> <displayName>kairui cui</displayName> <type>registered</type> </item> <item> <userId>f304a0e1-e0a9-4518-9099-4ef5c2cdb22f</userId> <eid>xuchenxi</eid> <displayName>chenxi xu</displayName> <type>registered</type> </item> </list>''' root = ElementTree.fromstring(xml_data) # 将XML数据转化为DataFrame data = [] for item in root.findall('item'): userId = item.find('userId').text eid = item.find('eid').text displayName = item.find('displayName').text type_ = item.find('type').text data.append([userId, eid, displayName, type_]) df = pd.DataFrame(data, columns=['userId', 'eid', 'displayName', 'type']) # 将DataFrame保存为Excel文件 df.to_excel('data.xlsx', index=False) ``` 运行该代码后,会在当前目录下生成一个名为"data.xlsx"的Excel文件,其中包含了XML数据中的各个字段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值