1. 项目概述
树莓派CM0(Compute Module 0)作为树莓派家族中的紧凑型计算模块,在嵌入式开发领域有着广泛的应用。与标准树莓派相比,CM0系列采用了更小巧的封装形式,去掉了常规接口,仅保留核心计算功能,特别适合需要高度定制化的嵌入式项目。在实际使用过程中,系统烧录是最基础也是最重要的环节之一。
我在最近的一个工业控制器项目中使用了CM0模块,期间遇到了不少烧录系统时的"坑"。这篇文章将详细记录CM0系统烧录的全流程,包括工具准备、镜像选择、烧录操作以及常见问题处理。不同于普通树莓派的SD卡烧录方式,CM0需要通过专用转接板进行操作,这个过程有不少需要特别注意的技术细节。
2. 准备工作与环境搭建
2.1 硬件准备清单
CM0烧录需要以下硬件设备:
- 树莓派CM0模块(本文以CM0+为例)
- 官方CMIO转接板(Compute Module IO Board)
- 8GB以上容量的microSD卡(建议使用Class10以上速度等级)
- USB转TTL串口调试器(用于查看启动日志)
- 5V/2A电源适配器(为转接板供电)
注意:市面上有第三方转接板,但首次烧录强烈建议使用官方CMIO板,兼容性更有保障。我曾尝试用某国产转接板,结果因为电源设计问题导致烧录失败。
2.2 软件工具准备
烧录所需软件环境:
- Raspberry Pi Imager(官方烧录工具,最新版)
- 适合CM0的系统镜像(推荐Raspberry Pi OS Lite版本)
- 串口终端工具(Windows可用Putty,Mac/Linux可用screen命令)
镜像选择建议:
- 工业应用:Raspberry Pi OS Lite(无桌面环境,资源占用低)
- 开发测试:Raspberry Pi OS with desktop(带图形界面)
- 特殊需求:自定义构建的Yocto或Buildroot系统
3. 烧录流程详解
3.1 转接板跳线设置
CMIO转接板上有两个关键跳线需要配置:
- J4(USB SLAVE BOOT)跳线:烧录时必须短接
- J2(nRPIBOOT)跳线:烧录时保持开路状态
具体操作步骤:
- 将CM0模块正确插入转接板的SODIMM插槽(注意防呆口方向)
- 使用跳线帽短接J4的两个引脚
- 确保J2跳线处于开路状态(无跳线帽)
- 将microSD卡插入转接板的卡槽
实测经验:J4跳线接触不良是导致烧录失败的常见原因,建议使用万用表确认是否真正短接。
3.2 使用Raspberry Pi Imager烧录
- 启动Raspberry Pi Imager工具
- 选择操作系统:
- 点击"Choose OS" → "Raspberry Pi OS (other)" → 选择适合的版本
- 选择存储设备:识别到的microSD卡
- 高级设置(齿轮图标):
- 启用SSH(建议)
- 设置主机名
- 配置Wi-Fi(如需)
- 设置locale(建议选择en_US.UTF-8)
- 点击"Write"开始烧录
烧录完成后,不要立即拔出SD卡!需要执行以下操作:
- 在电脑上挂载SD卡的boot分区
- 新建或编辑config.txt文件,添加以下内容:
code复制enable_uart=1 dtoverlay=pi3-disable-bt - 保存后安全弹出SD卡
3.3 首次启动与验证
- 将SD卡插入CMIO转接板
- 连接USB转TTL串口调试器:
- TXD → 转接板J6的TXD
- RXD → 转接板J6的RXD
- GND → 转接板J6的GND
- 打开串口终端(波特率115200)
- 给转接板通电
- 在串口终端观察启动日志
正常启动时,你应该能看到类似以下输出:
code复制[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.10.103-v7+ (...)
[ 0.000000] Machine model: Raspberry Pi Compute Module 3+
4. 常见问题与解决方案
4.1 烧录后无法启动
可能原因及排查:
-
电源问题:
- 现象:串口无任何输出
- 解决:测量5V电源实际输出电压(应≥4.75V),检查电源线是否过细
-
跳线设置错误:
- 现象:卡在"Starting kernel..."后无反应
- 解决:确认J4在烧录时短接,烧录完成后移除短接
-
镜像不兼容:
- 现象:出现"Error loading kernel"等提示
- 解决:下载专为CM0优化的镜像,或检查config.txt配置
4.2 网络连接问题
CM0没有内置网络接口,通常通过以下方式联网:
- USB转以太网适配器
- GPIO扩展的SPI以太网模块(如ENC28J60)
- USB WiFi适配器
配置建议:
- 编辑/etc/network/interfaces文件:
code复制auto eth0 iface eth0 inet dhcp - 对于WiFi,使用raspi-config工具配置更可靠
4.3 存储空间不足
CM0的eMMC容量有限(通常4GB/8GB),优化建议:
- 使用raspi-config工具扩展文件系统
- 定期清理日志:
bash复制sudo journalctl --vacuum-size=50M - 禁用不需要的服务:
bash复制sudo systemctl disable bluetooth.service sudo systemctl disable hciuart.service
5. 高级配置技巧
5.1 自定义镜像构建
对于量产项目,建议构建自定义镜像:
- 安装必要工具:
bash复制sudo apt install pi-gen - 克隆官方配置:
bash复制git clone https://github.com/RPi-Distro/pi-gen - 修改stage2/02-net-tweaks文件添加自定义配置
- 构建镜像:
bash复制sudo ./build.sh
5.2 读写性能优化
eMMC性能调优:
- 启用TRIM支持:
bash复制sudo fstrim -v / - 调整I/O调度器(/boot/cmdline.txt添加):
code复制elevator=deadline - 禁用文件系统日志(仅对只读系统推荐):
bash复制sudo tune2fs -O ^has_journal /dev/mmcblk0p2
5.3 工业环境稳定性增强
- 防止文件系统损坏:
bash复制sudo apt install fsprotect - 设置只读根文件系统:
- 修改/etc/fstab:
code复制/dev/mmcblk0p2 / ext4 ro,noatime 0 1 - 创建tmpfs挂载点:
code复制tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
- 修改/etc/fstab:
我在一个自动化测试设备项目中采用了这些优化措施,系统连续运行6个月无故障,写入寿命显著延长。