树莓派硬件
介绍
Raspberry Pi 电脑分为几个不同的系列:
- 单板计算机(SBCs)。旗舰级的树莓派系列在信用卡大小的机身内,集成了高性能硬件、完整的Linux操作系统以及多种通用接口。
- 键盘计算机(X00)。树莓派键盘计算机将单板计算机硬件、完整的Linux操作系统及常用接口整合于紧凑的键盘外壳内。
- Zero。采用极简设计的小型经济型机型,提供完整的Linux操作系统和基本接口,具有低功耗特性。
- 计算模块(CM)。 专为嵌入式及工业应用设计的板卡,提供与旗舰级单板计算机相同的硬件配置,但采用更小尺寸且无板载接口。需连接独立底板以获取必要端口和引脚。
- Pico(微控制器)。小巧多功能板卡,不运行Linux系统。程序直接刷写至板载存储器,无需可移除存储介质。Pico微控制器适用于实时控制与轻量级嵌入式项目。
旗舰级单板计算机(SBC)系列
Model B 表示有以太网端口。 Model A 表示成本较低的型号,外形较小,没有以太网端口,RAM 较小,USB 端口较少,以限制电路板高度。
由于核心SoC停产,树莓派2B的1.1版和1.2版已达到产品生命周期终止(EoL)。官方EoL日期为2025年10月16日。树莓派2B修订版1.3采用相同机械尺寸并搭载BCM2837B0处理器,因此推荐用于现有设计。更多详情请参阅官方停产通知。
| 型号 | SoC | 内存 | GPIO | 接口 |
|---|---|---|---|---|
Raspberry Pi Model B | BCM2835 | 256MB 512MB | 26针GPIO头 |
|
Raspberry Pi Model A | BCM2835 | 256MB | 26针GPIO头 |
|
Raspberry Pi Model B+ | BCM2835 | 512MB | 40针GPIO头 |
|
Raspberry Pi Model A+ | BCM2835 | 256MB 512MB | 40针GPIO头 |
|
Raspberry Pi Model 2B | 1 GB | 40针GPIO头 |
| |
Raspberry Pi Model 3B | 1 GB | 40针GPIO头 |
| |
Raspberry Pi Model 3B+ | BCM2837B0 | 1 GB | 40针GPIO头 |
|
Raspberry Pi Model 3A+ | BCM2837B0 | 512MB | 40针GPIO头 |
|
Raspberry Pi Model 4B | BCM2711 | 1 GB 2 GB 4 GB 8 GB | 40针GPIO头 |
|
Raspberry Pi Model 5 | BCM2712 | 2 GB 4 GB 8 GB 16 GB | 40针GPIO头 |
|
键盘计算机系列(X00)
键盘系列设备采用<X00>形式的型号标识符,其中X代表对应的旗舰单板计算机(SBC)系列设备。例如,树莓派400即为树莓派4的键盘版本。有关树莓派键盘计算机的详细信息,请参阅键盘计算机。
| 型号 | SoC | 内存 | GPIO | 接口 |
|---|---|---|---|---|
Raspberry Pi 400 | BCM2711 | 4 GB | 40针GPIO头 |
|
Raspberry Pi 500 | BCM2712 | 8 GB | 40针GPIO头 |
|
Raspberry Pi 500+ | BCM2712 | 16 GB | 40针GPIO头 |
|
Zero系列
后缀为 H 的型号已将针脚预焊在 GPIO 针脚上。没有后缀 H 的型号不带连接到 GPIO 针座的针座引脚;用户必须手动焊接引脚或安装第三方引脚套件。
所有 Zero 型 号都具有以下连接功能:
- 1 个 microSD 卡插槽
- 1 个微型 HDMI 端口
- 2 个微型 USB 端口(一个用于输入电源,一个用于外接设备)
自原始 Zero 1.3 版起,所有 Zero 型号还包括
- 微型 22 针、0.5 毫米(精细)间距、11.5 毫米宽 CSI(摄像头)端口
| 型号 | SoC | 内存 | GPIO | 无线连接 |
|---|---|---|---|---|
Raspberry Pi Zero | BCM2835 | 512MB | 40针GPIO头(未填充) | 无 |
Raspberry Pi Zero W | BCM2835 | 512MB | 40针GPIO头(未填充) |
|
Raspberry Pi Zero WH | BCM2835 | 512MB | 40针GPIO头 |
|
Raspberry Pi Zero 2 W | RP3A0 | 512MB | 40针GPIO头(未填充) |
|
Raspberry Pi Zero 2 WH | RP3A0 | 512MB | 40针GPIO头(未填充) |
|
Compute Module系列
由于核心SoC停产,树莓派计算模块3(CM3)和计算模块3精简版(CM3Lite)已达到产品生命周期终止(EoL)。官方EoL日期为2025年10月16日。与CM3最接近的替代品是树莓派计算模块3+,其提供相同的机械尺寸、改进的散热设计以及BCM2837B0处理器,因此推荐用于现有设计。对于需要SODIMM规格的新设计,建议选用计算模块4S;其他新设计则推荐计算模块4或计算模块5。更多详情请参阅官方停产通知。
有关树莓派计算模块硬件的更多详细信息,请参阅 计算模块硬件。
| 型号 | SoC | 内存 | 存贮 | 外型尺寸 | 无线连接 |
|---|---|---|---|---|---|
Raspberry Pi Compute Module 1 | BCM2835 | 512MB | 4GB | DDR2 SODIMM | 无 |
Raspberry Pi Compute Module 3 | BCM2837 | 1GB | 0GB (精简版) 4GB | DDR2 SODIMM | 无 |
Raspberry Pi Compute Module 3+ | BCM2837B0 | 1GB | 0GB (精简版) 8GB 16GB 32GB | DDR2 SODIMM | 无 |
Raspberry Pi Compute Module 4S | BCM2711 | 1GB 2GB 4GB 8GB | 0GB (精简版) 8GB 16GB 32GB | DDR2 SODIMM | 无 |
Raspberry Pi Compute Module 4 | BCM2711 | 1GB 2GB 4GB 8GB | 0GB (精简版) 8GB 16GB 32GB | 双 100 针高密度连接器 | 可选:
|
Raspberry Pi Compute Module 5 | BCM2712 | 2GB 4GB 8GB 16GB | 0GB (精简版) 16GB 32GB 64GB | 双 100 针高密度连接器 | 可选:
|
Raspberry Pi Compute Module 0 | RP3A0 | 512MB | 0GB (精简版) 8GB 16GB | 132引脚 39*33mm封装 | 可选:
|
使用 DDR2 SO-DIMM 物理外形尺寸的计算模块与 DDR2 SODIMM 电气规格不兼容。
Pico微控制器
后缀为 H 的型号已将接头引脚预焊接到 GPIO 接头。没有后缀 H 的型号不附带连接到 GPIO 针座的针座引脚;用户必须手动焊接引脚或安装第三方引脚套件。
| 型号 | SoC | 内存 | 存贮 | GPIO | 无线连接 |
|---|---|---|---|---|---|
Raspberry Pi Pico | RP2040 | 264KB | 2MB | 2个20针GPIO头(未填充) | 无 |
Raspberry Pi Pico H | RP2040 | 264KB | 2MB | 2个20针GPIO头 | 无 |
Raspberry Pi Pico W | RP2040 | 264KB | 2MB | 2个20针GPIO头(未填充) |
|
Raspberry Pi Pico WH | RP2040 | 264KB | 2MB | 2个20针GPIO头 |
|
Raspberry Pi Pico 2 | RP2350 | 520KB | 4MB | 2个20针GPIO头(未填充) | 无 |
Raspberry Pi Pico 2 W | RP2350 | 520KB | 4MB | 2个20针GPIO头(未填充) |
|
有关 Raspberry Pi Pico 型号的更多信息,请参阅 Pico 文档。
原理图和机械图
各种树莓派板版本的原理图:
树莓派5
树莓派4B
树莓派3B+
树莓派3A+
树莓派3B
树莓派2B
树莓派1B+
树莓派3A+
树莓派3A+的机械图也适用于树莓派1A+。
树莓派1 型号 A+
树莓派Zero
树莓派Zero W
树莓派Zero 2W
测试焊盘位置
树莓派Zero 2W有许多在电路板生产过程中使用的测试焊盘位置。
原点:左下角ORIGIN所示位置
| 标签 | 功能 | X(距离原点毫米) | Y(距离原点毫米) |
|---|---|---|---|
| STATUS_LED | 电源状态(低=ON) | 5.15 | 8.8 |
| CORE | 处理器电源 | 6.3 | 18.98 |
| RUN | 连接到GND复位 | 8.37 | 22.69 |
| 5V | 5V输入 | 8.75 | 11.05 |
| 5V | 5V输入 | 11.21 | 6.3 |
| GND | 接地引脚 | 10.9 | 3.69 |
| GND | 接地引脚 | 17.29 | 2.41 |
| USB_DP | USB端口 | 22.55 | 1.92 |
| USB_DM | USB端口 | 24.68 | 1.92 |
| OTG | OTG引脚 | 39.9 | 7.42 |
| 1V8 | 1.8V模拟电池 | 42.03 | 8.42 |
| TV | 复合电视输出 | 45.58 | 3.17 |
| GND | 接地引脚 | 49.38 | 3.05 |
| GND | 接 地引脚 | 55.99 | 22.87 |
| 3V3 | 3.3V IO电源 | 48.55 | 22.44 |
| SD_CLK | SD卡时钟引脚 | 60.95 | 18.45 |
| SD_CMD | SD卡命令引脚 | 58.2 | 16.42 |
| SD_DAT0 | SD卡数据引脚 | 58.13 | 20.42 |
| SD_DAT1 | SD卡数据引脚 | 60.65 | 21.1 |
| SD_DAT2 | SD卡数据引脚 | 57.78 | 13.57 |
| SD_DAT3 | SD卡数据引脚 | 60.8 | 15.22 |
| BT_ON | 蓝牙电源状态 | 25.13 | 19.55 |
| WL_ON | WiFi电源状态 | 27.7 | 19.2 |
产品合规性与安全性
所有树莓派产品都经过了广泛的合规性测试,有关更多信息,请参阅产品信息门户
可燃性等级
树莓派设备中使用的PCB符合UL94-V0标准。
仅适用于PCB。
树莓派合规性支持
合规性支持计划旨在消除企业在处理合规性问题时的负担,使其更轻松地向消费者推出新产品。通过该计划,企业可以与在树莓派合规性测试期间参与测试的工程师取得联系,从而与UL的专业团队建立联系,该团队凭借对树莓派的深入了解,对企业的产品进行评估和测试。
了解有关树莓派合规性支持计划的更多信息。
"Powered by 树莓派" 徽标
"Powered by 树莓派"计划为希望使用树莓派徽标形式的公司提供了一个流程,涵盖了内置树莓派计算机或芯片的产品以及由树莓派提供的服务。如果您希望开始流程,您可以在线申请。
核准的设计合作伙伴
我们的 认可设计合作伙伴 列表提供了一系列与我们密切合作并为我们提供支持的咨询公司,这些公司可以在硬件、软件和机械领域提供有偿设计服务。
频率管理和热控制
所有型号的 Raspberry Pi 都进行了一定程度的热管理,以避免在大负荷下过热。SoC 有一个内部温度传感器,GPU 上的软件会对其进行轮询,以确保温度不超过我们为所有型号设定的 85°C 上限。可以将其设置为更低的值,但不能设置为更高的值。当设备接近极限值时,芯片(Arm、GPU)上使用的各种频率和电压会降低。这样可以减少产生的热量,从而控制温度。
当核心温度在80°C到85°C之间时,Arm核心将逐渐降低温度。如果温度达到85°C,Arm内核和GPU都会受到限制。
树莓派3B+及之后PCB技术已发生变化,以提供更好的散热并增加散热效率。此外还引入了软温度限制,目的是最大限度地延长设备在达到85°C硬限制之前"冲刺"的时间。当达到软限制时,时钟速度从1.4GHz降低到1.2GHz,并且工作电压略有降低。这减缓了温度上升的速度:我们将1.4GHz限制到1.2GHz以换取更长的工作时间。默认情况下软限制为60°C,可以通过config.txt中的temp_soft_limit中的设置更改此值。
树莓派4B继续采用与树莓派3B+相同的PCB技术,有助于散发多余的热量。目前没有定义软限制。
使用DVFS
有关 DVFS 的讨论仅适用于 4 系列设备(Raspberry Pi 4、Compute Module 4 和 Pi 400)。
Raspberry Pi 4 设备实现了动态电压和频率缩放(DVFS)。这项技术允许 4 系列设备在较低温度下运行,同时仍能提供相同的性能。
SoC内部的各种时钟(例如Arm、Core、V3D、ISP、H264、HEVC)由固件监控,每当它们没有全速运行时,提供给由时钟驱动的芯片特定部分的电压相对于全速的降低而言有所降低。实际上,仅提供够用的电压来保持模块以其运行的特定速度正确运行。这可以显着减少SoC的功耗,从而减少产生的总热量。
由于运行欠压可能会导致系统稳定性问题,尤其是在使用欠压固定时钟外设(例 如PCIe)时,因此提供了三种 DVFS 模式,并且可以使用/boot/firmware/config.txt以下属性进行配置。大多数系统应该使用dvfs=3,无显示器系统可能会受益于小幅功耗降低,但dvfs=1存在PCIe稳定性问题的风险。
| 属性=值 | 描述 |
|---|---|
| dvfs=1 | 允许欠压 |
| dvfs=2 | 默认工作频率的固定电压 |
| dvfs=3 | 根据超频的需要调整电压(默认)。如果在config.txt中指定over_voltage,则禁用动态电压调节,导致系统恢复到dvfs=2 |
在 5 系列设备上取消了这一设置,实际上始终为模式 3。
此外,还使用了更细粒度的分级CPU调速器来对Arm核心频率进行控制,这意味着DVFS更有效。现在的步进为1500MHz、1000MHz、750MHz和 600MHz。当 SoC 被节流时,这些步骤也可以提供帮助,并且意味着完全节流到 600MHz 的可能性要小得多,从而全面提高满载性能。
默认的CPU调 控器是ondemand,可以使用cpufreq-set命令(来自cpufrequtils包)手动更改调控器以减少空闲功耗:
sudo apt install cpufrequtils
sudo cpufreq-set -g powersave
测量温度
由于 Raspberry Pi 设备上使用的 SoC 架构以及 Raspberry Pi OS 发行版中使用的上游温度监控代码,基于 Linux 的温度测量可能不准确。然而,vcgencmd 命令可以直接与 GPU 通信,从而准确、即时地读取当前 SoC 的温度:
vcgencmd measure_temp
添加散热片
由于内置节流功能,因此不需要散热片来防止 SoC 过热损坏。不过,散热片或小型风扇可以减少热节流并提高性能。垂直安装 Raspberry Pi 可获得最佳气流,从而略微改善散热。
风扇盒
为确保 Raspberry Pi 的最佳性能,请使用主动冷却解决方案,如风扇。Raspberry Pi 固件可管理所有官方风扇的风速。
Raspberry Pi 4 风扇
对于 Raspberry Pi 4,请将 Raspberry Pi 4 外壳风扇 添加到 Raspberry Pi 4 外壳的盖子上。
Raspberry Pi 5 风扇
对于 Raspberry Pi 5,请使用其中一个官方风扇选项:
Raspberry Pi 5 的两个风扇都插入了位于电路板右上方 40 针 GPIO 接头和 USB 2 端口之间的四针 JST-SH PWM 风扇接头。风扇连接器的电流限制与 USB 外围设备相同。我们向超频者推荐 Active Cooler 盒子,因为它能提供更好的散热性能。
当 Raspberry Pi 5 的温度升高时,风扇的反应如下:
- 低于 50°C,风扇不旋转(0% 速度)
- 50°C时,风扇以低速运转(30%速度)
- 60°C时,风扇速度增加至中速(50%速度)
- 67.5°C时,风扇转速增至高速(70%转速)
- 75°C时,风扇升至全速(100%速度)
温度下降使用相同的映射,滞后温度为 5°C;当温度下降到低于上述每个阈值 5°C 时,风扇转速下降。
上述温度、迟滞和转速数值可通过调整各种 fan_tempN、fan_tempN_hyst 和 fan_tempN_speed dtoverlay 设置进行调节(其中 N 取值为 0、1、2 或 3)。详见覆盖层README文件获取完整说明。例如,在/boot/firmware/config.txt中添加dtparam=fan_temp0=55000,将使风扇保持关闭状态,直至树莓派5的温度达到55°C。
启动时,风扇打开,并检查转速计输入,查看风扇是否在转动。如果是,则启用 cooling_fan 设备树覆盖。该覆盖层默认位于 bcm2712-rpi-5-b.dtb,但status=disabled。
Raspberry Pi 5 风扇连接器引脚说明
Raspberry Pi 5 风扇连接器是一个 1 毫米间距的 JST-SH 插座,包含以下四个引脚:
| 引脚 | 功能 | 导线颜色 |
|---|---|---|
| 1 | +5V | 红色 |
| 2 | PWM | 蓝色 |
| 3 | GND | 黑色 |
| 4 | 转速器 | 黄色 |
树莓派启动EEPROM
以下 Raspberry Pi 型号使用 EEPROM 启动系统:
- 自 Raspberry Pi 4B 起的旗舰机型
- 从 CM4 开始的计算模块型号(包括 CM4S)
- 自 Pi 400 起的键盘型号
所有其他型号的 Raspberry Pi 计算机都使用位于启动文件系统中的 bootcode.bin 文件。
您可以在 rpi-eeprom GitHub 代码库 中找到用于创建 rpi-eeprom 的脚本和预编译二进制文件。
诊断
如果在启动过程中发生错误,则会通过绿色 LED 显示 错误代码。较新版本的 bootloader 将在所有 HDMI 显示屏上显示 诊断信息。
更新 bootloader
有多种方法可以更新树莓派的bootloader。
旗舰型号自 Raspberry Pi 4B 开始;计算模块自 CM5 开始;键盘型号 自 Pi 400 开始
Raspberry Pi OS 会自动更新 bootloader 以修复重要错误。要手动更新 bootloader 或更改启动顺序,请使用raspi-config。
Compute Module 4 和 Compute Module 4S 不支持自动引导加载程序更新,因为引导rom 无法从 eMMC 加载 recovery.bin 文件。推荐的更新机制是 rpiboot 或通过 flashrom - 请参阅 rpi-eeprom-update -h 获取更多信息。
使用树莓派Imager更新bootloader
树莓 派Imager提供了一个用于更新 bootloader 和选择启动模式的GUI。
- 下载树莓派Imager
- 选择备用SD卡(bootloader映像将覆盖整个卡中的内容)
- 启动树莓派Imager
- 选择
选择操作系统 - 选择
其他工具映像
- 为您的 Raspberry Pi 版本选择
Bootloader(Pi 400 属于 4 系列)。
- 选择启动模式:
SD(推荐)、USB或网络
- 选择
SD卡,然后写入 - 单击
是继续 - 使用新映像启动树莓派并等待至少10秒
- 当绿色活动LED以稳定模式闪烁并且HDMI显示屏显示绿屏时,您已成功写入bootloader
- 关闭树莓派电源并取出SD卡
使用raspi-config更新bootloader
要从树莓派OS中更改启动模式或bootloader版本,请运行raspi-config
- 更新树莓派OS以获取最新版本的
rpi-eeprom软件包 - 运行
sudo raspi-config - 选择
Advanced Options - 选择
Bootloader Version - 选择
Default出厂默认设置 或Latest最新稳定的bootloader版本 - 运行
sudo reboot重启
更新 bootloader 配置
default (默认) 版本的 bootloader 代表最新的出厂默认固件映像。它提供关键错误修复和硬件支持,并在 latest 版本中的功能经过测试后定期更新。
高级用户可以切换到 latest bootloader 以获得最新功能。
首先,确保 Raspberry Pi 运行最新的软件。运行以下命令进行更新:
sudo apt update && sudo apt full-upgrade
接下来,运行以下命令打开 raspi-config:
sudo raspi-config
浏览至 Advanced Options>Bootloader Version。选择Latest,然后选择 Yes 确认。选择 Finish 并确认要重新启动。
如果您运行rpi-eeprom-update,您应该会看到更新版本的 bootloader 可用并且它是 latest 发布版本。
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
CURRENT: Thu 18 Jan 13:59:23 UTC 2024 (1705586363)
LATEST: Mon 22 Jan 10:41:21 UTC 2024 (1705920081)
RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2711/latest)
Use raspi-config to change the release.
VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138c0
LATEST: 000138c0
现在您可以更新 bootloader。
sudo rpi-eeprom-update -a
sudo reboot
重新启动,然后运行rpi-eeprom-update。您现在应该看到日期CURRENT已更新为bootloader的最新版本:
BOOTLOADER: up to date
CURRENT: Mon 22 Jan 10:41:21 UTC 2024 (1705920081)
LATEST: Mon 22 Jan 10:41:21 UTC 2024 (1705920081)
RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2711/latest)
Use raspi-config to change the release.
VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138c0
LATEST: 000138c0
读取当前 bootloader 配置
要查看当前运行的 bootloader 所使用的配置,请运行以下命令:
`rpi-eeprom-config`
从 bootloader 映像读取配置
要从 bootloader 映像读取配置:
rpi-eeprom-config pieeprom.bin
编辑当前 bootloader 配置
以下命令将当前 bootloader 配置加载到文本编辑器中。当编辑器关闭时,rpi-eeprom-config 将更新的配置应用到最新可用的 bootloader 版本,并用于 rpi-eeprom-update 在系统重新启动时安排更新:
sudo -E rpi-eeprom-config --edit
sudo reboot
如果更新后的配置无更改或为空,则不进行任何更改。
编辑器是通过 EDITOR 环境变量选择的。
应用已保存的配置
以下命令应用 boot.conf 的配置于最新的可用 bootloader 映像,并在rpi-eeprom-update在系统重新启动时安排更新。
sudo rpi-eeprom-config --apply boot.conf
sudo reboot
自动更新
rpi-eeprom-update systemd 服务在启动时运行,并在新映像可用时应用更新,自动迁移当前的 bootloader 配置。
要禁用自动更新:
sudo systemctl mask rpi-eeprom-update
要重新启用自动更新:
sudo systemctl unmask rpi-eeprom-update
如果设置了 FREEZE_VERSION] bootloader 配置,那么更新服务将跳过任何自动更新。这样,如果安装了多个操作系统,或交换 SD 卡时,就无需单独禁用更新服务了。
rpi-eeprom-update
树莓派OS使用rpi-eeprom-update脚本来实现自动更新服务。该脚本还可以交互运行或打包以创建自定义bootloader更新服务。
读取当前 EEPROM 版本:
vcgencmd bootloader_version
检查是否有可用更新:
sudo rpi-eeprom-update
安装更新:
sudo rpi-eeprom-update -a
sudo reboot
取消挂起的更新:
sudo rpi-eeprom-update -r
安装特定的bootloader EEPROM 映像:
sudo rpi-eeprom-update -d -f pieeprom.bin
该-d参数指示rpi-eeprom-update使用指定映像文件中的配置,而不是自动迁移当前配置。
显示内置文档:
rpi-eeprom-update -h
bootloader 发布状态
固件发布状态对应于bootloader固件映像的特定子目录(/lib/firmware/raspberrypi/bootloader/...),并且可以更改以选择不同的发布流。
default- 更新了新硬件支持、关键错误修复以及已通过latest版本测试的新功能的定期更新。latest- 当新功能可用时进行更新。
由于发布状态字符串只是一个子目录名称,因此可以创建您自己的发布流,例如固定发布或自定义网络启动配置。
更改 bootloader 版本
您可以通过编辑 /etc/default/rpi-eeprom-update 文件并将 FIRMWARE_RELEASE_STATUS 条目更改为适当的流来改变更新期间要使用的发布流。
更新 bootloader 映像文件中的 bootloader 配置
以下命令将 pieeprom.bin 中的 bootloader 配置替换为 boot.conf,并将新映像写入 new.bin:
rpi-eeprom-config --config boot.conf --out new.bin pieeprom.bin
recovery.bin
开机时,BCM2711和BCM2712上的ROM会在SD卡上启动分区的根目录中查找名为 recovery.bin 的文件。如果找到有效的 recovery.bin ,ROM将执行该文件而不是EEPROM的内容。这种机制可确保始终将 bootloader 映像重置为具有出厂默认设置的有效映像。
请参阅树莓派启动流程
bootloader 更新文件
| 文件名 | 目的 |
|---|---|
| recovery.bin | bootloader 恢复可执行文件 |
| pieeprom.upd | bootloader EEPROM 映像 |
| pieeprom.bin | bootloader EEPROM 映像 - 与 pieeprom.upd 相同,但更改了 recovery.bin 行为,使其不会重命名为 RECOVERY.000 。 |
| pieeprom.sig | bootloader 映像的sha256校验和 (pieeprom.upd/pieeprom.bin) |
| vl805.bin | VLI805 USB固件 EEPROM 映像 - 仅限树莓派4B Rev1.3及更早版本 |
| vl805.sig | vl805.bin的sha256校验和 |
- 如果bootloader更新映像名为
pieeprom.upd,那么更新完成后,recovery.bin将重命名为recovery.000,然后重新启动系统。由于recovery.bin已不存在,ROM会从EEPROM中加载新更新的bootloader,操作系统会正常启动。 - 如果bootloader更新映像名为
pieeprom.bin,那么recovery.bin将在更新完成后停止。更新成功后,HDMI输出将变为绿色,绿色活动LED快速闪烁。如果更新失败,HDMI输出将变为红色,活动LED将显示错误代码。 .sig文件包含相应图像文件的十六进制sha256校验和;将来可能会添加其他字段。- BCM2711和BCM2712上的ROM不支持从USB大容量存储器或TFTP加载
recovery.bin。相反,较新版本的bootloader支持自更新机制,bootloader可自行重新刷新EEPROM。请参阅bootloader配置页面上的ENABLE_SELF_UPDATE。 - 启动时,
rpi-eeprom-update服务会自动删除临时EEPROM更新文件。
有关 rpi-eeprom-update 配置文件的更多信息,请参阅 rpi-eeprom-update -h。
EEPROM 写保护
bootloader 和 VLI EEPROM 都支持硬件写保护。有关如何在刷新EEPROM时启用此功能的更多信息,请参阅eeprom_write_protect选项。
启动诊断
Raspberry Pi 4 或更高版本旗舰机型的 bootloader 可以在启动时在 HDMI 显示屏上显示诊断信息。要查看诊断信息,请关闭 Raspberry Pi 的电源,断开启动媒体(通常是 SD 卡或 SSD),然后重新启动。如果您的 Raspberry Pi 连接到显示器,您应该能看到类似下面的诊断信息:
如果 bootloader 无法从任何引导介质或网络引导启动,也会出现此诊断页面。如果引导介质上没有可引导映像、引导介质有缺陷或网络引导参数不正确,就会出现这种情况。
要在显示诊断页面时重新启动,请对设备进行电源循环。您可以断开电源然后重新连接,或者按住电源按钮(如果设备有)。
顶部一行描述了树莓派的型号及其内存容量。二维码是下载页面的链接。
诊断信息如下:
| 线 | 信息 |
|---|---|
| bootloader | Bootloader git版本 - RO(如果EEPROM被写保护) - 软件构建日期 |
| update-ts | 与EEPROM配置更新时间相对应的时间戳。在自更新模式下检查此时间戳以避免更新到旧配置 |
| secure-boot | 如果启用了安全启动,则显示处理器版本(B0/C0)和签名启动状态标志。否则,该行为空。 |
| board | 主板版本- 序列号 - 以太网MAC地址 |
| boot | mode(当前启动模式名称和编号)order(BOOT_ORDER配置)retry(当前启动模式中的重试次数)restart(启动模式列表的循环次数) |
| SD | SD卡检测状态(检测到/未检测到) |
| part | 主引导记录主分区类型:LBA |
| fw | start.elf 和 fixup.dat 的文件名(如果存在)(例如 start4x.elf、fixup4x.dat) |
| net | 网络启动: 链路状态(上/下) 客户端IP地址(ip)、子网(sn)、默认网关(gw) |
| tftp | 网络启动:TFTP服务器IP地址 |
| display | 指示是否检测到热插拔(HPD=1),如果是,则表示是否已成功读取每个HDMI输出的EDID(EDID=ok) |
要禁用诊断显示,请使用 bootloader 配置中的 DISABLE_HDMI 选项。
树莓派启动模式
树莓派有许多不同的启动阶段。本文档解释了启动模式的工作原理以 Linux引导支持哪些模式。
特殊bootcode.bin-only启动模式
基于BCM2837的树莓派(即1.2版树莓派2B、树莓派3B和树莓派3B+)可以执行USB主机和以太网启动(树莓派3A+ 没有内置以太网接口,因此无法进行网络启动)。此外,树莓派4之前的所有树莓派型号都可以使用bootcode.bin-only方法启用USB主机启动。
自 Raspberry Pi 4 起,旗舰设备不再使用 bootcode.bin 文件。相反,这些设备使用板载 EEPROM 芯片中的引导加载程序。有关详细信息,请参阅 EEPROM 启动流程 和 SPI 启动 EEPROM 文档。
将 SD 卡格式化为 FAT32,并复制最新的 bootcode.bin。SD 卡必须存在于 Raspberry Pi 中才能启动。从 SD 卡加载 bootcode.bin 后,Raspberry Pi 将继续使用 USB 主机模式启动。
这对于基于BCM2835和BCM2836芯片的树莓派1、2和Zero型号,以及树莓派3启动失败的情况都很有用(与烧入BCM2837A的启动代码相比,最新的 bootcode.bin 包含针对树莓派3B的额外错误修复)。
如果您遇到大容量存储设备仍然无法工作的问题,即使使用了这个 bootcode.bin,那么请在SD卡中添加一个名为 timeout 的新文件。这将把等待大容量存储设备初始化的时间延长至六秒。
bootcode.bin串口启用
适用于 Raspberry Pi 4 之前发布的电路板。
有关在树莓派4 bootloader上启用UART的信息,请参阅Bootloader配置。 有关使用 EEPROM bootloader 启用 UART 的信息,请参阅 bootloader 配置 文档。
可以启用早期阶段的 UART 来调试启动问题(对于上述仅使用 bootcode.bin 的启动模式非常有用)。要做到这一点,请确保您使用的是最新版本的固件(包括 bootcode.bin)。检查当前固件是否支持 UART:
strings bootcode.bin | grep BOOT_UART
要从 bootcode.bin 启用UART:
sed -i -e "s/BOOT_UART=0/BOOT_UART=1/" bootcode.bin
接下来,将合适的 USB 串口电缆连接到主机(Raspberry Pi 也可以,不过您可能会发现最简单的方法是使用 USB 串口电缆,因为它开箱即可使用,无需任何烦人的 config.txt 设置)。使用 Raspberry Pi 或计算模块上的标准引脚 6、8 和 10(GND、GPIO14、GPIO15)。
然后使用 Linux 或 macOS 上的screen 或 Windows 上的putty连接串口。
设置串口接收频率为 115200-8-N-1,然后启动 Raspberry Pi。 当 bootcode.bin 运行时,设备会立即输出串行数据。
USB启动模式
USB 有两种不同的启动模式:
- USB设备模式
- USB主机模式
固件会根据 OTP 位在启动时选择两种模式。有两个位控制 USB 启动。第一个位启用 USB 设备启动,默认为启用;第二个位启用 USB 主机启动。
如果 USB 主机启动模式位被设置,处理器就会读取 OTGID 引脚,以决定是作为主机启动(与任何 Raspberry Pi Model B/B+ 一样驱动为零)还是作为设备启动(保持浮动)。Raspberry Pi Zero 可以通过 USB 连接器访问 OTGID 引脚;而 Compute Module 则可以访问边缘连接器上的 OTGID 引脚。
其他一些 OTP 位允许某些 GPIO 引脚选择启动模式。
USB设备启动模式
USB 设备启动在 计算模块系列、Zero系列和 Model A 旗舰系列变体 上可用。
当这种启动模式被激活时(通常是在从 SD 卡启动失败之后),树莓派会将其 USB 端口设置为设备模式,并等待主机的 USB 复位。可以在 Github 上找到示例代码,说明主机需要如何与树莓派通信。
主机首先通过控制端点 0 向设备发送一个结构,其中包含启动的大小和签名(未启用安全性,因此不需要签名)。其次,向端点 1 发送代码(bootcode.bin)。最后,设备将回复以下代码之一:
0- 成功0x80- 失败
USB主机启动模式
主机启动仅适用于树莓派3B、3B+、3A+ 和 2B v1.2。树莓派3A+ 仅支持大容量存储器启动,不支持网络启动。
主机启动适用于 Compute Module 系列(自 Compute Module 3 起)、Zero 系列(自 Zero 2 W 起)、Raspberry Pi 2B(1.2 版)、Raspberry Pi 3B 和 所有的旗舰系列(自 Raspberry Pi 3B+ 起)。Raspberry Pi 3A+ 支持大容量存储器启动,但不支持网络启动。
USB 主机启动模式使用以下逻辑:
- 启用 USB 端口,等待 D+ 线被拉高,表明有 USB 2.0 设备(我们仅支持 USB2.0)
- 如果设备是USB Hub
- 启用Hub所有下游端口的电源
- 对每个端口循环最多两秒钟(如果设置了
program_usb_boot_timeout=1则为五秒钟)- 从复位中释放,等待 D+ 驱动高电平,以指示设备已连接
- 如果检测到设备:
- 发送 "获取设备描述符" 命令
- 如果
VID == SMSC&&PID == 9500- 将设备添加到以太网设备列表
- 如果
- 如果类接口 == 大容量存储器类
- 将设备添加到大容量存储设备列表
- 发送 "获取设备描述符" 命令
- 否则
- 枚举单个设备
- 遍历大容量存储设备列表
- 从大容量存储设备启动
- 查看以太网设备列表
- 从以太网启动
在 Raspberry Pi 3B、3A+ 和 3B+ 上,主机启动默认为禁用。要启用 USB 主机启动,请在 /boot/firmware/config.txt 的末尾添加一行包含 program_usb_boot_mode=1 的内容。
您对 OTP 所做的任何更改都是永久性的,无法撤销。
在 Raspberry Pi 3A+ 上,设置 OTP 位以启用 USB 主机启动模式将永久阻止 Raspberry Pi 以 USB 设备模式启动。
USB大容量存储启动
仅适用于树莓派2B v1.2、3A+、3B、3B+、4B、400 和零 2 W,以及树莓派计算模块 3、3+ 和 4。 适用于 自 Compute Module 3 起的 Compute Module 系列、自 Zero 2 W 起的 Zero 系列和 自 Raspberry Pi 2B(1.2 版)起的所有旗舰系列设备。
您可能希望从 USB 大容量存储设备(如闪存盘或 USB 硬盘)启动 Raspberry Pi。在连接 USB 设备(尤其是硬盘和固态硬盘)时,请注意它们的电源要求。如果您计划在 Raspberry Pi 上连接一个以上的固态硬盘或硬盘,通常需要外接电源--供电硬盘盒或供电 USB 集线器。
Raspberry Pi 4B 之前的型号存在已知问题,无法使用某些 USB 设备启动。
Raspberry Pi Model B
Raspberry Pi Model A
Raspberry Pi Model B+
Raspberry Pi Model A+
Raspberry Pi Model 2B
Raspberry Pi Model 3B
Raspberry Pi Model 3B+
Raspberry Pi Model 3A+
Raspberry Pi Model 4B
Raspberry Pi Model 5
Raspberry Pi 400
Raspberry Pi 500
Raspberry Pi 500+
Raspberry Pi Zero
Raspberry Pi Zero W
Raspberry Pi Zero WH
Raspberry Pi Zero 2 W
Raspberry Pi Zero 2 WH
Raspberry Pi Compute Module 1
Raspberry Pi Compute Module 3
Raspberry Pi Compute Module 3+
Raspberry Pi Compute Module 4S
Raspberry Pi Compute Module 4
Raspberry Pi Compute Module 5
Raspberry Pi Compute Module 0
Raspberry Pi Pico
Raspberry Pi Pico H
Raspberry Pi Pico W
Raspberry Pi Pico WH
Raspberry Pi Pico 2
Raspberry Pi Pico 2 W