Innledning Problem
I et nytt prosjekt bestemte vi oss for å bruke Raspberry Pi Compute Module 5 (CM5) som maskinvareplattform.
Jeg mottok et utviklingssett 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.
Mål
For å forenkle utviklingen ønsket jeg å kjøre systemprogramvaren (raspiOS) fra et microSD-kort, siden Compute Module 5 IO Board har et spor for microSD-kort.
Jeg brukte Raspberry Pi Imager til å flashe det nyeste Raspberry Pi-operativsystemet på et microSD-kort, satte kortet inn i sporet på IO-kortet og slo på systemet.
Men i stedet for å starte opp i operativsystemet, viste displayet en terminallignende melding som sa "SD: card not detected", og systemet startet ikke.
Årsak og virkning
Etter noen undersøkelser fant jeg forklaringen i Raspberry Pi-dokumentasjonen for Compute Module 5:
- microSD-kortspor (kun for bruk med Lite-varianter uten eMMC; andre varianter ignorerer sporet)
Dette betyr at microSD-kortsporet bare kan brukes på "Lite"-varianten, som ikke har innebygd eMMC-lagring. Min CM5 har 32 GB eMMC, så SD-sporet er deaktivert og ignoreres under oppstart.
Riktig måte å installere systemprogramvare på CM5 med eMMC
For å installere operativsystemet på en CM5 med eMMC, følg de offisielle instruksjonene for setting up the IO Board.
Et viktig trinn er å plassere en jumper på J2-hovedet på IO-kortet. Dette setter CM5 i USB-oppstartsmodus, slik at verts-PC-en får tilgang til eMMC-en som en masselagringsenhet.
Problem med rpiboot og løsningen
På min utviklingsmaskin (Ubuntu 22.04) prøvde jeg først å installere rpiboot med:
sudo apt install rpiboot
Denne versjonen fungerte imidlertid ikke skikkelig - sannsynligvis fordi den er utdatert eller inkompatibel med CM5.
I stedet måtte jeg bygge rpiboot fra kildekode. Følg trinnene her:
Klone det offisielle depotet:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Installer avhengigheter og bygg:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Kjør rpiboot
med CM5 tilkoblet og J2-bryteren på plass:
sudo ./rpiboot -d mass-storage-gadget64
Systemet vil oppdage CM5s eMMC, og du kan nå flashe operativsystemet på den ved hjelp av Raspberry Pi Imager eller dd.
Sammendrag
- CM5 SD-sporet fungerer bare på Lite-varianter (uten eMMC).
- For å flashe en CM5 med eMMC, må du:
** Sette inn J2-genseren.
** Bruke rpiboot for å eksponere eMMC over USB. - Hvis den medfølgende rpiboot ikke fungerer, må du bygge den fra kildekode.
Når det er gjort, kan du flashe Raspberry Pi OS direkte på eMMC-en som om det var et SD-kort.