1 · 文档导读与阅读路径
树莓派不是一块「MCU 开发板」,它是一台完整的 Linux 计算机,外加一条 40 针的排针。这句话决定了本文所有章节的编排方式。
1.1 这份文档覆盖什么
本文覆盖树莓派官方产品线的开发全流程:从挑型号、选启动介质、烧录 Raspberry Pi OS,到 GPIO / I2C / SPI / UART 编程、设备树 Overlay、摄像头与显示、存储与备份、网络服务、功耗散热、Linux 内核编译,再到 RP2040 / RP2350 的 Pico SDK 开发,最后落到与 XTX 存储芯片协同的方案设计。
- 硬件层:五大产品系列、处理器 SoC、40-pin 排针、供电与散热。
- 系统层:启动链路、
config.txt、raspi-config、包管理、systemd。 - 外设层:GPIO 三条软件栈、三条串行总线的使能与使用、Overlay 机制。
- 进阶层:libcamera、内核交叉编译、Pico SDK、容器化。
- 收尾层:与存储芯片协同、故障速查、五个附录。
1.2 不覆盖什么
树莓派生态太大,本文明确不写:Python 语法教学、Linux Shell 基础、通用 Qt / GTK 桌面开发、Kubernetes 集群,以及第三方发行版(Ubuntu Core、OpenWrt、LibreELEC)的专属配置。这些内容要么与树莓派无关,要么官方文档已经写得足够好。
1.3 事实来源与版本标注约定
树莓派官方文档迭代很快,本文以 raspberrypi.com/documentation 2026 年在线版本为准。凡是涉及具体数字(引脚号、频率、文件路径、命令参数)的地方,都在附录 A 标注了出处。三点提醒:
| 约定 | 含义 |
|---|---|
| Bookworm 起 | 指 Raspberry Pi OS 基于 Debian 12(Bookworm)的发行版。它把启动分区从 /boot 挪到了 /boot/firmware,默认显示服务从 X11 换成了 Wayland + Wayfire。 |
| Pi 5 起 | 指 Raspberry Pi 5、500、500+ 与 CM5。这一代引入 RP1 南桥,GPIO 不再由 SoC 直接提供,旧库 RPi.GPIO 失效。 |
| 原文保留的命令 | 文中所有 sudo apt install、cmake、raspi-config 等命令均按官方文档原样给出,不做本地化改写,避免版本漂移。 |
1.4 命令与代码的书写约定
#开头表示一行命令的解释说明,不是 root 提示符;命令行输入一律以$开头表示普通用户、sudo显式标注提权。- 路径统一使用 Linux 正斜杠。
<hostname>、<username>这类尖括号是占位符,替换时不保留尖括号。 - 代码块里的行尾反斜杠续行符是可执行的,不是排版装饰。
1.5 MCU 工程师转树莓派最容易卡住的四件事
① 「GPIO 编号」有三套
物理引脚号(Board)、BCM 编号(Broadcom SoC 通道号)、以及已归档的 WiringPi 编号。官方文档与 gpiozero 一律用 BCM 编号。gpiozero 的 LED(17) 指的是 BCM 17,落在物理引脚 11 上。
② 「重启才生效」
config.txt 由 GPU 早期固件读取,改完必须 reboot。这一点与 MCU 里改了寄存器立刻生效完全不同。
③ 「权限」是 Linux 的一等公民
用 GPIO 的用户必须在 gpio 组,读 I2C 要 i2c 组,抓串口要 dialout 组。默认 pi 用户已具备,新建用户要手动加:sudo usermod -a -G gpio <user>。
④ 「实时性」要指望 Pico
Linux 是分时系统,GPIO 翻转抖动在毫秒级。需要硬实时请用 Pico 做前端、树莓派做后端,两者通过 UART / I2C / SPI 或 USB 通信。
2 · 树莓派家族全景与选型
树莓派不是一个产品,而是五个形状完全不同、开发方式也完全不同的产品系列。第一步选错系列,后面怎么做都是徒劳。
2.1 五大系列怎么分
官方把产品划成五条线,分界线不是性能,而是形态与开发方式:旗舰单板(SBC)跑完整 Linux;键盘机把 SBC 塞进键盘壳;Zero 在最小体积里塞 Linux;Compute Module(CM)把 SBC 拆成 DDR2 SODIMM 或 100 pin 高密度连接器,交给客户画载板;Pico 则是完全另一条路 —— 它不跑 Linux。
来源:Raspberry Pi Documentation — Raspberry Pi computer hardware
2.2 旗舰单板系列:从 BCM2835 到 BCM2712
Model B 表示带以太网口,Model A 表示低成本缩小版 —— 没有网口、内存更小、USB 更少。这条命名规则从 Model B 一直沿用到 Pi 4。
| 型号 | SoC | 内存 | GPIO | 关键连接 | 供电 |
|---|---|---|---|---|---|
| Raspberry Pi Model B | BCM2835 | 256 MB / 512 MB | 26 pin | HDMI · 2×USB 2.0 · CSI · DSI · 3.5 mm 音频 · RCA 复合视频 · 100 Mb/s RJ45 · SD 卡槽 | micro-USB |
| Raspberry Pi Model B+ | BCM2835 | 512 MB | 40 pin | HDMI · 4×USB 2.0 · CSI · DSI · 3.5 mm AV · 100 Mb/s RJ45 · microSD | micro-USB |
| Raspberry Pi 2 Model B | 版本号 rev1.1 BCM2836 rev1.2 BCM2837 rev1.3 BCM2837B0 | 1 GB | 40 pin | HDMI · 4×USB 2.0 · CSI · DSI · 3.5 mm AV · 100 Mb/s RJ45 · microSD | micro-USB |
| Raspberry Pi 3 Model B | BCM2837 / BCM2837B0 | 1 GB | 40 pin | 同上 + 2.4 GHz 单频 802.11n Wi-Fi(35 Mb/s)· BT 4.1 / BLE | micro-USB |
| Raspberry Pi 3 Model B+ | BCM2837B0 | 1 GB | 40 pin | 300 Mb/s RJ45 带 PoE 支持 · 2.4/5 GHz 双频 802.11ac(100 Mb/s)· BT 4.2 / BLE | micro-USB |
| Raspberry Pi 4 Model B | BCM2711 | 1 / 2 / 4 / 8 GB | 40 pin | 2×micro-HDMI · 2×USB 2.0 · 2×USB 3.0 · CSI · DSI · GbE RJ45 带 PoE+ · 802.11ac(120 Mb/s)· BT 5 / BLE | USB-C 5 V 3 A(15 W) |
| Raspberry Pi 5 | BCM2712 | 1 / 2 / 4 / 8 / 16 GB | 40 pin | 2×micro-HDMI · 2×USB 2.0 · 2×USB 3.0 · 2×mini 22-pin 0.5 mm 复合 CSI/DSI · 单 lane PCIe FFC · UART 座 · RTC 电池座 · 4 pin JST-SH 风扇座 · GbE PoE+ · 802.11ac Wi-Fi 5(300 Mb/s)· BT 5 / BLE | USB-C 5 V 5 A(25 W) |
除了 SoC 换成 BCM2712,Pi 5 在板上新增了:单 lane PCIe FFC 连接器(接 NVMe HAT 或官方 M.2 HAT)、专用 UART 三针座(调试串口,不用再占 GPIO14/15)、RTC 电池座(断电走时)、4 pin JST-SH PWM 风扇座(带转速反馈)。做工业产品时这四个接口的含金量远高于 CPU 跑分。
2.3 键盘机 X00 系列
型号标识符形如 <X00>,其中 X 对应同代旗舰 SBC:Pi 400 就是 Pi 4 的键盘版。500+ 是这一代最特殊的 —— 板载 256 GB M.2 SSD,出厂预装系统,不再是 microSD。
| 型号 | SoC | 内存 | 存储 | 供电 |
|---|---|---|---|---|
| Raspberry Pi 400 | BCM2711 | 4 GB | microSD | USB-C 5 V 3 A(15 W) |
| Raspberry Pi 500 | BCM2712 | 8 GB | microSD | USB-C 5 V 5 A(25 W) |
| Raspberry Pi 500+ | BCM2712 | 16 GB | microSD + 内置 M.2 SSD 256 GB | USB-C 5 V 5 A(25 W) |
2.4 Zero 系列:最小体积里的完整 Linux
Zero 全系 512 MB 内存、mini HDMI、2×micro-USB(一个供电一个接外设)、microSD,从 Zero v1.3 起都带 mini 22-pin 0.5 mm CSI 摄像头座。命名后缀这里最容易读错:
| 后缀 | 含义 | 例子 |
|---|---|---|
| H | GPIO 排针已预焊(第一代 Pico / Zero 用这个写法) | Zero WH |
| W | 带无线连接(Wi-Fi + 蓝牙) | Zero W |
| WH | 带无线 + 排针已焊 | Zero WH |
| 无后缀 | 不焊排针,也没有无线,需自己焊接或使用第三方针套件 | Zero |
| with headers | 第二代起不再用 H 后缀,改成英文词组标注已焊排针 | Zero 2 W with headers |
Zero 2 W 换用 RP3A0(四核 Cortex-A53 @ 1 GHz),性能比单核 1 GHz 的老 Zero 提升极大,价格几乎不变 —— 这是当前 Zero 系列唯一推荐的型号。
2.5 Compute Module 系列:量产产品的正确入口
CM 把 SBC 的核心部分拆出来,做成不带任何外设连接器的模块,由客户自己画载板来提供项目实际需要的接口。它支持工业温度范围、同一型号保证多年供货,是做量产产品的正确入口。
| 型号 | SoC | 内存 | 板载 eMMC | 形态 | 无线 |
|---|---|---|---|---|---|
| CM1 | BCM2835 | 512 MB | 4 GB | DDR2 SODIMM | 无 |
| CM3 / CM3Lite | BCM2837 | 1 GB | 4 GB / Lite 为 0 | DDR2 SODIMM | 无 |
| CM3+ | BCM2837B0 | 1 GB | 8 / 16 / 32 GB,Lite 为 0 | DDR2 SODIMM | 无 |
| CM4S | BCM2711 | 1 / 2 / 4 / 8 GB | 8 / 16 / 32 GB,Lite 为 0 | DDR2 SODIMM | 无 |
| CM4 | BCM2711 | 1 / 2 / 4 / 8 GB | 8 / 16 / 32 GB,Lite 为 0 | 双 100 pin 高密度座 | 可选 Wi-Fi 5 / BT 5 |
| CM5 | BCM2712 | 2 / 4 / 8 / 16 GB | 16 / 32 / 64 GB,Lite 为 0 | 双 100 pin 高密度座 | 可选 Wi-Fi 5 / BT 5 |
官方特别标注:使用 DDR2 SODIMM 物理形态的计算模块(CM1~CM4S),并不符合 DDR2 SODIMM 电气规范,不要按内存条的标准设计电源与走线。CM4 / CM5 用双 100 pin 高密度连接器,完全不是这个形态。
2.6 Pico 微控制器系列
Pico 跑不了 Linux,程序直接烧进片内 Flash,上电即运行。它是硬实时任务的答案:PIO(可编程 I/O)可以在不占用 CPU 的情况下精确模拟时序,这是 RP2040 / RP2350 最有辨识度的能力。
| 型号 | SoC | SRAM | 板载 Flash | GPIO | 无线 |
|---|---|---|---|---|---|
| Pico / Pico H | RP2040 | 264 kB | 2 MB | 2×20 pin,H 表示已焊针 | 无 |
| Pico W / WH | RP2040 | 264 kB | 2 MB | 同上 | 2.4 GHz 802.11n(10 Mb/s)· BT 5.2 / BLE |
| Pico 2 | RP2350 | 520 kB | 4 MB | 2×20 pin | 无 |
| Pico 2 W | RP2350 | 520 kB | 4 MB | 2×20 pin | 2.4 GHz 802.11n(10 Mb/s)· BT 5.2 / BLE |
2.7 选型决策树
- 要接显示器、跑浏览器、NAS、AI 推理 → Pi 5(或键盘形态的 500)。
- 成本敏感、功能简单的数据采集网关 → Zero 2 W。
- 做产品的、要长期供货、要自画载板 → CM5(新设计首选)/ CM4(已量产项目)。
- 硬实时控制、电机驱动、自定义时序 → Pico 2(RP2350),必要时与 Pi 5 组成异构双芯片方案。
- 只是想体验桌面 Linux → Pi 400 / 500,键盘壳省掉一堆外设接线的麻烦。
2.8 EOL 与长期供货
Raspberry Pi 2 Model B rev1.1 / 1.2(BCM2836 / BCM2837)与 CM3 / CM3Lite 因核心 SoC 停产已进入 EOL,官方 EOL 日期为 2025 年 10 月 16 日。既有设计的替代建议:Pi 2B rev1.3(机械尺寸相同,换 BCM2837B0);CM3 推荐换 CM3+(同尺寸,散热改进);新设计如需 SODIMM 形态用 CM4S,其余一律推荐 CM4 或 CM5。
2.9 和 STM32 / ESP32 怎么选
| 维度 | STM32 | ESP32 | 树莓派 SBC | 树莓派 Pico |
|---|---|---|---|---|
| 软件形态 | 裸机 / RTOS | FreeRTOS / IDF | 完整 Linux(Debian) | 裸机 / FreeRTOS |
| 实时性 | 硬实时(中断 µs 级) | 软实时 + Wi-Fi 抖动 | 软实时,GPIO 抖动毫秒级 | 硬实时(中断 µs 级) |
| 启动时间 | 毫秒级 | 百毫秒级 | 20~40 秒 | 毫秒级 |
| 典型内存 | 几十 KB ~ 1 MB SRAM | 几百 KB SRAM + PSRAM | 1 ~ 16 GB LPDDR4X | 264 kB / 520 kB SRAM |
| 存储 | 片内 Flash + 外挂 NOR | 外挂 SPI NOR Flash | microSD / eMMC / NVMe | 2 MB / 4 MB 板载 Flash |
| 文件系统 | FatFS / LittleFS | SPIFFS / FatFS | ext4 原生 | FatFS(少用) |
| 适合做什么 | 超低功耗、精密控制、汽车 | Wi-Fi 物联网节点 | 网关、视觉、边缘 AI、桌面 | PIO 自定义时序、低成本控制 |
3 · 启动链路、启动介质与处理器
树莓派没有 BIOS。它靠 GPU 在 Arm CPU 之前读取一个纯文本文件 —— config.txt —— 来决定「怎么启动」。理解这条链路,是排查「黑屏、点不亮、卡彩虹屏」的前提。
3.1 七个阶段:从上电到 systemd
来源:Raspberry Pi Documentation — config.txt / Bootloader configuration
3.2 每个阶段具体在做什么
| 阶段 | 执行者 | 做什么 | 失败时的现象 |
|---|---|---|---|
| ① BootROM | SoC 掩膜代码 | 寻找并加载二阶段 bootloader。Pi 4/5 从 SPI EEPROM 找,早期机型从 SD 卡找 bootcode.bin | 完全无反应:电源 LED 亮但无任何输出 |
| ② EEPROM bootloader | SPI EEPROM 里的固件 | 初始化 SDRAM、枚举启动设备(SD / USB / NVMe / 网络),按 BOOT_ORDER 依次尝试 | 彩虹屏之后黑屏;或反复重启 |
| ③ start.elf | VideoCore GPU | 读取 config.txt、加载设备树 .dtb 与 overlay、准备 framebuffer | 屏幕有彩虹画面但不进系统 |
| ④ ARM stub | armstub 二进制 | 一小段 Arm 代码,初始化中断控制器等底层硬件,把控制权交给内核 | 极罕见:停在 Loading kernel |
| ⑤ Linux kernel | kernel_2712.img | 解压自身、初始化驱动、按设备树匹配并 probe 设备 | 停在内核 decompression OK 之后,或 panic |
| ⑥ initramfs | 可选 | 提供一个临时根文件系统并挂载真正的 rootfs | Unable to mount root fs |
| ⑦ systemd | PID 1 | 启动所有 target 与用户服务 | 能进 emergency mode,或某个 service 反复失败 |
3.3 启动介质怎么选:microSD / USB / NVMe / 网络
树莓派必须有非易失存储介质作为 boot media。绝大多数机型从 microSD 启动,较新型号额外支持 USB 大容量存储、网络启动(PXE)、以及通过 PCIe 的 NVMe。
| 介质 | 容量建议 | 优点 | 缺点 | 适用 |
|---|---|---|---|---|
| microSD | OS Lite ≥ 8 GB 桌面版 ≥ 32 GB | 最通用、更换方便、Imager 直接写 | 随机写寿命有限、速度慢、震动易松 | 原型开发、教育、轻度应用 |
| USB SSD | 按需 | 速度明显优于 SD、寿命好 | 占用一个 USB 口、需要额外供电评估 | Pi 4 / Pi 5 的日常桌面与 NAS |
| NVMe(PCIe) | 按需 | 最快、寿命最好 | 需要 Pi 5 + HAT,成本最高 | Pi 5 高性能场景、数据库 |
| 网络启动 PXE | 服务器端 | 无本地存储,集中管理 | 需要服务器与稳定网络,配置复杂 | 机房集群、教室批量部署 |
| CM 板载 eMMC | CM5:16/32/64 GB | 焊死在模块上,抗震、一致性好 | Lite 版本没有,需外部介质 | 工业量产产品 |
上限:只能使用容量小于 2 TB 的 SD 卡,超过 MBR 分区表上限的不被支持。下限(更常见):老一批设备只能从 256 GB 或更小的启动分区启动,包括 Raspberry Pi Zero、第一代替旗舰机型、以及采用 BCM2836 的早期 Pi 2。
3.4 处理器血缘:从 BCM2835 到 RP2350
树莓派的处理器分成两条完全独立的血缘:BCM27xx 系列(跑 Linux,Broadcom 应用处理器)与 RP 系列(自研微控制器,RP2040 / RP2350),外加一颗为 Zero 2 W 定制的 RP3A0(BCM2837 家族的重新封装)。
| SoC | CPU | 峰值频率 | GPU / 协处理器 | 主要用在哪 |
|---|---|---|---|---|
| BCM2835 | 单核 ARM1176JZF-S | 700 MHz / Zero 1 GHz | VideoCore IV 250 MHz | Pi 1 A/A+/B/B+ · Zero · Zero W · CM1 |
| BCM2836 | 四核 Cortex-A7 | 900 MHz | VideoCore IV 250 MHz | Pi 2B rev1.1(已停产) |
| BCM2837 | 四核 Cortex-A53(Armv8) | 1.2 GHz | VideoCore IV 400 MHz | Pi 3B 早期 · Pi 2B rev1.2 · CM3(已停产) |
| BCM2837B0 | 四核 Cortex-A53 | 1.4 GHz | VideoCore IV 400 MHz | Pi 2B rev1.3 · 3B 后期 · 3A+ · 3B+ · CM3+ |
| RP3A0 | 四核 Cortex-A53 64 位 | 1 GHz(可超 1.2 GHz) | VideoCore IV | Zero 2 W / Zero 2 W with headers |
| BCM2711 | 四核 Cortex-A72(Armv8-A)64 位 | 1.5 GHz(arm_boost 后 1.8 GHz) | VideoCore VI 500 MHz | Pi 4B · CM4 · CM4S · Pi 400 |
| BCM2712 | 四核 Cortex-A76(Armv8-A) | 2.4 GHz | VideoCore VII 12 核 960 MHz | Pi 5 · Pi 500 · 500+ · CM5 |
| RP2040 | 双核 Cortex-M0+ | 133 MHz | PIO ×2 · 可编程状态机 | Pico / Pico H / Pico W / Pico WH |
| RP2350 | 双核 Cortex-M33 + 双核 Hazard3 RISC-V | 150 MHz | PIO ×3 · SHA-256 · DCP | Pico 2 / Pico 2 W |
3.5 BCM2712:Pi 5 的心脏
| 项目 | BCM2712 规格 | 对比 BCM2711(Pi 4) |
|---|---|---|
| 工艺 | 16 nm | 28 nm |
| CPU | 四核 Arm Cortex-A76,Armv8-A ISA,最高 2.4 GHz | 四核 Cortex-A72,1.5 / 1.8 GHz |
| Cache | 每核 64 k I + 64 k D;512 kB L2 / 核;2 MB 共享 L3 | 每核 32 kB D + 48 kB I;1 MB 共享 L2 |
| GPU | VideoCore V3D VII,12 核,960 MHz,OpenGL ES 3.1 + Vulkan 1.3 | VideoCore VI 500 MHz,OpenGL ES 3.0 |
| 内存 | 32 位 LPDDR4X 接口,最高 17 GB/s,实际配到 1~16 GB | LPDDR4-2400,最高 8 GB |
| 视频 | 4Kp60 HEVC 硬解;H264 1080p60 软解约占 50~60% CPU | H.265 4Kp60 解码;H.264 1080p60 解码 |
| 显示 | 改进 HVS + HDMI 控制器,双 4Kp60 | 双 micro-HDMI,4Kp30 / 4Kp60 受限 |
| ISP | 树莓派自研 ISP,1 GPixel/s | 沿用早期 ISP |
| PCIe | ×1 与 ×4 PCI Express 接口 | 单 PCIe 链路用于 USB 3.0 |
| 整体性能 | 常见 CPU / I/O 密集场景提升 2~3 倍 | — |
Cortex-A76 存在若干已知漏洞,官方在 Raspberry Pi OS 中全部做了缓解。用下面这条命令可以列出当前已生效的缓解措施:
$ lscpu | grep Vulnerability | grep -v "Not affected"
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
注意:Arm 处理器不使用微代码,所有缓解都在内核层面实现;第三方发行版如果内核老旧,可能缺少最新缓解,请以自己板子上 lscpu 的真实输出为准。
来源:Raspberry Pi Documentation — Processors / IO controllers
3.6 RP1:为什么 Pi 5 的 GPIO 变了天
RP1 是树莓派自研的南桥芯片,通过 PCIe 挂在 BCM2712 下面,承担了 Pi 5 绝大部分对外 I/O:USB、以太网 MAC、SDIO(microSD 与 Wi-Fi)、GPIO 排针、CSI/DSI,以及那个 PCIe ×1 的 FFC 连接器。
GPIO 不再由 SoC 的 GPIO 寄存器提供,而是挂在 RP1 的字符设备上。因此依赖直接读写 SoC 寄存器的 RPi.GPIO 在 Pi 5 上无法工作。请统一改用 gpiozero(内部引脚工厂自动选择 lgpio 或 RP1 后端)或 libgpiod 命令行 / lgpio 库。详见第 8 章。
4 · 40-pin GPIO 与硬件接口
树莓派最有用的东西,是沿着板子顶边那一排排针。它同时也是最容易把板子烧掉的地方 —— GPIO 是 3.3 V 电平,且不是 5 V 容忍。
4.1 排针的物理布局
从 Raspberry Pi 1 Model B+ 起的所有当前在售机型都用同一个 40 pin 排针,引脚间距 0.1 in(2.54 mm)。Zero / Zero W / Zero 2 W 上是空焊盘,没有针,需自己焊或用第三方针套件。
来源:Raspberry Pi Documentation — GPIO and the 40-pin header
4.2 三套编号:别再混淆 BCM 和 Board
| 编号体系 | 定义 | 用在什么地方 | 示例 |
|---|---|---|---|
| BCM(Broadcom) | SoC 内部的 GPIO 通道号 | gpiozero / lgpio / libgpiod 的默认编号、官方文档、绝大多数 Python 库 | LED(17) 表示 BCM 17 |
| Board(物理) | 排针上从 1 数到 40 的位置号 | 万用表量测、盲插端子排、接线图 | BCM 17 在物理引脚 11 上 |
| WiringPi | Gordon Henderson 早年库的编号 | 已于 2019 年归档,不要再使用;旧 C 代码移植时改写成 BCM | — |
gpiozero 默认随 Raspberry Pi OS 安装,它提供了一个命令行工具,在终端里输入:
$ pinout
会直接打印出你这块板子的彩色排针图。工具有 (a) 图形排针 (b) 引脚功能说明两部分,比翻官方文档更快。
4.3 电压与电流:三条不能碰的红线
- 电平是 3.3 V,且不是 5 V 容忍。输出高为 3.3 V,输入也只能承受 3.3 V。把 5 V 传感器的输出脚直接接到 GPIO 上会烧毁 SoC(Pi 4)或 RP1(Pi 5)。需要 5 V 通信时用电平转换器或分压。
- 3.3 V 和 5 V 电源脚的输出能力有限。排针上只有 2 个 5 V、2 个 3.3 V、8 个 GND 是固定功能,不能重新配置。
- 不要直接驱动感性/大电流负载。LED 必须串电阻;电机、继电器一定要走 H 桥或电机驱动板,不能直连 GPIO。
4.4 复用功能速查
| 功能 | 引脚 | 备注 |
|---|---|---|
| I2C1 | SDA = GPIO 2(固定上拉) SCL = GPIO 3(固定上拉) | GPIO 2/3 有板上固定上拉电阻,做 HAT 识别是不能挪的 |
| I2C0(ID EEPROM) | ID_SD = GPIO 0 ID_SC = GPIO 1 | 专留给 HAT 上的 EEPROM 做自动识别,不要复用 |
| SPI0 | MOSI = GPIO 10 MISO = GPIO 9 SCLK = GPIO 11 CE0 = GPIO 8 · CE1 = GPIO 7 | 最常用的一组,接 SPI NOR / NAND Flash 就用它 |
| SPI1 | MOSI = GPIO 20 MISO = GPIO 19 SCLK = GPIO 21 CE0 = GPIO 18 · CE1 = GPIO 17 · CE2 = GPIO 16 | 辅助 SPI,可接第二个外设 |
| UART0 | TX = GPIO 14 RX = GPIO 15 | 默认用作 Linux 串口控制台;要让出来跑业务需改 raspi-config 或 config.txt |
| 硬件 PWM | GPIO 12 / 13 / 18 / 19 | 只有这 4 个脚是真硬件 PWM;其他脚的软件 PWM 抖动明显 |
| 软件 PWM | 任意脚 | gpiozero 可模拟,适合点 LED,不适合电机 |
文档中明确:GPIO 0 与 GPIO 1 在板上存在(物理引脚 27 / 28),但保留给高级用途 —— 即 HAT ID EEPROM 的 I2C。做产品或画 HAT 时不要把这两脚拿去当普通 IO。
4.5 供电规格:买错电源是最常见的「不稳定」来源
官方强调:推荐值要在插头侧测量,而不是在电源适配器侧;如果线材可拆卸,还要考虑线上的压降。
| 机型 | 推荐电压电流 | 官方配套电源 | 备注 |
|---|---|---|---|
| Raspberry Pi 5 / 500 | 5 V @ 5 A | 27 W USB-C 电源 | 若用 5 V 3 A,外设电流会被限制到 600 mA |
| Raspberry Pi 4B / 400 | 5 V @ 3 A | 15 W USB-C 电源 | 3 A 是底线,USB 硬盘多时要加带供电的集线器 |
| Raspberry Pi 3 全系 | 5 V @ 2.5 A | 12.5 W micro-USB 电源 | — |
| Raspberry Pi 2 Model B | 5 V @ 2.5 A | 12.5 W micro-USB 电源 | — |
| Raspberry Pi 1 全系 | 5 V @ 2.5 A | 12.5 W micro-USB 电源 | — |
| Raspberry Pi Zero 全系 | 5 V @ 2.5 A | 12.5 W micro-USB 电源 | 注意别把线插到那个形状相同的 USB 数据口上 |
| Raspberry Pi 500+ | 5 V @ 5 A | 27 W USB-C 电源 | 因内置 M.2 SSD,供电要求更严 |
上电前务必确认:OS 已经写好了(没写系统不亮是正常的),电源线插的是标有 POWER IN / PWR IN / PWR 的那个口。Zero 系列上有一个形状相似的 USB 输出口,插错非常常见。
4.6 权限:新用户第一个要补的组
# 使用 GPIO 的前提:用户在 gpio 组里。默认用户默认具备,新建用户要手动加
$ sudo usermod -a -G gpio <username>
# 常用到的组还有这些
$ sudo usermod -a -G i2c,spi,dialout <username>
# 重新登录后才生效,验证一下
$ groups
5 · Raspberry Pi OS 与首次上电配置
把系统写进卡这件事官方只推荐一种方式:Raspberry Pi Imager。它不只是个写盘工具 —— 在离线阶段把主机名、用户、Wi-Fi、SSH 一次性配好,才是它的价值所在。
5.1 Imager 的五步流程
来源:Raspberry Pi Documentation — Getting started
5.2 Imager 的 App Options 与自定义源
Imager 左下角的齿轮(App Options)里藏着几个实用开关:
| 选项 | 作用 | 建议 |
|---|---|---|
Play sound when finished | 写入完成后播放提示音 | 批量写卡时开着,不用盯屏幕 |
Eject media when finished | 完成后自动弹出介质 | 开着,避免热拔插损坏分区 |
Enable anonymous statistics telemetry | 发送匿名统计(含设备与 OS 信息) | 涉密环境建议关闭 |
Disable warnings | 抑制写卡警告 | 不建议,警告通常正是提示你选错了磁盘 |
| 自定义 Content Repository | 等价于环境变量 IMAGER_REPO_URL,指定 OS 列表与设备列表的来源 | 离线内网部署、私有镜像仓库时使用 |
5.3 三个 OS 版本怎么选
| 版本 | 包含什么 | 推荐最小容量 | 适用 |
|---|---|---|---|
| Raspberry Pi OS Lite | 纯命令行,无桌面 | 8 GB | 无头部署、服务器、嵌入式(首选) |
| Raspberry Pi OS(桌面版) | 桌面环境 + 基础软件 | 32 GB | 学习、桌面替代、需要 GUI 调试 |
| Raspberry Pi OS Full | 桌面 + 全套推荐应用 | 32 GB | 教学、离线演示 |
无头场景首选 Lite,但要注意:VNC 不兼容 Raspberry Pi OS Lite,因为它是屏幕共享,需要桌面会话。Lite 上只能用 SSH 或 Raspberry Pi Connect。
5.4 无头配置:三个文件搞定
没有显示器、键盘、鼠标时,需要在已写好 OS 的启动分区(bootfs)里放两个文件:
# 1) 创建名为 ssh 的空文件(没有扩展名),开启 SSH
$ touch ssh
# 2) 创建 userconf.txt,内容只有一行:用户名:加密密码
# 加密串用下面的命令生成(不是明文的密码)
$ openssl passwd -6
# 3) 把两个文件放进 bootfs 分区根目录,安全弹出,插到板上通电
| 项目 | 规则 |
|---|---|
| 用户名 | 必须以字母开头;只能包含小写字母、数字、下划线、连字符;最长 31 字符 |
| 密码串 | 必须是 openssl passwd -6 生成的密文,不能写明文 |
| openssl -6 | macOS 默认的 SSL 实现可能是 LibreSSL,不支持 -6 参数,先用 openssl version 确认,必要时 brew install openssl |
| Wi-Fi 配置 | 从 Bookworm 起不再支持在 boot 分区放 wpa_supplicant.conf,只能用 Imager 预配置 |
| 登录地址 | ssh <username>@<hostname>.local(同一网络内靠 mDNS 解析) |
5.5 首次上电的桌面配置向导
如果你在 Imager 里跳过了 Customisation,或者用了预装 OS 的套件,上电后会进入配置向导。它的七步是:
- Welcome and Bluetooth:同时扫描蓝牙外设。欢迎窗口上显示的 IP 地址只有在走以太网时才有。
- Country:国家 / 语言 / 时区;可勾选强制用英文界面、美式键盘。
- User:设置管理员用户名与密码(规则同上,最长 31 字符)。
- Wireless network:从列表里选 Wi-Fi 并输密码,也可跳过。
- Default browser:Chromium 或 Firefox;可选卸载未选中的那个以省空间。
- Software update:联网时更新系统,可能长达半小时。
- Finish:确认后 Launch;若出现 Restart 则重启。
键盘不带鼠标时可以用 Tab 键在界面里前进;如果用蓝牙键鼠,配对用的 USB 蓝牙适配器要在开机前插好。
5.6 分区结构:Bookworm 之后路径变了
# 启动分区的新家(Bookworm 起)
/boot/firmware/config.txt # GPU 早期固件读取的配置文件
/boot/firmware/cmdline.txt # 内核命令行
/boot/firmware/overlays/ # 全部 Device Tree overlay(overlay_prefix 默认值)
# 很多老教程还写着 /boot/config.txt —— 在新系统里那是错的,改了不生效
# 查看当前生效的配置
$ vcgencmd get_config arm_freq
$ vcgencmd get_config int # 所有非零整数配置项
$ vcgencmd get_config str # 所有非空字符串配置项
5.7 系统与固件更新
# 常规系统与软件包更新
$ sudo apt update
$ sudo apt full-upgrade -y
# Pi 4 / Pi 5 的 EEPROM bootloader 更新(这一步和 apt 升级是两回事)
$ sudo rpi-eeprom-update
$ sudo rpi-eeprom-update -a
# 清理不再需要的包
$ sudo apt autoremove -y
rpi-update 会把内核和固件拉到开发版主线,风险较高。日常维护走 apt full-upgrade 即可,EEPROM 升级单独用 rpi-eeprom-update。