Introducere Problemă
Pentru un nou proiect, am decis să folosim Raspberry Pi Compute Module 5 (CM5) ca platformă hardware.
Am primit un kit de dezvoltare format din:
- 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.
Obiectiv
Pentru a simplifica dezvoltarea, am dorit să execut software-ul de sistem (raspiOS) de pe un card microSD, deoarece Compute Module 5 IO Board include un slot pentru card microSD.
Am folosit Raspberry Pi Imager pentru a memora cel mai recent sistem de operare Raspberry Pi pe un card microSD, am introdus cardul în fanta de pe placa IO și am pornit sistemul.
Cu toate acestea, în loc să pornească în sistemul de operare, ecranul a afișat un mesaj de tip terminal care spunea "SD: card not detected", iar sistemul nu a pornit.
Cauză și efect
După câteva cercetări, am găsit explicația în documentația Raspberry Pi pentru Compute Module 5:
- slotul pentru card microSD (numai pentru utilizarea cu variantele Lite fără eMMC; alte variante ignoră slotul)
Aceasta înseamnă că slotul microSD este utilizabil numai pe varianta "Lite", care nu include stocare eMMC la bord. CM5-ul meu are 32 GB eMMC, astfel încât slotul SD este dezactivat și ignorat în timpul boot-ului.
Modul corect de instalare a software-ului de sistem pe CM5 cu eMMC
Pentru a instala sistemul de operare pe un CM5 cu eMMC, urmați instrucțiunile oficiale pentru setting up the IO Board.
Un pas esențial este plasarea unui jumper pe antetul J2 de pe placa IO. Acest lucru pune CM5 în modul de pornire USB, permițând PC-ului gazdă să acceseze eMMC ca pe un dispozitiv de stocare de masă.
Problema cu rpiboot și soluția
Pe mașina mea de dezvoltare (Ubuntu 22.04), am încercat inițial să instalez rpiboot cu:
sudo apt install rpiboot
Cu toate acestea, această versiune nu a funcționat corect - probabil din cauza faptului că este depășită sau incompatibilă cu CM5.
În schimb, a trebuit să construiesc rpiboot din sursă. Urmați pașii aici:
Clonați depozitul oficial:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Instalați dependențele și construiți:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Rulați rpiboot
cu CM5 conectat și jumperul J2 pe poziție:
sudo ./rpiboot -d mass-storage-gadget64
Sistemul va detecta eMMC-ul CM5, iar acum puteți activa sistemul de operare pe acesta utilizând Raspberry Pi Imager sau dd.
Rezumat
- Slotul SD CM5 funcționează numai pe variantele Lite (fără eMMC).
- Pentru a activa un CM5 cu eMMC, trebuie să:
** Setați jumperul J2.
** Utilizați rpiboot pentru a expune eMMC prin USB. - Dacă pachetul rpiboot nu funcționează, construiți-l din sursă.
Odată făcut acest lucru, puteți memora sistemul de operare Raspberry Pi OS direct pe eMMC, ca și cum ar fi un card SD.