Einführung Problem
Für ein neues Projekt haben wir uns entschieden, die Raspberry Pi Compute Module 5 (CM5) als Hardware-Plattform zu verwenden.
Ich erhielt ein Entwicklungskit bestehend aus:
- 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.
Ziel
Um die Entwicklung zu vereinfachen, wollte ich die Systemsoftware (raspiOS) von einer microSD-Karte ausführen, da das Compute Module 5 IO Board über einen microSD-Kartensteckplatz verfügt.
Ich habe Raspberry Pi Imager um das neueste Raspberry Pi Betriebssystem auf eine microSD-Karte zu flashen, steckte die Karte in den Steckplatz auf dem IO-Board und schaltete das System ein.
Anstatt jedoch das Betriebssystem zu starten, erschien auf dem Display die Meldung "SD: Karte nicht erkannt" und das System ließ sich nicht starten.
Ursache und Wirkung
Nach einigen Recherchen fand ich in der Raspberry Pi Dokumentation die Erklärung für die Compute Module 5:
- microSD-Kartensteckplatz (nur zur Verwendung mit Lite-Varianten ohne eMMC; andere Varianten ignorieren den Steckplatz)
Das bedeutet, dass der microSD-Kartenslot nur bei der "Lite"-Variante verwendet werden kann, die keinen Onboard-eMMC-Speicher enthält. Mein CM5 hat 32 GB eMMC, daher ist der SD-Steckplatz deaktiviert und wird beim Booten ignoriert.
Korrekter Weg zur Installation der Systemsoftware auf der CM5 mit eMMC
Um das Betriebssystem auf einer CM5 mit eMMC zu installieren, folgen Sie den offiziellen Anweisungen für setting up the IO Board.
Ein entscheidender Schritt besteht darin, einen Jumper auf der J2-Steckleiste der IO-Platine zu setzen. Dadurch wird der CM5 in den USB-Boot-Modus versetzt, so dass Ihr Host-PC auf die eMMC wie auf ein Massenspeichergerät zugreifen kann.
Problem mit rpiboot und die Lösung
Auf meinem Entwicklungsrechner (Ubuntu 22.04) habe ich zunächst versucht, rpiboot mit zu installieren:
sudo apt install rpiboot
Diese Version funktionierte jedoch nicht richtig - wahrscheinlich, weil sie veraltet oder inkompatibel mit CM5 war.
Stattdessen musste ich rpiboot aus dem Quellcode erstellen. Folgen Sie den Schritten hier:
Klonen Sie das offizielle Repository:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Installieren Sie die Abhängigkeiten und bauen Sie:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Starten Sie rpiboot
mit angeschlossenem CM5 und gestecktem J2-Jumper:
sudo ./rpiboot -d mass-storage-gadget64
Das System erkennt die eMMC des CM5 und Sie können nun das Betriebssystem mit Raspberry Pi Imager oder dd darauf flashen.
Zusammenfassung
- Der CM5 SD-Slot funktioniert nur bei Lite-Varianten (ohne eMMC).
- Um einen CM5 mit eMMC zu flashen, müssen Sie:
** Setzen Sie den J2-Jumper.
** Verwenden Sie rpiboot, um die eMMC über USB freizulegen. - Wenn das mitgelieferte rpiboot nicht funktioniert, erstellen Sie es aus den Quellen.
Danach können Sie Raspberry Pi OS direkt auf die eMMC flashen, als wäre es eine SD-Karte.