Обзор загрузчика
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.