Uvod Problem
Pri novem projektu smo se odločili, da kot strojno platformo uporabimo Raspberry Pi Compute Module 5 (CM5).
Prejel sem razvojni komplet, ki ga sestavljajo:
- 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.
Cilj
Za poenostavitev razvoja sem želel sistemsko programsko opremo (raspiOS) poganjati s kartice microSD, saj je Compute Module 5 IO Board opremljen z režo za kartico microSD.
Uporabil sem Raspberry Pi Imager da sem na kartico microSD prenesel najnovejši operacijski sistem Raspberry Pi, vstavil kartico v režo na plošči IO in vklopil sistem.
Vendar se je namesto zagona operacijskega sistema na zaslonu prikazalo terminalu podobno sporočilo "SD: card not detected" in sistem se ni zagnal.
Vzrok in posledica
Po nekaj raziskavah sem našel razlago v dokumentaciji Raspberry Pi za Compute Module 5:
- reža za kartico microSD (samo za uporabo z različicami Lite brez eMMC; druge različice te reže ne upoštevajo)
To pomeni, da je reža za microSD uporabna samo pri različici "Lite", ki nima vgrajenega pomnilnika eMMC. Moj CM5 ima 32 GB eMMC, zato je reža SD onemogočena in se med zagonom ne upošteva.
Pravilen način namestitve sistemske programske opreme na CM5 z eMMC
Če želite namestiti operacijski sistem v računalnik CM5 z eMMC, sledite uradnim navodilom za setting up the IO Board.
Ključni korak je namestitev prečke na glavo J2 na plošči IO. S tem CM5 preklopite v zagonski način USB in omogočite gostiteljskemu računalniku, da do eMMC dostopa kot do naprave za množično shranjevanje.
Težava z rpiboot in rešitev
Na svojem razvojnem računalniku (Ubuntu 22.04) sem najprej poskusil namestiti rpiboot z:
sudo apt install rpiboot
Vendar ta različica ni delovala pravilno - verjetno zato, ker je bila zastarela ali nezdružljiva s CM5.
Namesto tega sem moral sestaviti rpiboot iz izvorne kode. Sledite korakom tukaj:
Kloniranje uradne shrambe:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Namestite odvisnosti in zgradite:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Zaženite rpiboot
s priključenim CM5 in nameščenim mostičkom J2:
sudo ./rpiboot -d mass-storage-gadget64
Sistem bo zaznal eMMC CM5 in zdaj lahko operacijski sistem nanj prenesete s programom Raspberry Pi Imager ali dd.
Povzetek
- Reža za SD CM5 deluje samo v različicah Lite (brez eMMC).
- Če želite vklopiti CM5 z eMMC, morate:
** Nastaviti mostiček J2.
** Uporabiti rpiboot za izpostavitev eMMC prek USB. - Če paketni rpiboot ne deluje, ga sestavite iz izvorne kode.
Ko je to opravljeno, lahko operacijski sistem Raspberry Pi OS vstavite neposredno na eMMC, kot da bi šlo za kartico SD.