Inleiding Probleem
Voor een nieuw project hebben we besloten om de Raspberry Pi Compute Module 5 (CM5) als hardwareplatform te gebruiken.
Ik ontving een ontwikkelkit bestaande uit:
- 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.
Doel
Om de ontwikkeling te vereenvoudigen, wilde ik de systeemsoftware (raspiOS) vanaf een microSD-kaart uitvoeren, aangezien de Compute Module 5 IO Board een microSD-kaartsleuf heeft.
Ik gebruikte Raspberry Pi Imager om het nieuwste Raspberry Pi OS op een microSD-kaart te flashen, de kaart in de sleuf op het IO-bord te steken en het systeem aan te zetten.
Echter, in plaats van het opstarten van het besturingssysteem, toonde het scherm een terminalachtig bericht met de tekst "SD: kaart niet gedetecteerd", en het systeem startte niet op.
Oorzaak en gevolg
Na wat onderzoek vond ik de uitleg in de Raspberry Pi-documentatie voor de Compute Module 5:
- microSD-kaartsleuf (alleen voor gebruik met Lite-varianten zonder eMMC; andere varianten negeren de sleuf)
Dit betekent dat het microSD-slot alleen bruikbaar is op de "Lite"-variant, die geen eMMC-opslag aan boord heeft. Mijn CM5 heeft 32 GB eMMC, dus het SD-slot is uitgeschakeld en wordt tijdens het opstarten genegeerd.
Juiste manier om systeemsoftware te installeren op CM5 met eMMC
Om het besturingssysteem op een CM5 met eMMC te installeren, volgt u de officiële instructies voor setting up the IO Board.
Een cruciale stap is het plaatsen van een jumper op de J2 header op het IO bord. Hierdoor wordt de CM5 in USB-opstartmodus gezet, waardoor uw host-pc toegang krijgt tot de eMMC als een apparaat voor massaopslag.
Probleem met rpiboot en de oplossing
Op mijn ontwikkelmachine (Ubuntu 22.04) probeerde ik aanvankelijk rpiboot te installeren met:
sudo apt install rpiboot
Deze versie werkte echter niet goed - waarschijnlijk omdat hij verouderd was of niet compatibel met CM5.
In plaats daarvan moest ik rpiboot vanaf de broncode bouwen. Volg de stappen hier:
Kloon de officiële repository:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Installeer afhankelijkheden en bouw:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Voer rpiboot uit
met de CM5 aangesloten en de J2 jumper op zijn plaats:
sudo ./rpiboot -d mass-storage-gadget64
Het systeem zal de eMMC van de CM5 detecteren en u kunt nu het besturingssysteem erop flashen met Raspberry Pi Imager of dd.
Samenvatting
- De CM5 SD-sleuf werkt alleen op Lite-varianten (geen eMMC).
- Om een CM5 met eMMC te flashen, moet u:
** De jumper J2 instellen.
** Gebruik rpiboot om de eMMC via USB bloot te leggen. - Als de verpakte rpiboot niet werkt, bouw deze dan vanaf de broncode.
Zodra dat gedaan is, kunt u Raspberry Pi OS rechtstreeks op de eMMC flashen alsof het een SD-kaart is.