1. 树莓派CM0烧录系统全流程解析
作为一名长期使用树莓派的开发者,我最近在给CM0模块烧录系统时遇到了一些典型问题。这篇文章将完整记录整个操作过程,并分享那些官方文档不会告诉你的实战经验。
树莓派CM0(Compute Module 0)是树莓派基金会推出的嵌入式系统模块,相比标准树莓派板卡,它更适合集成到定制化设备中。但正因为其紧凑的设计,烧录系统时需要特别注意一些细节。
1.1 准备工作与硬件连接
首先需要准备以下物品:
- 支持数据传输的Micro USB线(很多手机充电线只能充电)
- 树莓派4B主机(用于烧录操作)
- CM0模块和载板
- J8跳线帽(关键!)
重要提示:市面上约30%的Micro USB线仅支持充电,这种线会导致后续操作完全失败。建议使用原厂线或经过验证的数据线。
连接步骤:
- 将CM0正确插入载板
- 连接J8跳线帽(进入烧录模式的关键)
- 暂不连接USB线到树莓派4B
1.2 系统环境检测
在树莓派4B上执行以下命令检查初始USB设备:
bash复制lsusb
典型输出如下:
code复制Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 1c4f:0048 SiGma Micro Usb Mouse
Bus 001 Device 003: ID 1a2c:4224 China Resource Semico Co., Ltd USB Keyboard
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
此时连接CM0到树莓派4B的USB接口,再次执行lsusb应该能看到新增设备:
code复制Bus 001 Device 006: ID 0a5c:2764 Broadcom Corp. BCM2710 Boot
这个0a5c:2764的设备ID就是CM0进入烧录模式的标志。如果没看到这个设备,请检查:
- J8跳线帽是否连接牢固
- 是否使用了支持数据传输的USB线
- CM0是否正确插入载板
2. 系统镜像下载与处理
2.1 获取官方系统镜像
建议在独立目录中操作:
bash复制mkdir iso
cd iso
wget https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2025-12-04/2025-12-04-raspios-trixie-arm64-lite.img.xz
特别注意:树莓派镜像压缩包扩展名是.xz不是.gz,解压命令也不同
解压镜像:
bash复制xz -d 2025-12-04-raspios-trixie-arm64-lite.img.xz
验证镜像完整性:
bash复制du -sh 2025-12-04-raspios-trixie-arm64-lite.img
正常应该显示约2GB大小(具体取决于镜像版本)
2.2 安装烧录工具
虽然可以直接使用dd命令,但建议安装官方工具:
bash复制sudo apt install rpi-imager
不过在实际烧录CM0时,我们会使用更底层的rpiboot工具:
bash复制cd ~
git clone https://github.com/raspberrypi/usbboot
cd usbboot
make
3. 烧录过程详解
3.1 启动烧录模式
如果连接CM0后lsusb没有识别到BCM2710设备,需要手动启动烧录模式:
bash复制cd ~/usbboot
sudo ./rpiboot
保持这个终端开启!此时再执行lsusb应该能看到BCM2710设备。
3.2 确定设备节点
执行lsblk查看存储设备:
bash复制lsblk
正常情况下会显示新增的/dev/sda设备(可能是sdb,具体看输出)
安全提示:务必确认设备节点,错误的设备选择会导致数据丢失
3.3 执行烧录
使用dd命令烧录:
bash复制time sudo dd if=iso/2025-12-04-raspios-trixie-arm64-lite.img of=/dev/sda bs=4MB status=progress
参数说明:
- bs=4MB:设置块大小,提高烧录速度
- status=progress:显示进度
- time:统计总耗时
典型耗时参考:
- 32GB eMMC:约5-8分钟
- 64GB eMMC:约10-15分钟
3.4 验证烧录结果
烧录完成后检查分区表:
bash复制sudo fdisk -l /dev/sda
正常应该看到两个分区:
- boot分区(FAT32,约512MB)
- rootfs分区(ext4,剩余空间)
4. 常见问题与解决方案
4.1 设备未被识别
症状:lsusb没有BCM2710设备
解决步骤:
- 检查J8跳线帽是否连接
- 更换USB线
- 尝试不同的USB端口
- 手动执行rpiboot
4.2 烧录速度极慢
可能原因:
- USB线质量差
- 使用了USB2.0端口
- dd块大小设置不合理
优化方案:
- 使用优质USB3.0数据线
- 连接树莓派4B的蓝色USB3.0接口
- 调整dd的bs参数(4M-8M为宜)
4.3 烧录后无法启动
检查清单:
- 烧录完成后是否移除了J8跳线帽
- 电源是否充足(CM0需要5V/1A以上)
- 是否使用了兼容的电源适配器
- 检查boot分区中的config.txt配置
5. 高级技巧与注意事项
5.1 批量烧录优化
如果需要批量烧录多个CM0模块,可以优化流程:
- 准备多个载板,预先安装好CM0
- 使用USB Hub同时连接多个CM0
- 编写自动化脚本识别并烧录各个设备
示例脚本片段:
bash复制for dev in /dev/sd[a-z]; do
if sudo fdisk -l $dev | grep -q "Disk identifier"; then
echo "Found device $dev"
sudo dd if=image.img of=$dev bs=4M status=progress
fi
done
5.2 自定义镜像制作
标准镜像可能包含不必要的组件,可以:
- 在树莓派上安装系统
- 进行定制化配置和软件安装
- 使用dd备份为镜像:
bash复制sudo dd if=/dev/mmcblk0 of=custom.img bs=4M status=progress
5.3 eMMC寿命管理
CM0使用eMMC存储,需注意:
- 避免频繁写入
- 启用ext4的写屏障:
bash复制
tune2fs -o barrier=1 /dev/sda2 - 考虑挂载tmpfs减少写入
烧录完成后首次启动建议:
- 先不连接网络
- 执行扩展文件系统操作:
bash复制sudo raspi-config --expand-rootfs - 更新软件源并升级系统
这些实战经验来自我烧录超过50个CM0模块的积累,希望能帮你避开我踩过的那些坑。记住最关键的两点:质量可靠的USB线,以及烧录完成后务必移除J8跳线帽。