Проблема введения
Для нового проекта мы решили использовать Raspberry Pi Compute Module 5 (CM5) в качестве аппаратной платформы.
Я получил комплект для разработки, состоящий из:
- 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.
Цель
Чтобы упростить разработку, я хотел запустить системное программное обеспечение (raspiOS) с карты microSD, поскольку Compute Module 5 IO Board оснащен слотом для карт microSD.
Я использовал Raspberry Pi Imager для прошивки последней версии ОС Raspberry Pi на карту microSD, вставил карту в слот на плате IO и включил питание системы.
Однако вместо загрузки ОС на дисплее появилось похожее на терминал сообщение: "SD: карта не обнаружена", и система не загрузилась.
Причина и следствие
После некоторых поисков я нашел объяснение в документации Raspberry Pi для Compute Module 5:
- слот для карт microSD (только для использования в вариантах Lite без eMMC; в других вариантах слот игнорируется)
Это означает, что слот microSD можно использовать только в варианте "Lite", в котором нет встроенной памяти eMMC. Мой CM5 оснащен 32 ГБ eMMC, поэтому слот SD отключен и игнорируется при загрузке.
Правильный способ установки системного программного обеспечения на CM5 с eMMC
Чтобы установить операционную систему на CM5 с eMMC, следуйте официальным инструкциям для setting up the IO Board.
Важнейшим шагом является установка перемычки на заголовок J2 на плате ввода-вывода. Это переведет CM5 в режим USB-загрузки, позволяя Вашему хост-компьютеру обращаться к eMMC как к устройству массового хранения данных.
Проблема с rpiboot и ее решение
На моей машине для разработки (Ubuntu 22.04) я сначала попробовал установить rpiboot с помощью:
sudo apt install rpiboot
Однако эта версия не работала должным образом - вероятно, из-за того, что она была устаревшей или несовместимой с CM5.
Вместо этого мне пришлось собрать rpiboot из исходного кода. Следуйте инструкциям здесь:
Клонируйте официальный репозиторий:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Установите зависимости и выполните сборку:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Запустите rpiboot
С подключенным CM5 и установленной перемычкой J2:
sudo ./rpiboot -d mass-storage-gadget64
Система обнаружит eMMC CM5, и теперь Вы можете прошить на нее ОС с помощью Raspberry Pi Imager или dd.
Резюме
- Слот SD в CM5 работает только в вариантах Lite (без eMMC).
- Чтобы прошить CM5 с eMMC, Вы должны:
** Установить перемычку J2.
** Использовать rpiboot для открытия eMMC через USB. - Если упакованный rpiboot не работает, соберите его из исходников.
После этого Вы сможете прошить Raspberry Pi OS непосредственно на eMMC, как если бы это была SD-карта.