Skip to main content

Загрузочный образ Raspberry Pi CM5 eMMC
Проблемы с установкой системного программного обеспечения

Проблема введения

Для нового проекта мы решили использовать 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.

Вычислительный модуль 5 IO Case

Цель

Чтобы упростить разработку, я хотел запустить системное программное обеспечение (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 как к устройству массового хранения данных.

Вычислительный модуль 5 IO Board

Проблема с 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-карта.