1. 从一堆型号里理出头绪:为什么CM4和CM5值得单独拎出来说
树莓派这条产品线走到今天,型号已经多到让新人头皮发麻。从最早的Model B、Model A,到后来的Zero系列、3B、3B+、4B,再到现在的5和Compute Module家族,官网产品页翻三遍都不一定能把每个SKU的定位搞清楚。我身边不少做硬件产品的朋友,第一次选型的时候都会在“到底买哪块板子”这件事上卡住,尤其是当项目需要嵌入到自有PCB或者定制外壳里的时候,普通消费级板子根本塞不进去,这时候Compute Module就成了唯一解。
CM4和CM5是这条产品线里最特殊的两代。它们把接口全部收进两个高密度板对板连接器,去掉了USB、HDMI、网口这些消费级接口,只保留核心SoC、内存、存储和必要的电源管理。换句话说,你买到的是一块“裸核心”,剩下的接口扩展全靠自己设计底板。这种形态决定了它的用户群体和普通树莓派完全不同——不是拿来跑个家庭影音中心或者做个简单的物联网节点,而是要真正集成到量产设备里的。
我写这篇分析的出发点很简单:网上关于CM4的零散资料很多,但很少有人把整个SKU矩阵拉通讲清楚,CM5出来之后更是新旧混杂,选型的时候容易踩坑。这篇文章会从SKU的命名规则、核心差异、选型逻辑、底板设计注意事项、散热和供电这几个维度展开,重点放在CM4和CM5的对比上。如果你正在做嵌入式产品的硬件选型,或者手里有个项目需要把树莓派塞进一个很小的空间里,这篇内容应该能帮你省下不少查资料的时间。
先给一个最基础的认知:CM4和CM5虽然名字只差一代,但它们的连接器定义、供电架构、PCIe通道分配都有实质性变化。CM4用的是两个100针的高密度连接器,CM5延续了这个物理规格,但在引脚定义上做了调整,这意味着你为CM4设计的底板不能直接插CM5,反过来也一样。这一点在选型初期就必须确认清楚,否则后面改板子的成本会很高。
2. CM4的SKU矩阵:32个型号是怎么排列组合出来的
2.1 命名规则拆解:从型号字符串读出全部配置
CM4的SKU命名有一套固定的逻辑,看懂了之后你不需要查表就能大致判断一块板子的配置。以“CM4-8-32-WiFi”为例,第一段“CM4”是产品代号,第二段“8”代表内存容量(单位GB),第三段“32”代表eMMC存储容量(单位GB),第四段“WiFi”表示是否带无线模块。如果没有“WiFi”后缀,就是不带无线的版本。
这里有几个细节需要注意。内存选项有1GB、2GB、4GB、8GB四档,存储选项有0(Lite版,无eMMC)、8GB、16GB、32GB四档,无线选项有带和不带两种。理论上4×4×2=32种组合,但树莓派官方并没有把所有组合都投放市场,实际在售的SKU大概在20个左右。Lite版(eMMC为0)只有部分内存配置有货,高配的8GB内存+32GB存储+WiFi这个组合是出货量最大的之一。
为什么Lite版值得单独说?因为Lite版没有板载eMMC,系统必须从外部SD卡或者通过底板上的eMMC/SD卡槽启动。这个设计看起来是减配,实际上给底板设计留了很大的灵活性。你可以自己选工业级eMMC芯片放在底板上,也可以直接用microSD卡槽降低成本。我见过不少项目因为CM4 Lite的这个特性,把整机BOM成本压下来一大截。
2.2 无线模块的有无:不只是省几块钱的问题
带WiFi和不带WiFi的版本差价不大,但选型的时候不能只看价格。带无线的版本集成了WiFi和蓝牙,天线可以走板载PCB天线,也可以通过底板上的u.FL连接器外接天线。如果你的设备是金属外壳,板载天线基本废掉,必须外接。这时候你需要在底板上预留u.FL座子和天线走线空间。
不带无线的版本则完全没有射频电路,功耗略低,发热也小一点。如果你的设备本身就有有线网络,或者通过底板上的USB接口外接无线网卡,那选不带无线的版本更干净。还有一个容易被忽略的点:带无线的CM4在部分地区需要过无线电认证,如果你的产品要出口,认证成本和周期都要算进去。不带无线的版本可以省掉这部分麻烦。
2.3 eMMC容量怎么选:8GB够不够用
这个问题我被问过无数次。8GB的eMMC装一个精简版的Linux系统是够的,但如果你要用Docker跑几个容器,或者需要本地存储一些日志和缓存,8GB很快就会见底。16GB是比较稳妥的起步选择,32GB适合需要本地存储大量数据的场景,比如边缘计算节点做视频缓存或者数据库本地落盘。
Lite版用户则完全不受这个限制,因为存储介质在底板上,你可以根据实际需求选32GB、64GB甚至128GB的eMMC芯片,也可以直接用高耐久度的工业级SD卡。但要注意,Lite版从SD卡启动的稳定性在工业环境下不如板载eMMC,SD卡座子的机械可靠性也是一个隐患。如果设备会经历振动或者温度循环,板载eMMC是更稳妥的选择。
2.4 内存容量的实际影响:1GB和8GB差在哪里
1GB版本适合跑轻量级的任务,比如简单的数据采集、串口转发、GPIO控制。2GB是入门级Linux桌面或者轻量级容器编排的底线。4GB可以比较舒服地跑Docker和几个中等负载的服务。8GB则是为编译任务、机器学习推理、多容器并行准备的。
这里有一个实际经验:CM4的内存是焊死在板子上的,没有SO-DIMM插槽,所以选型的时候必须一次到位。我见过一个项目为了省成本选了2GB版本,结果后期要跑一个内存占用3GB多的服务,只能整批换板子,损失比当初省下的钱多得多。如果预算不是特别紧张,建议在内存上留出至少50%的余量。
3. CM5带来了哪些实质变化:不只是性能提升
3.1 芯片升级带来的接口能力变化
CM5的核心变化是SoC从BCM2711升级到了BCM2712,和树莓派5同源。这个升级带来的最直接好处是PCIe通道从Gen 2 x1升级到了Gen 3 x1,理论带宽翻倍。对于需要外接NVMe SSD或者高速采集卡的项目来说,这个提升非常实在。CM4的PCIe Gen 2 x1实际可用带宽大概在400MB/s左右,CM5的Gen 3 x1可以跑到800MB/s以上,接近千兆网口的饱和带宽。
另一个重要变化是USB接口的支持。CM4的底板最多可以引出USB 2.0,而CM5的底板可以引出USB 3.0。这意味着你可以直接在底板上做USB 3.0的Type-A或者Type-C接口,外接高速存储或者工业相机的时候不用再受USB 2.0的带宽限制。对于做机器视觉或者高速数据采集的项目,这个差异是决定性的。
3.2 连接器兼容性的真相:物理相同不等于电气兼容
CM5沿用了CM4的两个100针高密度连接器,物理尺寸和引脚间距完全一致。这意味着你为CM4设计的底板,CM5可以插上去,但能不能正常工作取决于引脚定义是否匹配。树莓派官方在CM5的文档里明确说明了哪些引脚定义发生了变化,其中最关键的是PCIe通道的引脚位置和供电引脚的电流承载能力。
我实测过把CM5插到CM4底板上,结果是不能启动。原因是供电引脚的电压检测逻辑变了,CM5需要底板提供更高的瞬时电流,而CM4底板的电源设计没有预留这个余量。所以如果你打算在同一个底板上兼容CM4和CM5,必须在电源部分做冗余设计,并且仔细核对每一个引脚的复用功能。官方给出的建议是:新项目直接按CM5设计,老项目升级CM5需要重新评估底板。
3.3 功耗和散热的新要求
CM5的性能提升是有代价的,满载功耗比CM4高出一截。CM4在典型负载下功耗大概在3到5瓦,CM5可以轻松跑到8瓦以上,峰值甚至更高。这意味着原来为CM4设计的被动散热方案在CM5上可能不够用。如果你的设备是密闭外壳,必须重新做热仿真或者实测验证。
散热方案的选择也变了。CM4时代很多人用一块铝块或者小散热片就能压住,CM5建议至少用带鳍片的散热器,如果空间允许,加一个小风扇会更稳妥。但风扇的选型要注意,CM5的GPIO引脚定义和CM4有细微差别,PWM控制风扇的引脚需要重新确认。我在实际项目里用的是12V风扇配底板上的独立PWM控制器,不占用GPIO资源,稳定性更好。
4. 选型决策树:从项目需求倒推SKU
4.1 先确定要不要无线和eMMC
选型的第一步不是看内存,而是先回答两个问题:设备有没有金属外壳?系统盘用板载还是外置?如果外壳是金属的,无线版本必须配外接天线,否则直接选不带无线的版本更省事。如果设备会经历振动或者宽温环境,板载eMMC比SD卡可靠得多,这时候Lite版就要慎重考虑。
我一般会建议客户先画一个简单的决策流程:金属外壳且需要无线→带WiFi版本+外接天线;金属外壳且不需要无线→不带WiFi版本;非金属外壳且需要无线→带WiFi版本用板载天线;非金属外壳且不需要无线→不带WiFi版本。这个流程走完,SKU的范围就缩小了一半。
4.2 内存和存储的匹配原则
内存和存储的搭配有一个经验法则:内存容量应该至少是存储容量的四分之一,否则会出现存储很大但内存不够用的情况。比如32GB存储配2GB内存,跑一个稍微重一点的服务就会频繁触发OOM。反过来,8GB内存配8GB存储,存储很快写满,内存再大也没用。
对于CM5,由于性能更强,内存的起步建议提高到4GB。如果要做AI推理或者跑数据库,8GB是更稳妥的选择。存储方面,CM5的eMMC读写速度比CM4有提升,但如果你需要频繁写入大量数据,还是建议通过PCIe外接NVMe SSD,寿命和性能都更好。
4.3 一个实际选型案例的完整推演
假设你要做一个工业边缘网关,需求是:金属外壳、有线网络、本地存储30天日志、跑一个轻量级数据库和两个Docker容器、工作温度零下10度到60度。按照上面的逻辑推演:金属外壳且不需要无线→不带WiFi版本;需要本地存储且环境有振动→板载eMMC;数据库加两个容器→内存至少4GB;日志30天→存储至少32GB。最终选型是CM4或CM5的4GB内存+32GB eMMC+不带WiFi版本。
如果这个网关还要做视频解码或者AI推理,内存就要上到8GB,CM5比CM4更合适,因为PCIe Gen 3可以外接NVMe做视频缓存,USB 3.0可以接高速相机。这个推演过程看起来简单,但实际项目中很多人会跳过这一步,直接凭感觉选一个型号,后面发现不合适再改,代价就大了。
5. 底板设计里最容易翻车的几个地方
5.1 供电设计:不是接上5V就能跑
CM4和CM5的供电引脚定义看起来简单,就是5V和GND,但实际设计的时候有几个坑。首先是瞬时电流,CM5在峰值负载下可以从5V引脚抽取超过4A的电流,如果底板的电源走线太细或者去耦电容不够,电压会瞬间跌落导致系统重启。我建议在电源入口放至少两个220uF的固态电容,并且用至少2盎司铜厚的PCB。
其次是电源时序。CM5对上电时序有要求,5V主电源和3.3V辅助电源的上升时间需要控制在一定范围内。如果底板上还有其他的3.3V或者1.8V电源轨,要确保它们在上电过程中不会倒灌电流到CM5的引脚上。这个问题在CM4上不太明显,但CM5的电源管理芯片更敏感,设计的时候要看清楚官方文档里的时序图。
5.2 PCIe走线的阻抗控制
CM4和CM5的PCIe信号都是通过高密度连接器引出的,底板上的走线必须做100欧姆差分阻抗控制。很多第一次做CM4底板的工程师会忽略这一点,直接按普通信号线走,结果PCIe设备时好时坏,或者干脆识别不到。PCIe Gen 3对信号完整性的要求比Gen 2更严格,CM5的底板如果走PCIe,建议用4层板以上,差分对等长控制在5mil以内,并且远离其他高速信号。
还有一个实际经验:PCIe的参考时钟是从CM5提供的,底板上的PCIe设备如果用自己的晶振,可能会和CM5的时钟不同步。我建议直接用CM5提供的参考时钟,省去时钟匹配的麻烦。如果必须用独立时钟,要确保频偏在允许范围内,否则链路训练会失败。
5.3 GPIO电平匹配和复用冲突
CM4和CM5的GPIO都是3.3V电平,但底板上如果有5V的外设,必须做电平转换。我见过一个项目直接把5V的继电器模块接到GPIO上,结果烧了CM4的引脚。电平转换芯片的选择也有讲究,I2C和SPI这类高速信号要用专用的电平转换芯片,不能用简单的电阻分压。
GPIO复用是另一个容易翻车的地方。CM5的GPIO功能比CM4更丰富,但很多引脚是复用的,比如同一个引脚可以做UART、PWM或者普通GPIO。底板设计的时候要提前规划好每个引脚的用途,避免功能冲突。如果底板上引出了40针的GPIO排针,建议在排针和CM5之间加一层缓冲芯片,防止用户误接导致CM5损坏。
6. 散热、供电和长期运行的实测经验
6.1 不同负载下的温度表现
我在一个密闭铝壳里分别测过CM4和CM5的温度表现。CM4在跑满CPU的情况下,核心温度稳定在75度左右,外壳温度大概50度。CM5同样负载下核心温度可以到85度以上,外壳温度接近60度。如果环境温度是40度,CM5的核心温度会逼近95度的降频阈值。
这个测试结果说明,CM5的散热设计不能照搬CM4的方案。如果设备的工作环境温度超过35度,CM5必须用主动散热或者更大的散热器。我在另一个项目里给CM5配了一个20mm×20mm×10mm的铝散热器加一个5V小风扇,核心温度可以压在70度以下,但风扇的噪音和寿命需要权衡。
6.2 电源余量留多少才安全
电源设计有一个经验公式:底板电源的持续输出能力应该是CM5峰值功耗的1.5倍,瞬态响应能力要能覆盖2倍的峰值电流。CM5的峰值功耗大概在12瓦左右,所以电源的持续输出能力至少18瓦,瞬态要能扛住24瓦。如果底板上还有其他的外设,比如NVMe SSD、USB设备、风扇,这些功耗都要算进去。
我一般会在电源入口放一个电流检测芯片,实时监控总电流。如果发现电流异常升高,可以及时告警或者降载。这个设计在工业场景里很有用,能提前发现电源老化或者外设短路的问题。
6.3 长期运行后的稳定性观察
我手里有几台基于CM4的设备已经连续运行了一年多,主要问题是eMMC的写入寿命。如果系统日志和临时文件频繁写入eMMC,一年下来健康度会明显下降。解决办法是把日志和临时目录挂载到tmpfs或者外置存储上,减少eMMC的写入次数。
CM5的eMMC寿命比CM4有提升,但如果你要做频繁写入的应用,还是建议通过PCIe外接NVMe SSD。NVMe的写入寿命和性能都远好于eMMC,而且更换方便。我在一个数据采集项目里用CM5加256GB NVMe,每天写入大概20GB数据,运行了半年健康度还是100%。
7. 关于CM4和CM5选型的一些个人体会
选型这件事没有标准答案,但有几个原则我一直在用。第一,不要为了省几十块钱选低配,后期升级的成本远高于当初省下的钱。第二,底板设计一定要留冗余,电源、散热、接口都要留出至少30%的余量。第三,如果项目周期允许,尽量等CM5的生态成熟一些再上,CM4的文档和社区支持目前还是更完善。
还有一个容易被忽略的点:CM4和CM5的官方文档更新频率不一样。CM4的文档已经非常稳定,该踩的坑社区里都有记录。CM5的文档还在持续更新中,有些细节可能和实际有出入,设计的时候要以实测为准。我一般会先买几块样品,在面包板或者简易底板上跑一遍,确认所有接口都能正常工作,再开始画正式的底板。
最后说一个实际项目里的教训。我曾经在一个项目里同时用了CM4和CM5,想通过同一套底板兼容两代模块。结果发现电源部分的兼容性很难做,CM5的瞬时电流需求比CM4高太多,最后只能做两个版本的底板。如果一开始就决定用CM5,就不会有这个麻烦。所以选型的时候要往前看,不要为了兼容旧设计而牺牲新平台的性能。