README.md

    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.

    Сборка

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

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

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

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

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

    1. В первую очередь необходимо скопировать содержимое директории src/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” подробнее по ссылке

    Как формируется версия загрузчика

    Учитывая то, что данный репозиторий является фактически форком 3 других репозиториев было принято решение реализовать его версионность на базе версии U-Boot, но только с добавлением дополнительного числа, показывающего версию нашего обновления.

    Как выглядит версия загрузчика (с нашим дополнением):
    2020.04-rc3-1
     │   │   │  │
     │   │   │  └── 1 - номер версии (доработка команды Repka Pi, именно она будет изменяться с новыми обновлениями)
     │   │   └── rc3 (release candidate 3) - кандидат к итоговой версии 3 (стандарт U-Boot) 
     │   └── 04 - месяц выпуска версии (стандарт U-Boot)
     └── 2020 - год выпуска версии (стандарт U-Boot)
    
    Конвейеры
    0 успешных
    0 с ошибкой