Wprowadzenie Problem
W przypadku nowego projektu zdecydowaliśmy się wykorzystać Raspberry Pi Compute Module 5 (CM5) jako naszą platformę sprzętową.
Otrzymałem zestaw deweloperski składający się z:
- 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.
Cel
Aby uprościć rozwój, chciałem uruchomić oprogramowanie systemowe (raspiOS) z karty microSD, ponieważ Compute Module 5 IO Board zawiera gniazdo kart microSD.
Użyłem Raspberry Pi Imager aby sflashować najnowszy system operacyjny Raspberry Pi na kartę microSD, włożyłem kartę do gniazda na płytce IO i włączyłem system.
Jednak zamiast uruchomić system operacyjny, na wyświetlaczu pojawił się komunikat podobny do terminala "SD: karta nie została wykryta", a system nie uruchomił się.
Przyczyna i skutek
Po kilku poszukiwaniach znalazłem wyjaśnienie w dokumentacji Raspberry Pi dla funkcji Compute Module 5:
- gniazdo kart microSD (tylko do użytku z wariantami Lite bez eMMC; inne warianty ignorują gniazdo)
Oznacza to, że gniazdo microSD jest użyteczne tylko w wariancie "Lite", który nie zawiera wbudowanej pamięci eMMC. Mój CM5 ma 32 GB eMMC, więc gniazdo SD jest wyłączone i ignorowane podczas uruchamiania.
Prawidłowy sposób instalacji oprogramowania systemowego na CM5 z eMMC
Aby zainstalować system operacyjny na CM5 z eMMC, proszę postępować zgodnie z oficjalnymi instrukcjami dla setting up the IO Board.
Kluczowym krokiem jest umieszczenie zworki na złączu J2 na płycie IO. Spowoduje to przełączenie CM5 w tryb rozruchu USB, umożliwiając komputerowi hosta dostęp do eMMC jak do urządzenia pamięci masowej.
Problem z rpiboot i rozwiązanie
Na mojej maszynie deweloperskiej (Ubuntu 22.04) początkowo próbowałem zainstalować rpiboot z:
sudo apt install rpiboot
Jednak ta wersja nie działała poprawnie - prawdopodobnie dlatego, że była przestarzała lub niekompatybilna z CM5.
Zamiast tego musiałem zbudować rpiboot ze źródła. Proszę postępować zgodnie z instrukcjami tutaj:
Proszę sklonować oficjalne repozytorium:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Zainstalować zależności i zbudować:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Proszę uruchomić rpiboot
z podłączonym CM5 i założoną zworką J2:
sudo ./rpiboot -d mass-storage-gadget64
System wykryje pamięć eMMC CM5 i można teraz sflashować na nią system operacyjny za pomocą Raspberry Pi Imager lub dd.
Podsumowanie
- Gniazdo SD CM5 działa tylko w wariantach Lite (bez eMMC).
- Aby sflashować CM5 z eMMC, należy:
** Ustawić zworkę J2.
** Użyć rpiboot, aby ujawnić eMMC przez USB. - Jeśli spakowany rpiboot nie działa, proszę zbudować go ze źródła.
Gdy to zrobimy, można sflashować system operacyjny Raspberry Pi bezpośrednio na eMMC, tak jakby była to karta SD.