导言 问题
在一个新项目中,我们决定使用Raspberry Pi Compute Module 5 (CM5) 作为硬件平台。
我收到的开发套件包括
- Compute Module 5 (4 GB RAM and 32 GB eMMC)
- 27W USB-C Type-C PD Power Supply
- Compute Module 5 IO Board
- Antenna Kit
- Compute Module 5 IO Case
- 2 x HDMI® to HDMI® Cable
- Cooler for Compute Module 5
- USB-A to USB-C Cable.
目标
为了简化开发过程,我希望通过 microSD 卡运行系统软件(raspiOS) ,因为Compute Module 5 IO Board 包含一个 microSD 卡插槽。
我用 Raspberry Pi Imager将最新的 Raspberry Pi 操作系统闪存到 microSD 卡上,然后将卡插入 IO 板上的插槽,接通系统电源。
然而,系统并没有启动到操作系统,而是在显示屏上显示了一条类似终端机的信息:"未检测到 SD:卡",系统无法启动。
因果关系
经过研究,我在 Raspberry Pi 文档中找到了关于 Compute Module 5:
- microSD 卡插槽(仅用于没有 eMMC 的 Lite 版本;其他版本忽略该插槽)
这意味着 microSD 卡插槽只能在 "Lite "版本上使用,该版本不包含板载 eMMC 存储器。我的 CM5 有 32 GB eMMC,因此启动时 SD 插槽被禁用和忽略。
使用 eMMC 在 CM5 上安装系统软件的正确方法
要在配有 eMMC 的 CM5 上安装操作系统,请按照以下官方说明操作 setting up the IO Board.
一个关键步骤是在 IO 板上的 J2 接头处放置一个跳线。这将使 CM5 进入 USB 启动模式,允许主机像访问大容量存储设备一样访问 eMMC。
与 rpiboot 有关的问题及解决方案
在我的开发机器(Ubuntu 22.04)上,我最初尝试用rpiboot 安装:
sudo apt install rpiboot
但是,这个版本无法正常工作--可能是因为它已经过时或与 CM5 不兼容。
因此,我不得不从源代码开始构建 rpiboot。请按照这里的步骤操作:
克隆官方软件仓库:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
安装依赖项并构建
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
运行 rpiboot
在连接 CM5 和 J2 跳线到位的情况下运行 rpiboot:
sudo ./rpiboot -d mass-storage-gadget64
系统将检测到 CM5 的 eMMC,现在就可以使用 Raspberry Pi Imager 或 dd 闪存操作系统了。
摘要
- CM5 SD 插槽仅适用于 Lite(无 eMMC)版本。
- 要闪存带有 eMMC 的 CM5,您必须
** 设置 J2 跳线。
** 使用 rpiboot 通过 USB 打开 eMMC。 - 如果打包的 rpiboot 无法正常工作,请从源代码中构建它。
一旦完成,你就可以直接将 Raspberry Pi 操作系统闪存到 eMMC 上,就像闪存 SD 卡一样。