Skip to content

树莓派 4启动 EEPROM

树莓派 4具有 SPI 连接的 EEPROM (4MBits/512KB),其中包含用于启动系统的代码,并替换了先前在 SD 卡的启动分区中找到的" bootcode.bin"。请注意,如果 Pi 4中 SD 卡的启动分区中存在" bootcode.bin",则将其忽略。

引导诊断

如果在引导过程中发生错误,则将通过绿色 LED 显示错误代码。较新版本的引导程序将显示诊断消息,该消息将同时显示在两个 HDMI 显示屏上。

更新引导程序

树莓派成像仪

使用默认设置将引导加载程序更新为最新版本的最简单方法是使用树莓派 Imager将引导恢复映像安装到备用 SD 卡上。

选择"选择操作系统->其他实用程序映像-> 树莓派 4 EEPROM引导恢复"

树莓派 OS还保持 EEPROM 的最新状态:在下一次启动树莓派 4时,将应用新的 EEPROM 映像。

从树莓派 OS更新

在正常的" apt update"," apt full-upgrade"周期内会引导 Bootloader 更新,这意味着您将在正常更新期间获得新功能和错误修复。

引导加载程序更新由 rpi -eeprom软件包提供的 rpi -eeprom-update服务执行。如果有新的生产版本可用,此服务在引导时运行,并在下次重新引导时更新引导加载程序。该服务会自动将当前的引导设置迁移到新的引导加载程序版本。

要更新系统,包括引导程序:

sudo apt update
sudo apt full-upgrade
 sudo 重启

手动检查是否有更新

不带任何参数运行rpi-eeprom-update命令表示是否需要更新。如果固件目录(通常为/lib/firmware/raspberrypi/bootloader/critical)中的最新文件版本比当前引导加载程序报告的版本新,则需要更新。 /lib/firmware/raspberrypi/bootloader下的映像是 rpi -eeprom软件包的一部分,仅通过 apt upgrade更新。

sudo rpi-eeprom更新

如果有更新,则可以使用以下方法安装:

 sudo  rpi -eeprom-update -a
 sudo 重启

读取当前的 EEPROM 版本

vcgencmd bootloader_version

更新 EEPROM 配置

引导加载程序 EEPROM 映像包含一个嵌入式配置文件,用于定义引导行为(例如,在 SD ,网络和 USB 引导之间进行选择)。 " rpi-eeprom-config"工具可用于修改 EEPROM 映像文件中的嵌入式配置文件。

有关配置文件的详细信息,请参见Bootloader配置页

读取当前的 EEPROM 配置

要查看引导程序在引导时使用的配置文件,请运行 rpi -eeprom-config或 vcgencmd bootloader_config。

从 EEPROM 映像读取配置文件

要从 EEPROM 映像文件中读取配置文件:

rpi-eeprom-config pieeprom.bin

编辑当前的引导程序配置

以下命令将当前 EEPROM 配置加载到文本编辑器中。当关闭编辑器时,rpi-eeprom-config将更新的配置应用于最新的可用 EEPROM 版本,并使用rpi-eeprom-update安排系统重启时的更新:

 sudo -E rpi-eeprom-config --edit
 sudo 重启

如果更新的配置文件相同或为空,则不进行任何更改。

编辑器由环境变量 EDITOR 选择。

应用保存的配置文件

以下命令将boot.conf应用于最新的可用 EEPROM 映像,并使用rpi-eeprom-update来计划系统重启时的更新。

 sudo  rpi -eeprom-config --apply boot.conf
 sudo 重启

低级命令

更新 EEPROM 映像中的配置

以下命令读取pieeprom.bin并将配置文件替换为boot.conf的内容。结果被写入new.bin

rpi-eeprom-config --config boot.conf --out new.bin pieeprom.bin

有关高级选项的更多信息,请运行rpi-eeprom-config -h

更新 Bootloader EEPROM

以下内容将导致下次重新引导系统时对引导加载程序 EEPROM 进行更新。

# -d指示 rpi -eeprom-update使用 new .bin中的 EEPROM 配置而不是
# 用 vcgencmd 引导程序中的当前配置替换它。
 sudo  rpi -eeprom-update -d -f new.bin

有关高级选项的更多信息,请运行rpi-eeprom-update -h

recovery.bin开机时,BCM2711 ROM在 sd 卡上引导分区的根目录中查找名为" recovery.bin"的文件。如果找到有效的" recovery.bin",则 ROM 将执行此操作,而不是 SPI EEPROM映像。该机制可确保始终使用出厂默认设置将引导加载程序 SPI EEPROM重置为有效映像。

