Hardware
Raspberry Pi
What is Raspberry Pi?
The Raspberry Pi is a series of small single-board computers developed by the Raspberry Pi Foundation. The Raspberry Pi is designed to be a low-cost, credit-card-sized computer that can be used for a wide range of applications, including education, hobby projects, and industrial applications. The Raspberry Pi runs a variety of operating systems, including Linux-based distributions like Raspbian and Ubuntu, as well as Windows 10 IoT Core.
Raspberry Pi 5
Power
- USB-C Power Supply: 5V/3A
Check the current power supply status:
> vcgencmd get_config usb_max_current_enable
Startup
当你第一次将树莓派插入电源时,它会自动开机并启动操作系统,无需按动电源按钮。
如果你运行的是树莓派桌面系统,你可以通过短暂按下电源按钮来启动一次安全关机。屏幕上会出现一个菜单,询问你是否要关机、重启或注销。从菜单中选择一个选项,或再次按下电源按钮来启动一次安全关机。
如果你运行的是树莓派桌面系统,你可以快速连续按两次电源按钮来进行关机。如果你运行的是没有桌面的树莓派OS Lite系统,只需按一次电源按钮即可启动关机。
要强制进行硬关机,请长按电源按钮。
如果树莓派主板已经关机但仍然通电,按下电源按钮将重启主板。
默认的关机功率大约在1到 1.4 瓦之间。但可以通过手动编辑EEPROM
配置来降低这个数值,使用命令 sudo rpi-eeprom-config -e
进行编辑。将设置更改为以下内容:
POWER_OFF_ON_HALT=1
这应该会将关机时的功耗降低到大约0.01瓦。
添加额外的电源开关
J2 跳线位于 RTC 电池连接器和主板边缘之间。通过在两个焊盘之间添加一个常开(NO)的瞬时开关,这个接口允许你为 Raspberry Pi 5 添加自己的电源按钮。短暂地闭合这个开关将执行与板载电源按钮相同的操作。
USB 启动和供电
默认情况下,使用 3A 电源时不启用USB启动。然而,在 /boot/firmware/config.txt
文件中设置 usb_max_current_enable=1
将覆盖这一设置,并允许使用较低瓦数的电源进行 USB 启动。
在不在 config.txt
中加入这条语句的情况下使用3安培电源启动时,引导程序的 HDMI 诊断屏幕上会显示一个警告信息,并且引导程序将跳过到下一个启动模式,例如:
Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs ' clusters 130554 (4)
rsc 32 fat-sectors 1020 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130554
[MSD [01:00] 2.00 000000:02] autoboot.txt not found
Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs ' clusters 130554 (4)
rsc 32 fat-sectors 1020 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130554
Read config.txt bytes 2109 hnd 0x10a
[MSD [01:00] 2.00 000000:02] pieeprom.upd not found
usb_max_current_enable default 0 max-current 900
Read bcm2712-rpi-5-b.dtb bytes 71862 hnd 0x5101
dt-match: compatible: raspberrypi,5-model-b match: brcm,bcm2712
dt-match: compatible: brcm,bcm2712 match: brcm,bcm2712
***
USB boot requires a high current (5V 5A) power supply.
To disable this check set usb_max_current_enable=1 in config.txt
or press the power button to temporarily enable usb_max_current_enable
and continue booting.
See https://rptl.io/rp5-power_supply for more information
引导程序会提示你按下电源按钮以继续
,这实际上会临时为当前启动设置 usb_max_current_enable=1
,以允许你从USB启动。除非你的磁盘有自己的外部电源,否则可能无法为你的树莓派提供足够的电流。
电源适配器和树莓派操作系统
引导程序通过设备树 /proc/device-tree/chosen/power
将有关电源的信息传递给操作系统。用户通常不会直接读取这些信息。
- max_current 最大电流,以毫安表示
- uspd_power_data_objects PDO(电源数据对象)的转储 - 供高级用户调试
- usb_max_current_enable 电流限制器是设置为高还是低
- usb_over_current_detected 在控制权转移给操作系统之前,在启动过程中是否检测到任何USB过电流
- reset_event PMIC复位原因,例如看门狗、过电压或欠电压、过温
PMIC 内置的 ADC
(模拟数字转换器)可以测量供电电压 EXT5V_V
等。
> vcgencmd pmic_read_adc
你无法看到 USB 电流或任何其他直接连接到5伏的设备,因为这绕过了PMIC(电源管理集成电路)。你不能把这些加起来等于源电源的总功耗瓦数。然而,监控像核心电压这样的事物可能是有用的。
Fan Pins
Pin | 定义 |
---|---|
1 | +5V |
2 | PWM |
3 | GND |
4 | Tach |
MIPI CSI/DSI
在之前型号的树莓派上的 CSI 和 DSI 端口已经合并为两个双功能的 CSI/DSI(MIPI)端口。为了适应主板,这些端口现在使用了更密集的连接器排列,之前仅在树莓派 Zero 和 CM4IO 板上见到。你可以将两个显示器、两个相机,或一个相机和一个显示器连接到这些端口。
对于像相机这样的树莓派设备,不需要进行任何配置。如果你将相机插入任一 MIPI 连接器,你将获得适当的 CSI 连接,而且你的相机将可供操作系统使用。
连接显示器
如果你在 Raspberry Pi 5 上使用官方的7英寸触摸显示屏,它不会自动配置。你需要在你的 /boot/firmware/config.txt
文件中添加以下两行中的一行。如果将显示屏连接到 CAM/DISP 1连接器,你应该添加:
dtoverlay=vc4-kms-dsi-7inch
或者,如果将其连接到CAM/DISP 0连接器,你可以添加以下这行:
dtoverlay=vc4-kms-dsi-7inch,dsi0
RTC
Raspberry Pi 5 包括一个RTC(实时时钟)模块。这个模块可以通过位于 USB-C 电源连接器右侧的主板上的 J5(BAT)连接器使用电池供电。
你可以设置一个唤醒闹钟,它会将主板切换到低功耗状态(大约3mA)。当到达闹钟时间时,主板将重新通电。这对于定时任务(如延时摄影)非常有用。
为了支持唤醒闹钟的低功耗模式,你应该编辑引导加载程序配置:
> sudo -E rpi-eeprom-config --edit
添加:
POWER_OFF_ON_HALT=1
WAKE_ON_GPIO=0
通过以下命令测试:
> echo +600 | sudo tee /sys/class/rtc/rtc0/wakealarm
> sudo halt
这将使主板进入非常低功耗状态,然后在10分钟后唤醒并重新启动。
RTC还在启动时提供时间,例如在 dmesg
中:
[1.295799] rpi-rtc soc:rpi_rtc: setting system clock to 2023-08-16T15:58:50 UTC (1692201530)
RTC 功能在没有互联网连接以通过 NTP 获取时间的情况下可能会有用。
安装备用电池
不建议为 RTC 使用主锂电池,因为它有一个涓流充电电路,默认情况下是禁用的。如果启用,这将迅速消耗电池。
电池部件是一个可充电的锂锰纽扣电池,配有预装的两针JST插头和粘性安装垫。当主板的主电源断开时,它适合为树莓派5的RTC供电,其断电电流在微安级的个位数,保持时间可达数月之久。
UART
Raspberry Pi 5 有一个专用的调试串口(UART)连接器。它的最大波特率为 921,600bps,可以通过 EEPROM 参数配置。它始终处于活动状态并已启用,提供对早期启动和固件信息的直接访问;以及在启动后的 Linux 控制台。
UART 连接器是一个与树莓派调试连接器规范兼容的三针头。随调试探针提供的一根电缆终端是合适的 JST 连接器,允许你连接到 UART。
默认情况下,它在 /dev/ttyAMA0
(别名为 /dev/serial0
)上提供 115,200
波特率的 8N1
连接。
创建一个串口控制台
之前的树莓派型号不同,在那些型号上你可以在 GPIO14 和 GPIO15 上启用串行控制台,而在 Raspberry Pi 5 上,通过 raspi-config
启用串行控制台将会在新的 UART
连接器上的 /dev/ttyAMA0
上启用串行控制台。
PCIE
Raspberry Pi 5 包括一个 PCIe Gen2 x1 插槽,可以用于连接外部设备,如 NVMe SSD 或其他 PCIe 设备。规格书
连接器型号:Würth 687316124422
原理图:Raspberry Pi 5 PCIe Schematic
PCIE_PWR_EN 引脚
这个引脚是 Raspberry PI 5 向 Hat 输出的 3.3V 信号,用来通知 Hat 通电。例如,对于 Raspberry PI 5 M.2 M Key HAT+,这可以启用由进入的 5V 生成的 M.2 3.3V 电源。 在PIP上对这个引脚提供 100K 的低电平拉动电阻。
PCIE_DET_WAKE 引脚
这个引脚是输入到 Raspberry Pi 5 的 3.3V 信号。通过从 5V 的电阻分压器(3.6K / 6.8K,产生 2.35K 的输出阻抗)或从永久启用的 3.3V(使用2.2K电阻)将其拉高到3.3V。Raspberry Pi 5 在启动时会检测到这个高电平,并自动探测 PCIe 总线。 使用 PCIe WAKE# 将其拉低。
PCIE_CLKREQ 引脚
CLKREQ_N 的主要功能是请求或指示时钟资源。当 M.2设备(如SSD或无线网卡)不需要时钟信号或正在低功耗模式下运行时,它可以通过CLKREQ_N引脚向主机(比如主板或处理器)发送信号,请求关闭时钟信号。这有助于降低整体的能耗,因为在不需要时钟信号的时候关闭它可以减少功耗。
在电脑的功耗管理和优化方面,尤其是在移动设备或节能设备中,CLKREQ_N是一个关键的功能。通过使用这样的信号,设备可以根据需要动态地调节其电源使用,从而提高能效和延长电池寿命。
FFC
PCIE 连接器是一个 16 脚 0.5 毫米间距的 FFC(柔性扁平电缆)连接器。推荐长度为 50 毫米或更短。FFC 必须在连续的接地平面上控制 PCIe 差分对的阻抗为 90 欧姆±10%。
FFC 必须是对面接触类型,见上图。如规定,同侧接触类型的 PCIe FFC 将不可逆转,因此如果反向插入,将会导致 Raspberry PI 5 和/或 Hat 短路。
PCIE Configuration
Raspberry Pi 5 的 PCIe 总线是通过 EEPROM 配置的。这意味着你可以通过编辑 EEPROM 配置文件来配置 PCIe 总线。这是通过以下命令完成的:
> pi@raspberrypi ~ $ sudo rpi-eeprom-config --edit
将 BOOT_ORDER
修改为 0xf416
,非官方 NVME M.2 扩展板可能需要添加 PCIE_PROBE
选项。
# Change the BOOT_ORDER line to the following:
BOOT_ORDER=0xf416
# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1
读写速度测试
使用 hdparm 可以进行磁盘读取速度基准测试:
- 安装 hdparm
pi@raspberrypi ~ $ sudo apt update
pi@raspberrypi ~ $ sudo apt upgrade
pi@raspberrypi ~ $ sudo apt install hdparm
- 识别磁盘:
在运行 hdparm
之前,您需要知道要基准测试的磁盘的设备标识符。您可以使用以下命令列出所有连接的磁盘:
pi@raspberrypi ~ $ lsblk
# or
pi@raspberrypi ~ $ sudo fdisk -l
这将显示存储设备和分区的列表。寻找您的目标磁盘,例如 Raspberry Pi 中的 SD 卡为 /dev/mmcblk0
- 运行 hdparm
要测试磁盘的读取速度,请使用以下命令:
pi@raspberrypi ~ $ sudo hdparm -tT /dev/nvme
将 /dev/nvme 替换为您实际的磁盘标识符(如 /dev/nvme0n1)
这些选项的含义如下:
- -t:执行设备读取的时间测量,用于基准测试和比较。
- -T:执行缓存(内存)读取的时间测量。
- 解读结果:
输出将显示两个主要指标:
- 缓冲磁盘读取时间:这测量了驱动器将数据读入系统缓冲区(RAM)的速度,反映了磁盘读取速度。
- 缓存读取时间:这测量了从缓存(内存)读取数据的速度,通常会快得多,不受磁盘速度的限制。
- 安全提示:
hdparm
是一个功能强大的工具,如果使用不当,也包含可能擦除数据或损坏您的驱动器的命令。始终确保您使用正确的设备标识符,并避免使用写入或擦除命令,除非您确信其功能。
请记住,hdparm
主要用于测量读取速度。对于写入速度,您可能需要使用其他工具,如 dd
。此外,hdparm
提供的性能数字是基本的,可能无法准确反映实际使用中的情况,尤其是对于有大量小型随机读/写的任务。
- 写入速度测试
dd
命令可以用来测试磁盘写入速度。 警告:使用 dd
时必须小心,因为不正确的选项可能会清除你磁盘。
此命令将向磁盘写入一个名为 test 的 200MB 文件:
pi@raspberrypi ~ $ dd if=/dev/zero of=test bs=1048576 count=200
Update Bootloader
Use Raspberry Pi Imager
- Download and install the Raspberry Pi Imager.
- Open the Raspberry Pi Imager and select the "Choose OS" option.
- Select "Misc utility images" and then "Bootloader".
- Choose the latest bootloader version and click "Write".
Use Command Line
- Check the current bootloader version:
> vcgencmd bootloader_version
- Update to the latest version:
Before starting the update, make sure raspberry pi 5 is connected to the Internet;
> sudo apt update
> sudo apt upgrade -y
> sudo rpi-eeprom-update
- Use tool raspi-config to update
> sudo raspi-config
Then select 6 Advanced Opitions
> A5 Bootloader Version
> E1 Latest
, answer Yes
.
Then reboot
and the firmware will be updated (requires Internet access).
GPIO
Check the current Raspberry Pi Pinout:
> pinout
Raspberry Pi OS
apt Sources Mirror
> sudo nano /etc/apt/sources.list
Comment out the first original source and add the following sources:
#deb-src http://archive.raspberrypi.org/debian/ stretch main
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi