Обзор загрузчика
spi-boot - SPL(BL1) загрузчик, занимается начальной загрузкой содержимого из SPI flash-накопителя в CRAM
Исходный код
boot-spi.S - исходный код загрузчика
boot-spi.xl - скрипт линковщика для сборки загрузчика
compile.py - Python скрипт для корректной сборки конечного образа, он вызывается в качестве post image скрипта в buildroot
boards-memory-configs/memory-config-*.S - исходный код инициализации контроллера памяти SDRAM для определенного модуля
boards-memory-configs/memory-configs.xl - скрипт линковщика для сборки исходного кода инициализации контроллера памяти SDRAM
Порядок загрузки
spi-boot1 - первая стадия загрузчика, на которой выполняется загрузка второй стадии и ПО для инициализации контроллеров памяти SDRAM или DDR из SPI flash-накопителя в CRAM
memory-config - ПО инициализации контроллеров памяти SDR, DDR1 SDRAM соотвественно
spi-boot2 - вторая стадия загрузчика, на которой выполняется загрузка U-Boot из SPI flash-накопителя в CRAM
U-Boot - передача управления загрузчику следующего уровня TPL(BL2)
Конфигурация и сборка
Примечание
В ходе выполнения сборки Buildroot, выполняются post image bash скрипты, которые корректно соберают загрузчик и создадают конечный образ.
Конфигурация выполняется через параметры запуска Python скрипта compile.py.
Предупреждение
Требуется Python 3.5 и выше
Доступные параметры:
$ python3 compile.py --help
usage: compile.py [-h] -c chip (-b board | -i <ddr3init.elf>) -f <u-boot>
[-t <mipsel-elf32->]
Create binary bootloader for ELVEES Mips Multicores
optional arguments:
-h, --help show this help message and exit
-c chip, --chip-name chip
Name of the chip, the bootloader is building for
-b board, --board-name board
Name of the board, in case of using our memory
initialization
-i <ddr3init.elf>, --ram-init <ddr3init.elf>
Path to memory initialization elf file, in case of
using external one
-f <u-boot>, --firmware <u-boot>
Path to firmware elf file
-t <mipsel-elf32->, --triple <mipsel-elf32->
Triple to use as cross compile
Пример для микросхемы MCT-06:
$ python3 ./compile.py \
-c mct06 \
-b mct06em \
-f <path-to-image>/u-boot \
-t <path-to-toolchain>/bin/mipsel-elvees-elf-
Примеры для остальных микросхем можно посмотреть в дистрибутиве buildroot
по пути: external-<имя_микросхемы>/board/post-image.sh