Ports/aarch64/RaspberryPiCM4

Материал из ALT Linux Wiki


Raspberry Pi Compute Module 4 — вычислительный модуль, представляющий собой собой портативный вариант модели Raspberry Pi 4, размером всего 55 × 40 мм [1]. Статья содержит инструкции по прошивке модуля (EEPROM и eMMC), установленного в плату ввода-вывода Raspberry Pi Compute Module 4 and IO Board [2].

Подготовка

Установить пакет raspberrypi-usbboot на компьютер, с которого будет производиться прошивка модуля.

Обновление загрузчика в EEPROM

0. Подготовить прошивку

1. Установить перемычки на плате ввода-вывода: J2 "disable eMMC Boot" и "disable writing to EEPROM"

2. Подключить к компьютеру при помощи кабеля micro-USB (USB slave на плате)

3. Подать питание на плату ввода-вывода

4. Запустить на компьютере следующую команду от root:

# rpiboot -d путь/до/recovery
Loading: путь/до/recovery/bootcode4.bin
Waiting for BCM2835/6/7/2711...
Loading: путь/до/recovery/bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes 
Waiting for BCM2835/6/7/2711...
Loading: путь/до/recovery/bootcode4.bin
Second stage boot server
Loading: путь/до/recovery/config.txt
File read: config.txt
Loading: путь/до/recovery/pieeprom.bin
Loading: путь/до/recovery/pieeprom.bin
Loading: путь/до/recovery/pieeprom.sig
File read: pieeprom.sig
Loading: путь/до/recovery/pieeprom.bin
File read: pieeprom.bin
Second stage boot server done

5. Дождаться завершения прошивки (около 10 секунд, на дисплее загорится зелёная картинка, если успешно)

6. Отключить питание

7. Удалить перемычки, отключить usb-кабель от компьютера

8. Подать питание и пробовать загружаться

Запись на eMMC

1. Установить перемычку на плате ввода-вывода: J2 "disable eMMC Boot"

2. Подключить к компьютеру при помощи кабеля micro-USB (USB slave на плате)

3. Подать питание на плату ввода-вывода

4. Запустить на компьютере:

# rpiboot
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes 
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Loading embedded: start4.elf
File read: start4.elf
Second stage boot server done

5. На компьютере появится новое устройство /dev/sdX

6. Записать образ на /dev/sdX или самостоятельно развернуть rootfs

7. Смонтировать FAT32 радел, добавить в config.txt строку:

dtoverlay=dwc2,dr_mode=host

Если этого не сделать, не будут работать порты USB 2.0. Тем не менее при загрузке с USB, а не eMMC, этого не требуется делать.

8. Отмонтировать разделы и отключить питание платы ввода-вывода

9. Удалить перемычку, отключить usb-кабель от компьютера

10. Подать питание и пробовать загружаться

Модификация прошивки загрузчика EEPROM

1. Получаем прошивки для вычислительного модуля и переходим к ним одной командой:

wget https://github.com/raspberrypi/usbboot/archive/master.tar.gz &&
tar -xvf master.tar.gz usbboot-master/recovery &&
rm -f master.tar.gz &&
cd usbboot-master/recovery

2. В каталоге будет несколько стабильных прошивок:

pieeprom-2021-02-16.bin
pieeprom-2021-06-14.bin
pieeprom.original.bin

Записывается из них только pieeprom.original.bin. Так что при необходимости переименовываем нужную в pieeprom.original.bin

3. При необходимости изменяем порядок загрузки в файле boot.conf [3].

  • Для сетевой загрузки прописываем:
BOOT_ORDER=0xf2
  • Для загрузки с SD/EMMC:
BOOT_ORDER=0xf1
  • Для загрузки сначала с USB, а в случае неудачи через eMMC:
BOOT_ORDER=0xf15

4. Готовим прошивку, если производили какие-то изменения на предыдущих шагах:

./update-pieeprom.sh

5. Выполняем Обновление загрузчика в EEPROM

FAQ

В: Не работает usb 2.0 при загрузке с eMMC

О: Убедитесь, что отключили кабель micro-USB от платы ввода-вывода и прописали в config.txt строку:

dtoverlay=dwc2,dr_mode=host

В: Не работает загрузка с usb 2.0

О: Убедитесь, что отключили кабель micro-USB от платы ввода-вывода. Если не помогло, то следует изменить порядок загрузки (см. Модификация прошивки загрузчика EEPROM)

Ссылки