Boot Loader for Repka Pi
Данный репозиторий предназначен для сборки загрузчика под одноплатные компьютеры Repka Pi 3 и Repka Pi 4. Репозиторий включает в себя несколько git-подмодулей, которые используются для конкретного одноплатного компьютера:
Git-подмодуль | Repka Pi 3 | Repka Pi 4 |
---|---|---|
ARM Trusted Firmware (ATF) | Используется | Используется |
Гипервизор для работы с PCIe (aw-el2-barebone) | Не используется | Используется |
U-Boot версии v2020.04-rc3 | Не используется | Используется |
U-Boot версии v2022.04 | Используется | Не используется |
Версии необходимых утилит для сборки:
Утилита | Версия |
---|---|
git | 2.43.0 |
Docker Engine | 28.0.1 |
GNU Make | 4.3 |
Примечание: Сборка осуществлялась на ОС Linux Ubuntu 24.04 с архитектурой x86_64.
Сборка
Для сборки прошивки необходимо выполнить следующие команды:
Скачать все подмодули с помощью команды:
git submodule update --init --recursive
Запустить сборку с помощью команды:
Для Repka Pi 3:
make REPKA_MODEL=pi3 build-loader
Для Repka Pi 4:
make REPKA_MODEL=pi4 build-loader
После успешной сборки появится директория src-<REPKA_MODEL> в корне репозитория:
Для Repka Pi 3: src-pi3 ├── overlays (директория с оверлеями для Repka Pi 3) │ ├── 1008GHz.dtbo │ ├── 1200GHz.dtbo │ ├── 1368GHz.dtbo │ ├── 1416GHz.dtbo │ ├── i2c1.dtbo │ ├── i2c1-fast-mode.dtbo │ ├── i2c2.dtbo │ ├── i2c2-fast-mode.dtbo │ ├── i2s.dtbo │ ├── i2s_pcm5102.dtbo │ ├── i2s_pcm5122.dtbo │ ├── i2s_wm8960.dtbo │ ├── profile-ver1.3.dtbo │ ├── profile-ver1.4-1.6-active.dtbo │ ├── profile-ver1.4-1.6-passive.dtbo │ ├── pwm0.dtbo │ ├── spi0_can.dtbo │ ├── spi0.dtbo │ ├── spi1.dtbo │ ├── s_uart.dtbo │ └── uart2.dtbo ├── repka-pi.dtb (основное дерево устройств для Repka Pi 3) └── spl ├── u-boot-sunxi-with-spl.bin (загрузчик с включенным логированием в UART0) └── u-boot-sunxi-with-spl-silent.bin (загрузчик с тихим режимом)
Для Repka Pi 4: src-pi4 ├── overlays (директория с оверлеями для Repka Pi 4) │ ├── i2c1.dtbo │ ├── i2c1-fast-mode.dtbo │ ├── i2c2.dtbo │ ├── i2c2-fast-mode.dtbo │ ├── i2c3.dtbo │ ├── i2c3-fast-mode.dtbo │ ├── i2s.dtbo │ ├── i2s_pcm5102.dtbo │ ├── i2s_pcm5122.dtbo │ ├── spi0.dtbo │ ├── s_uart.dtbo │ ├── uart3.dtbo │ └── w1_gpio.dtbo ├── repka-pi.dtb (основное дерево устройств для Repka Pi 4) └── spl ├── u-boot-sunxi-with-spl.bin (загрузчик с включенным логированием в UART0) └── u-boot-sunxi-with-spl-silent.bin (загрузчик с тихим режимом)
Краткий алгоритм сборки загрузчика в контейнере
Более подробно алгоритм сборки можно изучить в скрипте, который находится по пути:
Для Repka Pi 3:
docker/build-pi3.sh
Для Repka Pi 4:
docker/build-pi4.sh
Алгоритм для Repka Pi 3
- Сборка arm-trusted-firmware с включенным режимом логирования.
- Сборка U-Boot (внутри которого собирается дерево устройств и необходимые оверлеи) с включенным режимом логирования.
- Сборка arm-trusted-firmware с тихим режимом.
- Сборка U-Boot с тихим режимом.
- Помещение всех собранных файлов в директорию src-pi3 (которая связана с хостовой машиной).
Алгоритм для Repka Pi 4
- Сборка arm-trusted-firmware с включенным режимом логирования.
- Сборка гипервизора aw-el2-barebone с включенным режимом логирования.
- Сборка U-Boot (внутри которого собирается дерево устройств и необходимые оверлеи) с включенным режимом логирования.
- Сборка arm-trusted-firmware с тихим режимом.
- Сборка гипервизора aw-el2-barebone с тихим режимом.
- Сборка U-Boot с тихим режимом.
- Помещение всех собранных файлов в директорию src-pi4 (которая связана с хостовой машиной).
Как записать загрузчик на Repka Pi 3 / Repka Pi 4
- В первую очередь необходимо скопировать содержимое директории src-<REPKA_MODEL>/spl в директорию /boot/spl на Repka Pi.
Далее есть два варианта записи:
Запись через dd (для загрузчика с режимом логирования):
dd if=/boot/spl/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 strconv=notrunc
Запись через dd (для загрузчика с тихим режимом):
dd if=/boot/spl/u-boot-sunxi-with-spl-silent.bin of=/dev/mmcblk0 bs=1024 seek=8 strconv=notrunc
Запись через утилиту repka-config:
repka-config
И далее перейти в раздел “DL3 Boot Message” для Repka Pi 3 или для Repka Pi 4