Boot Loader for Repka Pi 4
Данный репозиторий состоит из 3 git-подмодулей:
1. ARM Trusted Firmware (ATF)
2. Гипервизор, необходимый для работы с PCIe (aw-el2-barebone)
3. Сам загрузчик U-Boot версии 2020-04-rc3
Версии необходимых утилит для сборки:
Утилита | Версия |
---|---|
git | 2.43.0 |
Docker Engine | 28.0.1 |
GNU Make | 4.3 |
Примечание: Сборка осуществлялась на ОС Linux Ubuntu 24.04 с архитектурой x86_64.
Сборка
Для сборки прошивки необходимо выполнить следующие команды:
Скачать все подмодули с помощью команды:
git submodule update --init --recursive
Запустить сборку с помощью команды:
make build-loader
После успешной сборки появиться директория src в корне репозитория:
src ├── overlays (директория с оверлеями для Repka Pi 4) │ ├── i2c1.dtbo │ ├── i2c2.dtbo │ ├── i2c3.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 (загрузчик с тихим режимом)
Краткий алгоритм сборки загрузчика в контейнере
Более подробно алгоритм сборки можно изучить в скрипте, который находится по пути:
docker/build.sh
- Сборка arm-trusted-firmware с включенным режимом логирования.
- Сборка гипервизора aw-el2-barebone с включенным режимом логирования.
- Сборка U-Boot (внутри которого собирается дерево устройств и необходимые оверлеи) с включенным режимом логирования.
- Сборка arm-trusted-firmware с тихим режимом.
- Сборка гипервизора aw-el2-barebone с тихим режимом.
- Сборка U-Boot с тихим режимом.
- Помещение всех собранных файлов в директорию src (которая связана с хостовой машиной).
Как записать загрузчик на Repka Pi 4
- В первую очередь необходимо скопировать содержимое директории src/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” подробнее по ссылке
Как формируется версия загрузчика
Учитывая то, что данный репозиторий является фактически форком 3 других репозиториев было принято решение реализовать его версионность на базе версии U-Boot, но только с добавлением дополнительного числа, показывающего версию нашего обновления.
Как выглядит версия загрузчика (с нашим дополнением):
2020.04-rc3-1
│ │ │ │
│ │ │ └── 1 - номер версии (доработка команды Repka Pi, именно она будет изменяться с новыми обновлениями)
│ │ └── rc3 (release candidate 3) - кандидат к итоговой версии 3 (стандарт U-Boot)
│ └── 04 - месяц выпуска версии (стандарт U-Boot)
└── 2020 - год выпуска версии (стандарт U-Boot)