EEPROM更新文件

文件名 目的
recovery.bin VideoCore EEPROM恢复可执行文件
pieeprom.upd 引导加载程序 EEPROM 映像
pieeprom.bin 引导加载程序 EEPROM 映像-与 pieeprom .upd相同,但更改了 recovery .bin的行为
pieeprom.sig 引导加载程序映像的 sha256 校验和(pieeprom.upd/pieeprom.bin)
vl805.bin VLI805 USB固件 EEPROM 映像-在 1 .4板修订版中被忽略,该映像没有专用的 VLI EEPROM
vl805.sig vl805.bin的 sha256 校验和

如果引导加载程序更新映像名为" pieeprom.upd",则" recovery.bin"会将其自身重命名为" recovery.000"并重置 CPU 。由于不再存在" recovery.bin",因此 ROM 从 SPI EEPROM加载新更新的引导程序,并且操作系统将正常引导。 如果引导加载程序更新映像称为" pieeprom.bin",则在更新完成后," recovery.bin"将停止。成功后,HDMI输出将变为绿色,并且绿色的活动 LED 会快速闪烁。否则,HDMI输出将为红色,并且通过活动 LED 显示错误代码.sig文件应只包含相应图像文件的 sha256 校验和(以十六进制表示)。将来可能会添加其他字段。 * BCM2711 ROM不支持从 USB 大容量存储器或 TFTP 加载recovery.bin。取而代之的是,较新版本的引导加载程序支持自我更新机制,其中 SPI 引导加载程序能够重新刷新 SPI EEPROM本身。请参见(引导程序配置)[bcm2711_bootloader_config.md]页面上的" ENABLE_SELF_UPDATE"。 临时 EEPROM 更新文件在启动时由rpi-eeprom-update服务自动删除。

固件发布状态

固件发行状态对应于引导加载程序固件映像的特定子目录(//lib/firmware/raspberrypi/bootloader/...),并且可以更改以选择其他发行流。默认情况下,树莓派 OS仅选择关键更新(安全修复或主要硬件兼容性更改),因为大多数用户不使用备用启动模式(TFTP,USB等)

严重-默认-很少更新 稳定-在新功能/高级功能已通过 Beta 测试时更新。 * beta-首先在这里测试新功能或实验性功能。

由于发布状态字符串只是一个子目录名称,因此可以创建自己的发布流,例如固定版本或自定义网络启动配置。

更改固件版本

您可以通过编辑/etc/default/rpi-eeprom-update文件并将FIRMWARE_RELEASE_STATUS条目更改为适当的流来更改更新期间将使用的发行流。

有关" rpi-eeprom-update"配置文件的更多信息,请运行" rpi-eeprom-update -h"。

禁用自动更新

如果您希望控制何时应用更新,可以禁用rpi-eeprom-update系统服务。

# 禁用
sudo systemctl掩码 rpi -eeprom-update

# 再次启用
sudo systemctl取消屏蔽 rpi -eeprom-update

EEPROM配置文件中的" FREEZE_VERSION"选项可用于向" rpi-eeprom-update"服务指示不应在此板上更新 EEPROM 。

EEPROM写保护

对树莓派 4 Model B上的 EEPROM 进行写保护需要进行软件更改和小板修改。

仅建议高级用户或工业客户使用。

默认情况下,引导加载程序和 VL805 SPI EEPROM均不受写保护。

如果在" config.txt"中定义了" eeprom_write_protect = 1",则" recovery.bin"将定义写保护区域,以使所有两个 EEPROM 都被写保护。然后,当写保护(/WP)引脚被拉低时,写保护区域配置将变为只读。如果定义了" eeprom_write_protect = 0",则清除写保护区域。如果未定义" eeprom_write_protect",则不会修改写保护位。

eeprom_write_protect属性需要引导加载程序版本 2020 -07-16或更高版本中的recovery.bin这些 EEPROM 上的"/WP"引脚仅防止写状态寄存器的非易失性位。因此,除了将"/WP"拉低之外,还必须定义写区域。 在尝试更改写保护状态时,不得将"/WP"引脚拉低。 通过将测试点 5 (TP5)接地,可以将 EEPROM 的/WP引脚拉低。*引导加载程序自我更新机制还支持eeprom_write_protect属性。但是,引导加载程序必须已经升级到2020-07-16或更高版本,然后才能识别eeprom_write_protect属性。 N.Bflashrom不支持清除写保护区域,如果定义了写保护区域,将无法更新 EEPROM 。

发行说明