README.md

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.

Сборка

Для сборки прошивки необходимо выполнить следующие команды:

  1. Скачать все подмодули с помощью команды:

    git submodule update --init --recursive
    
  2. Запустить сборку с помощью команды:

    Для Repka Pi 3:

    make REPKA_MODEL=pi3 build-loader
    

    Для Repka Pi 4:

    make REPKA_MODEL=pi4 build-loader
    
  3. После успешной сборки появится директория 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

  1. Сборка arm-trusted-firmware с включенным режимом логирования.
  2. Сборка U-Boot (внутри которого собирается дерево устройств и необходимые оверлеи) с включенным режимом логирования.
  3. Сборка arm-trusted-firmware с тихим режимом.
  4. Сборка U-Boot с тихим режимом.
  5. Помещение всех собранных файлов в директорию src-pi3 (которая связана с хостовой машиной).

Алгоритм для Repka Pi 4

  1. Сборка arm-trusted-firmware с включенным режимом логирования.
  2. Сборка гипервизора aw-el2-barebone с включенным режимом логирования.
  3. Сборка U-Boot (внутри которого собирается дерево устройств и необходимые оверлеи) с включенным режимом логирования.
  4. Сборка arm-trusted-firmware с тихим режимом.
  5. Сборка гипервизора aw-el2-barebone с тихим режимом.
  6. Сборка U-Boot с тихим режимом.
  7. Помещение всех собранных файлов в директорию src-pi4 (которая связана с хостовой машиной).

Как записать загрузчик на Repka Pi 3 / Repka Pi 4

  1. В первую очередь необходимо скопировать содержимое директории src-<REPKA_MODEL>/spl в директорию /boot/spl на Repka Pi.
  2. Далее есть два варианта записи:

    • Запись через 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

Конвейеры
0 успешных
0 с ошибкой