计算模块(CM)硬件
树莓派 计算模块(CM) 是标准树莓派单板计算机(SBC)的紧凑版本,主要面向嵌入式和工业应用设计。计算模块包含树莓派的核心组件,但省略了HDMI、USB或以太网等标准接 口。
树莓派 计算模块I/O扩展板(CMIO) 提供物理接口、外围设备连接及扩展选项,用于访问和扩展计算模块的功能。该扩展板既可作为独立产品使用,支持快速原型开发和嵌入式系统构建,也可作为自定义载板(I/O板)的参考设计方案。无论哪种方式,您均可根据应用需求选择性使用所需接口。
本页面内容:
- 汇总现有树莓派计算模块及I/O板型号,包含兼容性与核心特性信息
- 介绍计算模块5(CM5)及其I/O板(CM5IO)的配套配件
- 说明树莓派计算模块的刷写与启动流程
- 详解计算模块EEPROM引导程序的配置方法
- 指导如何通过设备树与覆盖层连接并启用摄像头、显示屏等外设
- 提供数据手册、原理图及设计资源的链接
计算模块
树莓派计算模块是旗舰级树莓派单板计算机(SBC)的 系统级模块(SoM) 版本。它们专为工业和商业应用设计,例如数字标牌、瘦客户端和流程自动化。许多开发者和系统设计师选择计算模块而非旗舰树莓派型号,正是看中其紧凑设计、灵活性以及对板载eMMC存储的支持。
内存、存储与无线版本
树莓派计算模块提供多种版本,差异体现在内存规格、嵌入式多媒体卡(eMMC)闪存容量(焊接于主板)以及无线连接功能(Wi-Fi和蓝牙)。
- 内存:计算模块1、3及3+提供固定容量的RAM。计算模块4、4S和5提供不同容量的RAM;具体选项详见本页面各型号专属章节。
- 存储:计算模块3、3+、4、4S和5提供多种存储方案,后期型号较早期型号提供更多选项及更大容量。计算模块1固定配备4GB存储空间。存储采用eMMC闪存,具备低功耗特性,内置增强可靠性的功能。无板载存储的型号后缀为Lite或L,例如
CM5Lite或CM3L。 - 无线:计算模块4和5提供可选Wi-Fi及蓝牙支持。
型号一览
下表按时间倒序汇总了树莓派计算模块,列出其SoC、GPU、CPU及外形规格以便快速参考。有关各型号的详细信息(包括内存和存储选项),请参阅本页后续专属章节。
| 型号 | 基于 | SoC | GPU | CPU | 外形规格 |
|---|---|---|---|---|---|
| CM5 (2024) | 树莓派5 | 博通BCM2712 | VideoCore VII | 4×Cortex-A76(2.4 GHz) | 双100针接口 |
| CM4S (2022) | 树莓派4B(采用CM3外形规格) | 博通BCM2711 | VideoCore VI | 4×Cortex-A72 1.5 GHz | DDR2 SODIMM |
| CM4 (2020) | 树莓派4B | 博通BCM2711 | VideoCore VI | 4×Cortex-A72 1.5 GHz | 双100针接口 |
| CM3+ (2019) | 树莓派3B+ | 博通BCM2837B0 | VideoCore IV | 4 × 1.2 GHz Cortex-A53 | DDR2 SODIMM |
| CM3 (2017; 2025年10月停产) | 树莓派3B | 博通BCM2837 | VideoCore IV | 4 × 1.2 GHz Cortex-A53 | DDR2 SODIMM |
| CM1 (2014) | 树莓派B型 | 博通BCM2835 | VideoCore IV | 1×ARM1176JZF-S 700 MHz | DDR2 SODIMM |
| CM0 (2025) | 树莓派Zero 2W | RP3A0 | VideoCore IV | 4×Cortex-A53 1 GHz | 39x33mm 超小型邮票孔核心板 |
计算模块 5 (CM5)
计算模块5
计算模块5(CM5)融合了树莓派5的核心组件与可选闪存存储。主要特性包括:
- 处理器:博通BCM2712。
- 内存选项:2 GB、4 GB、8 GB 或 16 GB RAM。
- 存储选项:0 GB(CM5Lite)、16 GB、32 GB 或 64 GB eMMC 闪存。
- 外形规格:配备两个 100 针高密度连接器,用于连接配套载板。
CM5采用与CM4相同的规格,提供超越标准树莓派主板的输入/输出(I/O)接口,为更复杂的系统和设计提供扩展选项。
计算模块 4S (CM4S)
计算模块4S
计算模块4S(CM4S)整合了树莓派4的核心组件并支持可选闪存存储。主要特性包括:
- 处理器:博通BCM2711
- 内存选项:1GB、2GB、4GB或8GB RAM
- 存储选项:0 GB(CM4SLite)、8 GB、16 GB 或 32 GB eMMC 闪存。
- 外形规格:标准 DDR2 SODIMM 模块。
与 CM4 不同,CM4S 延续了 CM1、CM3 和 CM3+ 采用的 DDR2 SODIMM 外形规格。
计算模块 4 (CM4)
计算模块4
计算模块4(CM4)融合了树莓派4的核心组件与可选闪存存储。主要特性包括:
- 处理器:博通BCM2711。
- 内存选项:1 GB、2 GB、4 GB 或 8 GB RAM。
- 存储选项:0 GB(CM4Lite)、8 GB、16 GB 或 32 GB eMMC 闪存。
- 外形规格:配备两个100针高密度连接器,用于连接配套载板。
- 温度范围选项:标准型号工作温度为-20°C至+85°C,宽温型号支持-40°C至+85°C。
与早期模块(CM1、CM3、CM3+)不同,CM4摒弃了DDR2 SODIMM外形规格,采用双100针高密度连接器布局,从而缩小了物理占用空间。此项重新设计支持以下新增功能:
- 双HDMI接口
- PCIe支持
- 以太网接口
计算模块 3+ (CM3+)
计算模块3+
计算模块3+(CM3+)融合了树莓派3 Model B+的核心组件与可选闪存存储。主要特性包括:
- 处理器 博通BCM2837B0。
- 内存:1 GB RAM。
- 存储选项:0 GB(CM3+Lite)或8 GB、16 GB、32 GB eMMC闪存。
- 外形规格:标准DDR2 SODIMM模块。
计算模块 3 (CM3)
计算模块3
计算模块3(CM3)整合了树莓派3的核心组件,并可选配4 GB闪存存储。主要特性包括:
- 处理器:博通BCM2837
- 内存:1 GB RAM
- 存储选项:0 GB(CM3Lite)或4 GB eMMC闪存
- 外形规格:标准DDR2 SODIMM模块。
计算模块 1 (CM1)
计算模块1
计算模块1(CM1)集成了树莓派B型主板的核心组件及4 GB闪存存储。主要特性包括:
- 处理器:博通BCM2835
- 内存:512 MB RAM
- 存储:4 GB eMMC闪存
- 外形规格:标准DDR2 SODIMM模块
计算模块 0 (CM0)
计算模块0
计算模块 0(CM0)包含 Raspberry Pi RP3A0 处理器,主要特性包括:
- 处理器:博通BCM2710A1
- 内存:512 MB RAM
- 存储选项:0 GB或8 GB、16 GB eMMC闪存。
- 外形规格:39x33mm 超小型邮票孔核心板
IO 板
树莓派计算模块I/O扩展板是配套的载板,为计算模块提供连接各类输入/输出(I/O)外设所需的接口。该扩展板具备以下功能:
- 为计算模块供电。
- 将通用输入/输出(GPIO)引脚连接至标准针脚排针,便于连接传感器或电子设备。
- 通过扁平柔性电缆(FFC)接口提供摄像头和显示屏连接功能
- 通过HDMI接口输出视频信号
- 通过标准USB接口连接外围设备
- 配备电源及运行状态指示LED灯
- 支持通过USB对eMMC存储器进行编程,实现模块内置存储器的刷写
- 在CM4IO和CM5IO上,通过连接器暴露PCIe接口,以便连接SSD或网卡等存储/外设设备。
树莓派IO板是通用开发板,专为计算模块的开发、测试和原型设计而打造。实际生产中,您可设计更小巧的定制载板,仅保留符合应用场景所需的连接器。
IO板兼容性
并非所有IO板均兼容所有计算模块型号。下表按时间倒序汇总了树莓派计算模块IO板,列出其兼容的计算模块(含精简版)、电源输入及尺寸。有关各板卡的详细信息(包括可用接口),请参阅本页后续专属章节。
| IO板卡 | 兼容CM型号 | 电源输入 | 尺寸 |
|---|---|---|---|
| CM5IO (2024) | CM5; CM4功能受限 | 5V(通过USB Type-C供电) | 160毫米×90毫米 |
| CM4IO (2020) | CM4; 功能缩减版CM5 | 通过GPIO接口获取5V电源 或 通过DC桶形插座获取12V电源 | 160毫米×90毫米 |
| CMIO3 (2017) | CM1, CM3, CM3+, 及 CM4S | 通过GPIO或微型USB接口供电5V | 85毫米×105毫米 |
| CMIO; CMIO1 (2014) | CM1 | 通过GPIO或微型USB接口供电5V | 85 毫米×105毫米 |
计算模块 5 IO 板
计算模块 5 IO板
计算模块5 I/O板(CM5IO)提供以下功能:
- 电源与控制接口
- USB-C供电采用与树莓派5相同标准:5V/5A(25W)或5V/3A(15W),外设电流限制为600mA。
- CM5专用电源按钮。
- 实时时钟(RTC)电池座。
- 视频与显示接口
- 两个HDMI接口。
- 两个MIPI DSI/CSI-2复合显示/摄像头柔性板接口(22针,0.5毫米间距线缆)。
- 网络与连接接口
- 两个USB 3.0(Type-A)接口,用于键盘、存储设备或外设。
- 一个USB 2.0(Type-C)接口,用于CM5刷写或扩展外设。
- 一个支持PoE的千兆以太网RJ45接口。
- 扩展与存储选项
- 兼容2230/2242/2260/2280规格的M.2 M键PCIe插槽。
- microSD卡槽(仅限无eMMC的CM5Lite型号使用,其他型号忽略此插槽)。
- 带40针GPIO接口的HAT扩展板位。
- PoE电源接口。
- 配置选项
- 跳线开关可禁用eMMC启动、EEPROM写入及无线连接等功能。
- 可选1.8V或3.3V GPIO电压。
- 风扇接口 四针JST-SH PWM风扇接口。
计算模块 4 IO 板
计算模块4 IO板
计算模块4 I/O板(CM4IO)提供以下功能:
- 电源与控制接口
- 通过GPIO接头提供5V电源,或通过桶形插座输入12V电源;若PCIe未启用,支持最高26V输入。
- 实时时钟(RTC)电池座。
- 视频与显示接口
- 两个HDMI接口。
- 两个MIPI DSI显示器柔性电缆接口(22针,0.5毫米间距)。
- 两个MIPI CSI-2摄像头柔性电缆接口(22针,0.5毫米间距)。
- 网络与连接接口
- 两个USB 2.0接口。
- 一个micro USB上游端口。
- 支持PoE的千兆以太网RJ45接口。
- 扩展与存储选项
- PCIe Gen 2插槽。
- microSD卡槽(仅适用于无eMMC的CM4Lite型号;其他版本忽略此插槽)。
- 带40针GPIO接口的HAT扩展区。
- PoE接口。
- 配置选项
- 跳线开关可禁用eMMC启动、EEPROM写入及无线连接等功能
- 可选1.8V或3.3V GPIO电压
- 风扇接口 支持标准12V风扇的PWM驱动接口
计算模块 IO 板
计算模块 IO板(版本3)
计算模块I/O板有两种版本:
计算模块I/O板(CMIO和CMIO3)提供以下功能:
- 电源与控制接口 通过GPIO或micro USB接口输入5V电源。
- 视频与显示接口
- 1个标准A型HDMI接口。
- 2个MIPI DSI显示器柔性电缆接口(22针,0.5毫米间距)。
- 2个MIPI CSI-2摄像头柔性电缆接口(22针,0.5毫米间距)。
- 网络与连接接口 1个USB 2.0 Type-A接口。
- 扩展与存储选项
- 46个GPIO引脚。 *(仅CMIO3)microSD卡槽(仅适用于未配备eMMC的CM3Lite、CM3+Lite及CM4SLite型号)。
计算模块 0 IO 板
计算模块0 IO板
计算模块 0 IO 板提供以下接口:
- 带 40 引脚 GPIO 连接器的 HAT 基底面
- HDMI 端口
- 1× Micro USB2.0 端口
- 1× Micro USB2.0 电源端口
- 1× MIPI DSI 显示器 FPC 连接器(22 针 0.5 毫米间距电缆)
- 1× MIPI CSI-2 摄像头 FPC 连接器(22 针 0.5 毫米间距电缆)
CM5 和 CM5IO 配件
树莓派为CM5和CM5IO提供以下配件:
- CM5IO外壳,CM5IO(及连接的CM5)的外壳。该外壳还可选配天线和散热器。
- 天线(CM4和CM5),支持2.4 GHz和5 GHz频段的天线,通过CM4或CM5实现无线连接。
- CM5散热器,用于散发CM5热量的被动式散热片。
CM5IO 外壳
Compute Module 5 IO 板 外壳(版本2)
计算模块5 I/O板(CM5IO)外壳是一款两件式金属外壳,组装后可为搭载CM5的CM5IO提供物理保护。
以下特性适用于最新版本的CM5IO外壳(版本2):
- 面向外部的连接器和LED开孔。
- 可拆卸预装可控风扇
- 树莓派天线套件安装点
- 预装风扇旁预留CM5散热器安装空间。
- 用于连接I/O板配件的空间(如M.2 SSD或PoE+ HAT+)
原始版本的外壳无法同时容纳所有列出的物品。有关不同版本的详细信息,请参阅版本说明。
外壳规格
Compute Module 5 IO 板 外壳接口
组装完成后,CM5IO外壳尺寸约为170毫米×94毫米×28毫米。外壳采用金属板材制造,重量约为350克。
为实现热管理,外壳内置预装风扇,可引导气流覆盖CM5和CM5IO组件。您可根据散热需求拆卸或更换风扇。根据机箱版本不同,还可选配散热器以提升散热性能;原版机箱需先拆除风扇,而新版机箱预留了同时容纳风扇与散热器的空间。
下图以毫米(mm)为单位展示了CM5IO外壳的物理尺寸。两种版本机箱尺寸完全一致,唯一区别在于风扇的安装位置。有关不同版本的详细信息,请参阅版本说明。
CM5 外壳物理规格
外壳版本
CM5IO外壳共有两个版本,区别在于预装风扇的位置:版本1与版本2。
左:CM5IO外壳版本1;右:CM5IO机箱版本2
第一版风扇位置更靠近机箱长边。该版本的内部布局及可用空间限制,无法同时容纳风扇与CM5散热器。若需安装CM5散热器,必须移除风扇。
第二版通过优化内部布局,将风扇移至更靠近机箱短边的位置。此改进布局无需改动即可同时容纳风扇与CM5散热器。
关于将CM5散热器安装至CM5主板(随后可连接至I/O板并装入CM5IO机箱)的操作指南,请参阅安装说明。
外壳组装
以下步骤详述最新版本CM5IO机箱(版本2)的组装流程。版本1未经改装无法同时容纳风扇和CM5散热器。若您持有版本1机箱,可选择移除风扇(详见步骤4)或跳过后续说明中的步骤6。不同版本信息请参阅版本说明。
在机箱内安装CM5IO:
- 将CM5连接至CM5IO* 将CM5向右旋转90度,使CM5上的双100针连接器与CM5IO上的连接器对齐,然后轻轻但稳固地按压以连接。安装孔也应保持对齐。
- 打开机箱 使用十字螺丝刀拧下并取下四颗螺丝(机箱左侧两颗,右侧两颗)。随后将机箱顶盖与底座分离,请妥善保管螺丝。
- 将CM5IO组件装入机箱 将CM5IO(含已连接的CM5主板)置于机箱底座,使其与主板四角附近的四个安装孔对齐。确保所有外置接口均与机箱前部的对应开孔对齐。随后使用四颗M2.5螺丝拧入四个安装孔,将CM5IO组件固定在底座上。
- 连接或拆卸风扇
- 若使用预装风扇,请将风扇接口插入CM5IO上标注为**FAN (J14)**的四针风 扇插座。
- 若需拆卸风扇,请从机箱顶部底面卸下风扇四角的固定螺丝。
- 可选:安装外部天线 如需安装天线,请参照本页天线安装指南(CM4/CM5适用)操作。
- 可选:安装散热器 如需安装散热器,请参照CM5散热器安装指南操作。若同时安装天线,请先连接天线的U.FL接口以方便后续操作。
- 可选:安装摄像头或显示屏 若使用摄像头或显示屏,请将扁平电缆穿过机箱背部的插槽,并连接至CM5IO主板上的CAM/DISP接口。
- 可选:安装M.2固态硬盘 若需安装M.2固态硬盘,请将其插入CM5IO右下角的M.2插槽,并用固定螺丝从对侧端面锁紧。
- 可选:安装扩展板 若需安装扩展板,请将其与40针GPIO接口及固定柱对齐,确保扩展板覆盖电池槽位置,随后用力按压到位并用螺丝固定。
- 关闭机箱盖 将机箱顶盖翻折至底座,对齐机箱左右两侧的螺丝孔位及背面的电源按钮。使用十字螺丝刀将四颗螺丝拧回原位,注意避免过度拧紧。
SD卡槽采用推入式设计。插入SD卡时,请将卡面接触点朝下推入卡槽。取出时,先向卡槽内部推压卡体使其解锁,再向外拔出。
天线(CM4和CM5)
Raspberry Pi 天线套件提供经过认证的外部天线,可增强 CM4 或 CM5 的无线接收能力。
CM4 天线
天线规格
该天线支持双频Wi-Fi,可连接至CM4或CM5主板上的U.FL连接器。天线完全展开时高度约为108.5毫米,呈90度角时长度约为87.5毫米;SMA转U.FL连接线长度约为205毫米。
CM4和CM5天线物理规格
通过CM5IO外壳连接天线
您可将天线与 CM5IO外壳 配合使用。若需通过CM5IO外壳将天线连接至计算模块,请先完成 CM5IO外壳中前四步操作,再执行以下步骤:
- 连接U.FL接口 将天线线缆上的U.FL接口连接至计算模块左上角安装孔旁的U.FL兼容接口。若需安装散热器,请在此步骤前完成连接,因散热器可能影响U.FL接口的安装。
- 插入SMA连接器 取下CM5IO外壳内侧天线端口的橡胶塞。随后从外壳内部将SMA连接器(平坦面朝上)推入天线端口,确保其穿透外壳且外部可触及。
- 固定SMA连接器位置 顺时针旋转六角锁紧螺母及垫圈,直至SMA连接器稳固就位。拧紧时避免过度扭转以防损坏。
- 连接天线至SMA接口 将SMA接口插入天线端口(天线朝外),顺时针旋转天线完成固定。
- 调整天线角度 将天线旋转至90度角,调整至最终安装位置。
现在可参照 CM5IO外壳 》完成后续步骤,将CM5IO主板安装至机箱内部。
CM4 和 CM5 天线装配图
要在计算模块上使用天线,请在 /boot/firmware/config.txt 文件末尾添加以下 dtparam 指令:dtparam=ant2
CM5散热器
CM5散热器是一款被动式散热器,可帮助散发CM5产生的热量,从而提升CPU性能并延长其使用寿命。
CM5 散热器
散 热器规格
CM5散热器的尺寸约为41毫米×56毫米×12.7毫米。该散热器采用铝制散热片结构,底部配有导热硅胶垫。新版 CM5IO外壳 支持散热器与预装风扇在机箱内同时使用。若您使用的是旧版CM5IO机箱,必须拆卸机箱风扇以腾出散热器安装空间。
CM5 散热器物理规格
安装CM5散热器
将散热器安装至CM5的方法:
- 撕去散热器底部硅胶垫上的保护纸。
- 将散热器底部的硅胶垫贴合于CM5顶部。放置时需确保散热器开孔位于板载天线(CM5左侧梯形区域)上方,并紧邻其旁的 U.FL连接器(若存在该接口)。
- 可选操作:在每个角部的安装点拧紧螺丝固定散热器。若不使用螺丝,散热器与CM5之间的粘合会随时间和使用逐渐增强。
烧录映像到CM
要将同一映像烧录入多个计算模块,请使用 Raspberry Pi Secure Boot Provisioner。要自定义操作系统映像以烧录到这些设备上,请使用 pi-gen。
Lite 版本的计算模块没有板载 eMMC。相反,请按照 安装操作系统 中为其他 Raspberry Pi 设备烧录存储设备的步骤进行操作。
先决条件
要烧录计算模块 eMMC,您需要以下设备:
- 另一台计算机,在本指南中称为 主机设备。您可以使用 Linux(我们推荐 Raspberry Pi OS 或 Ubuntu)、Windows 11 或 macOS。
- 计算模块 IO 板 与您的计算模块型号相对应。
- 微型 USB 数据线,或用于 CM5IO 之后的计算模块型号的 USB-C 数据线。
在某些情况下,USB 集线器会阻止主机设备识别 Compute 模块。如果主机设备无法识别 Compute 模块,请尝试将 Compute 模块直接连接到主机设备。有关更多诊断技巧,请参阅 usbboot故障排除指南。
安装 IO 板
首先,实际安装 IO 板。这包括将计算模块和主机设备连接到 IO 板。
- Compute Module 5 IO 板
- Compute Module 4 IO 板
- Compute Module IO 板
设置 Compute Module 5 IO 板:
- 将计算模块连接到 IO 板。连接后,计算模块应平放。
- 将
RPI_BOOT安装到 IO 板跳线 J2(禁用 eMMC 启动)上。 - 将电缆从 IO 板上的 USB-C 从端口 J11 连接到主机设备。
设置 Compute Module 4 IO 板:
- 将计算模块连接到 IO 板。连接后,计算模块应平放。
- 将
nRPI_BOOT安装到 IO 板跳线 J2(禁用 eMMC 启动)上。 - 将电缆从 IO 板上的微型 USB 从端口 J11 连接到主机设备。
设置 Compute Module IO 板:
- 将计算模块连接到 IO 板。连接时,计算模块应平行于电路板,啮合夹应卡紧到位。
- 将 J4(
USB SLAVE BOOT ENABLE)设为 1-2 =(USB BOOT ENABLED)。 - 将电缆从 IO 板上的微型 USB 从端口 J15 连接到主机设备。
设置主机设备
接下来,让我们在主机设备上设置软件。
对于主机设备,我们建议使用运行 64 位 Raspberry Pi OS 的 Raspberry Pi 4 或更新版本。
- Linux
- macOS
- Windows
在 Linux 主机设备上设置软件:
- 运行以下命令安装
rpiboot(或者,从源代码构建rpiboot)::
sudo apt install rpiboot
- 连接 IO 板电源。
- 然后运行
rpiboot:
sudo rpiboot
- 几秒钟后,计算模块应作为大容量存储设备出现。检查
/dev/目录,可能是/dev/sda或/dev/sdb。或者,运行lsblk查找存储容量与计算模块容量相匹配的设备。
在 macOS 主机设备上设置软件:
- 首先,从源代码构建
rpiboot。 - 连接 IO 板电源。
- 然后,使用以下命令运行
rpiboot可执行文件:
rpiboot -d mass-storage-gadget64
- 命令运行完成后,你应该会看到一条信息,提示 "你插入的磁盘本计算机无法读取"。单击 忽略。现在,您的计算模块应显示为大容量存储设备。
在 Windows 11 主机设备上设置软件:
- 下载 releases 或 从源码编译
rpiboot。 - 双击安装程序运行。这将安装驱动程序和启动工具。请勿关闭安装过程中出现的任何驱动程序安装窗口。
- 重新启动
- 连接 IO 板电源。Windows 将发现硬件并配置所需的驱动程序。
- 从开始菜单中选择 rpiboot - 大容量存储设备。几秒钟后,计算模块的 eMMC、NVMe 或 SD 卡将作为 USB 大容量存储设备显示。这同时还会提供一个作为串行端口设备的调试控制台。
烧录 eMMC
你可以使用 Raspberry Pi Imager 将操作系统映像烧录到计算模块。
或者,使用 dd 将原始操作系统映像(如 Raspberry Pi OS)写入计算模块。运行以下命令,将 /dev/sdX 替换为计算模块的大容量存储设备表示路径,将 raw_os_image.img 替换为原始操作系统映像的路径:
sudo dd if=raw_os_image.img of=/dev/sdX bs=4MiB
写入镜像后,断开并重新连接计算模块。现在你应该能看到两个分区(Raspberry Pi OS):
/dev/sdX <- 设备
/dev/sdX1 <- 第一个分区(FAT)
/dev/sdX2 <- 第二分区(Linux 文件系统)
你可以正常挂载 /dev/sdX1 和 /dev/sdX2 分区。
从 eMMC 启动
- Compute Module 5 IO 板
- Compute Module 4 IO 板
- Compute Module IO 板
断开 IO 板跳线 J2(禁用 eMMC 启动)上的 nRPI_BOOT。
断开 IO 板跳线 J2(禁用 eMMC 启动)上的 nRPI_BOOT。
将 J4(USB SLAVE BOOT ENABLE)设置为 2-3(USB BOOT DISABLED)。
启动
断开 USB 从端口。关闭 IO 板电源,从刚写入 eMMC 的新映像启动计算模块。
已知问题
- 一小部分 CM3 设备可能会出现启动问题。我们已将这些问题追溯到创建 FAT32 分区的方法;我们认为问题是由于 CPU 和 eMMC 之间的时间差造成的。如果在启动 CM3 时遇到问题,请使用以下命令手动创建分区:
$ sudo parted /dev/<device>
(parted) mkpart primary fat32 4MiB 64MiB
(parted) q
$ sudo mkfs.vfat -F32 /dev/<device>
$ sudo cp -r <files>/* <mountpoint>
- CM1 bootloader 会向主机返回一个略微不正确的 USB 数据包。大多数 USB 主机会忽略它,但有些 USB 端口会因为这个错误而无法工作。CM3 修正了这一错误。
计算模块 EEPROM bootloader
从计算模块 4 开始,计算模块使用 EEPROM 引导加载程序。该引导加载程序位于板载存储的一小部分中,而不是引导分区中。因此,更新它需要不同的程序。在生产中使用带有 EEPROM 引导加载程序的计算模块之前,请务必遵循以下最佳实践:
- 选择特定的引导加载程序版本。确认使用的每个计算模块都有该版本。
usbbootrepo 中的版本始终是最近的稳定版本。 - 通过 设置
BOOT_ORDER配置引导设备。 - 在引导加载器 EEPROM 上启用硬件写保护,以确保引导加载器无法在无法访问的产品(如远程或嵌入式设备)上被修改。
烧录计算模块引导加载程序 EEPROM
烧录引导加载程序 EEPROM:
- 像 flash the eMMC时那样设置硬件,但要确保
EEPROM_nWPnot 被拉低。 - 运行以下命令将
recovery/pieeprom.bin写入引导加载器 EEPROM:
./rpiboot -d recovery
- 完成后,
EEPROM_nWP可能会再次被拉低。
SD 卡以外的烧录设备
基于 Linux 的 mass-storage-gadget 支持烧录 NVMe、eMMC 和 USB 块设备。与基于固件的 rpiboot 机制相比,mass-storage-gadget 写入设备的速度更快,还为设备提供了一个 UART 控制台用于调试。
usbboot 还包括一些 扩展,允许您配置安全启动或启动自定义 Linux initramfs 镜像。
更新计算模块引导加载程序
在使用 EEPROM 引导加载程序的计算模块上,ROM 从未从 SD/eMMC 运行过 recovery.bin。这些计算模块默认禁用 rpi-eeprom-update 服务,因为 eMMC 不可拆卸,无效的 recovery.bin 文件可能会阻止系统启动。
你可以用 "自我更新 "模式覆盖这一行为。在 "自我更新 "模式下,可以通过 USB MSD 或网络启动更新引导加载程序。
自我更新 模式不会原子更新引导加载程序。如果在更新 EEPROM 时发生断电,可能会损坏 EEPROM。
修改引导加载程序配置
修改计算模块 EEPROM 引导加载程序配置:
- 导航至
usbboot/recovery目录。 - 如果需要特定的引导加载程序版本,请将
pieeprom.original.bin替换为引导加载程序版本中的相应内容。 - 编辑默认的
boot.conf引导加载器配置文件以定义 BOOT_ORDERBOOT_ORDER:- 对于网络启动,使用
BOOT_ORDER=0xf2。 - 对于 SD/eMMC 启动,使用
BOOT_ORDER=0xf1。 - 对于 USB 启动失败转到 eMMC,使用
BOOT_ORDER=0xf15。 - 对于 NVMe 启动,使用
BOOT_ORDER=0xf6。
- 对于网络启动,使用
- 运行
./update-pieeprom.sh,生成新的 EEPROM 映像文件pieeprom.bin映像文件。 - 如果需要 EEPROM 写保护,请在
/boot/firmware/config.txt中添加eeprom_write_protect=1。- 在软件中启用后,可以通过将
EEPROM_nWP引脚拉低来锁定硬件写保护。
- 在软件中启用后,可以通过将
- 运行以下命令将更新后的
pieeprom.bin映像写入 EEPROM:
../rpiboot -d .
连接外设
本指南可帮助开发人员将外设连接到计算模块引脚,并说明如何在软件中启用这些外设。
SoC 的大部分引脚,包括 GPIO、两个 CSI 摄像头接口、两个 DSI 显示器接口和 HDMI 都可用于布线。您通常可以将未使用的引脚断开。
采用 DDR2 SODIMM 外形的计算模块与任何 DDR2 SODIMM 插座物理兼容。不过,引脚布局与 SODIMM 内存模块并不相同。
要使用计算模块,用户设计的主板必须具备以下条件:
- 为计算模块提供电源(最低 3.3V 和 1.8V 电压)
- 为用户应用所需的外设连接引脚
本指南首先介绍启动过程以及设备树如何描述所连接的硬件。
然后,我们将介绍如何将 I2C 和 SPI 外围设备连接到 IO 板。最后,我们将创建必要的设备树文件,以便在 Raspberry Pi OS 中使用这两个外设。
BCM283x GPIO
BCM283x 有三组通用输入/输出 (GPIO) 引脚: Bank 0 上有 28 个引脚,Bank 1 上有 18 个引脚,Bank 2 上有 8 个引脚,共计 54 个引脚。这些引脚可用作真正的 GPIO 引脚:软件可将其设置为输入或输出、读取和/或设置状态,并将其用作中断。它们还可以运行 I2C、SPI、I2S、UART、SD 卡等其他功能。
您可以在任何计算模块上使用 Bank 0 或 Bank 1。不要使用 Bank 2:它控制 eMMC、HDMI 热插拔检测和 ACT LED/USB 启动控制。
使用 pinctrl 检查 GPIO 引脚的电压和功能,查看设备树是否按预期工作。
BCM283x 启动过程
BCM283x 设备有一个 VideoCore GPU 和 Arm CPU 内核。GPU 由 DSP 处理器和用于成像、视频编解码、3D 图形和图像合成的硬件加速器组成。
在 BCM283x 设备中,GPU 中的 DSP 内核首先启动。它在启动主 Arm 处理器之前处理设置。
Raspberry Pi BCM283x 设备的启动过程分为三个阶段:
- GPU DSP 复位后执行小型内部启动 ROM 中的代码。该代码通过外部接口加载第二阶段启动加载程序。该代码首先在引导分区上名为
bootcode.bin的引导设备上寻找第二阶段引导加载器。如果没有找到引导设备或找不到bootcode.bin,引导 ROM 将在 USB 启动模式下等待主机提供第二阶段引导加载器(usbbootcode.bin)。 - 第二阶段引导加载器负责设置 LPDDR2 SDRAM 接口和其他关键系统功能。设置完成后,第二阶段启动加载器将加载并执行主 GPU 固件(
start.elf)。 start.elf处理额外的系统设置并启动 Arm 处理器子系统。它包含 GPU 固件。GPU 固件首先会读取dt-blob.bin,以确定 GPIO 引脚的初始状态以及 GPU 专用接口和时钟,然后解析config.txt。然后加载特定型号的 Arm 设备树文件和config.txt中指定的任何设备树覆盖,然后启动 Arm 子系统并将设备树数据传递给启动的 Linux 内核。
设备树
适用于 Raspberry Pi 的 Linux 设备树 对连接到系统的硬件信息以及用于与该硬件通信的驱动程序进行编码。
启动分区包含多个二进制设备树(.dtb)文件。设备树编译器使用人类可读的设备树描述 (.dts)创建这些二进制文件。
启动分区包含两种不同类型的设备树文件。其中一个仅供 GPU 使用;其余的是标准的 Arm 设备树文件,适用于基于 BCM283x 的每种 Raspberry Pi 产品:
dt-blob.bin(GPU 使用)bcm2708-rpi-b.dtb(用于 Raspberry Pi 1 Model A 和 B)bcm2708-rpi-b-plus.dtb(用于 Raspberry Pi 1 Model B+ 和 A+)bcm2709-rpi-2-b.dtb(用于 Raspberry Pi 2 Model B)bcm2710-rpi-3-b.dtb(用于 Raspberry Pi 3 Model B)bcm2708-rpi-cm.dtb(用于 Raspberry Pi CM 1)bcm2710-rpi-cm3.dtb(用于 Raspberry Pi CM 3)
在启动过程中,用户可以通过 config.txt 中的 device_tree 参数指定要使用的特定 Arm 设备树。例如,config.txt 中的 device_tree=mydt.dtb 行指定了名为 mydt.dtb 文件中的Arm设备树。
您可以为计算模块产品创建完整的设备树,但我们建议您使用overlays。覆盖层将非特定于板卡的硬件描述添加到基本设备树中。这包括使用的 GPIO 引脚及其功能,以及所连接的设备,以便加载正确的驱动程序。在将设备树传递给 Linux 内核之前,引导加载程序会将覆盖与基本设备树合并。基础设备树偶尔会发生变化,但通常不会破坏覆盖层。
使用 config.txt 中的 dtoverlay 参数加载设备树覆盖。Raspberry Pi OS 假定所有覆 盖都位于 /overlays 目录中,并使用后缀 -overlay.dtb。例如,dtoverlay=myoverlay 一行将加载覆盖图 /overlays/myoverlay-overlay.dtb。
要将外设连接到计算模块,请在覆盖层中描述连接到 Bank 0 和 Bank 1 GPIO 的所有硬件。这样,您就可以使用标准的 Raspberry Pi OS 映像,因为覆盖层已被合并到标准的基本设备树中。或者,您也可以为自己的应用程序定义一个自定义的设备树,但这样就不能使用标准的 Raspberry Pi OS 映像。相反,您必须创建一个修改过的 Raspberry Pi 操作系统映像,其中包括您希望发布的每个操作系统更新的自定义设备树。如果基础覆盖层发生变化,你可能需要更新你定制的设备树。
dt-blob.bin
当 start.elf 运行时,它会首先读取 dt-blob.bin。这是一种特殊形式的设备树 blob,它告诉 GPU 如何设置 GPIO 引脚状态。
dt-blob.bin 包含 GPU(而非 SoC)控制的 GPIO 和外设信息。例如,GPU 管理摄像头模块。GPU 需要独占一个 I2C 接口和几个引脚,才能与摄像头模块通信。
在大多数 Raspberry Pi 型号上,I2C0 被保留给 GPU 专用。dt-blob.bin 定义了用于 I2C0 的 GPIO 引脚。
默认情况下,dt-blob.bin 不存在。相反,start.elf 包含了该文件的内置版本。许多计算模块项目会提供一个自定义的 dt-blob.bin,该文件会覆盖默认的内置文件。
dt-blob.bin 指定:
- 用于 HDMI 热插拔检测的引脚
- 用作 GPCLK 输出的 GPIO 引脚
- 启动时 GPU 可以使用的 ACT LED
minimal-cm-dt-blob.dts是一个 .dts 设备树文件示例。它设置了 HDMI 热插拔检测和 ACT LED,并将所有其他 GPIO 设置为默认输入。
要将 minimal-cm-dt-blob.dts 编译为 dt-blob.bin,请使用 设备树编译器 dtc。
要在 Raspberry Pi 上安装 dtc,请运行以下命令:
sudo apt install device-tree-compiler
然后,运行以下命令将 minimal-cm-dt-blob.dts 编译成 dt-blob.bin:
dtc -I dts -O dtb -o dt-blob.bin minimal-cm-dt-blob.dts
更多信息,请参阅我们的 创建 dt-blob.bin 指南。
Arm Linux 设备树
在 start.elf 读取dt-blob.bin并设置初始引脚状态和时钟后,它会读取 config.txt,其中包含许多其他系统设置选项。
读取 config.txt 之后,start.elf 会读取特定型号的设备树文件。例如,计算模块 3 使用 bcm2710-rpi-cm.dtb。该文件是一个标准的 Arm Linux 设备树文件,详细说明了处理器上连接的硬件。它列举了
- 有哪些外围设备以及存在于何处
- 使用了哪些 GPIO
- 这些 GPIO 具有哪些功能
- 连接了哪些物理设备
该文件通过覆盖 dt-blob.bin 中的引脚状态(如果不同)来设置 GPIO。它还会尝试加载特定设备的驱动程序。
特定型号的设备树文件包含禁用的外设条目。它不包含 GPIO 引脚定义,但 eMMC/SD 卡外设除外,该外设具有 GPIO 定义并始终使用相同的引脚。