Skip to main content

Raspberry Pi CM5 Boot Image eMMC
Problem med installation av systemprogramvara

Inledning Problem

För ett nytt projekt bestämde vi oss för att använda Raspberry Pi Compute Module 5 (CM5) som vår hårdvaruplattform.

Jag fick ett utvecklingskit bestående av:

  • 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.

Beräkningsmodul 5 IO Case

Mål

För att förenkla utvecklingen ville jag köra systemprogramvaran (raspiOS) från ett microSD-kort, eftersom Compute Module 5 IO Board har en microSD-kortplats.

Jag använde Raspberry Pi Imager för att flasha det senaste Raspberry Pi OS till ett microSD-kort, satte in kortet i kortplatsen på IO-kortet och slog på systemet.

Men istället för att starta upp i operativsystemet visade displayen ett terminalliknande meddelande som sa "SD: card not detected", och systemet startade inte.

Orsak och verkan

Efter lite efterforskningar hittade jag förklaringen i Raspberry Pi-dokumentationen för Compute Module 5:

  • microSD-kortplats (endast för användning med Lite-varianter utan eMMC; andra varianter ignorerar kortplatsen)

Detta innebär att microSD-kortplatsen endast kan användas på "Lite"-varianten, som inte har inbyggd eMMC-lagring. Min CM5 har 32 GB eMMC, så SD-kortplatsen är inaktiverad och ignoreras under uppstart.

Korrekt sätt att installera systemprogramvara på CM5 med eMMC

För att installera operativsystemet på en CM5 med eMMC, följ de officiella instruktionerna för setting up the IO Board.

Ett viktigt steg är att placera en bygel på J2-huvudet på IO-kortet. Detta sätter CM5 i USB-startläge, vilket gör att din värd-PC kan komma åt eMMC som en masslagringsenhet.

Compute Module 5 IO-kort

Problem med rpiboot och lösningen

På min utvecklingsmaskin (Ubuntu 22.04) försökte jag först installera rpiboot med:

sudo apt install rpiboot

Den här versionen fungerade dock inte ordentligt - troligen på grund av att den är föråldrad eller inkompatibel med CM5.

Istället var jag tvungen att bygga rpiboot från källan. Följ stegen här:

Klona det officiella förvaret:

git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot

Installera beroenden och bygga:

sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make

Kör rpiboot

med CM5 ansluten och J2 bygeln på plats:

sudo ./rpiboot -d mass-storage-gadget64

Systemet kommer att upptäcka CM5:ans eMMC, och du kan nu flasha operativsystemet till den med Raspberry Pi Imager eller dd.

Sammanfattning

  • SD-kortplatsen för CM5 fungerar endast på Lite-varianter (utan eMMC).
  • För att flasha en CM5 med eMMC måste du:
    ** Sätta i bygeln J2.
    ** Använda rpiboot för att exponera eMMC via USB.
  • Om den paketerade rpiboot inte fungerar, bygg den från källkod.

När det är gjort kan du flasha Raspberry Pi OS direkt på eMMC som om det vore ett SD-kort.