Ports/aarch64/RaspberryPiCM4
Raspberry Pi Compute Module 4 - вычислительный модуль, представляющий собой собой портативный вариант модели Raspberry Pi 4, размером всего 55 × 40 мм [1]. В статье рассматривается работа модуля с платой ввода-вывода 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)