導入問題
新しいプロジェクトでは、ハードウェア・プラットフォームとして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.
目標
開発を簡単にするため、Compute Module 5 IO Board には microSD カードスロットが搭載されているので、microSD カードからシステムソフトウェア(raspiOS) を実行したいと思いました。
私は Raspberry Pi Imagerを使って最新のRaspberry Pi OSをmicroSDカードにフラッシュし、カードをIOボードのスロットに挿入して、システムの電源を入れました。
しかし、OSが起動するのではなく、ディスプレイに「SD: card not detected」という端末のようなメッセージが表示され、システムが起動しませんでした。
原因と結果
いろいろ調べた結果、Raspberry Piのドキュメントで Compute Module 5:
- microSDカードスロット (eMMCを搭載していないLiteバージョンでのみ使用。他のバージョンではスロットは無視されます)
つまり、microSDスロットはeMMCストレージを搭載していない "Lite "バリアントでしか使えないということです。私のCM5には32GBのeMMCが搭載されているため、SDスロットは無効化され、起動中は無視されます。
CM5にeMMCでシステムソフトウェアをインストールする正しい方法
eMMCを搭載したCM5にオペレーティングシステムをインストールするには、以下の公式インストラクションに従ってください。 setting up the IO Board.
重要なステップは、IOボードのJ2ヘッダーにジャンパーを配置することです。これにより、CM5がUSBブートモードになり、ホストPCが大容量記憶デバイスのように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の実行
を実行してください:
sudo ./rpiboot -d mass-storage-gadget64
システムはCM5のeMMCを検出するので、Raspberry Pi Imagerかddを使ってCM5にOSをフラッシュできます。
概要
- CM5 SDスロットは、Lite(eMMCなし)バリアントでのみ動作します。
- CM5をeMMCでフラッシュするには、次のことが必要です:
** J2 ジャンパーを設定します。
** rpiboot を使用して、USB 経由で eMMC を公開します。 - パッケージ化されたrpibootが動作しない場合は、ソースからビルドしてください。
これが完了したら、SDカードのようにeMMCに直接Raspberry Pi OSをフラッシュすることができます。