Skip to content

Secondary bootloader for MCom-03

License

Notifications You must be signed in to change notification settings

elvees/mcom03-sbl

Repository files navigation

Secondary Bootloader (SBL)

Компоненты

SBL-XIP

SBL-XIP выполняется на RISC0 из QSPI0 в режиме XIP (загрузка напрямую из QSPI0).

SBL-XIP выполняет:

  • копирование кода инициализации DDR из QSPI0 в SPRAM0;
  • запуск кода инициализации DDR из SPRAM0 (инициализатор DDR должен вернуть управление SBL после завершения работы);
  • копирование DTB из QSPI0 в DDR;
  • копирование TF-A из QSPI0 в DDR;
  • копирование TEE из QSPI0 в DDR (опционально);
  • копирование U-Boot из QSPI0 в DDR;
  • запуск TF-A на ARM CPU.

Скрипты сборки проекта позволяют собирать SBL-XIP для нескольких плат за один вызов Cmake.

Для сборки SBL-XIP рецепту сборки должна быть передана CMake-переменная IMAGES_PATH, содержащая путь к требуемым для сборки бинарным файлам в том виде, в котором их собирает Buildroot. То есть, директория должна иметь следующую структуру:

  • ./<ddrinit_1>/ddrinit.bin
  • ./<ddrinit_2>/ddrinit.bin
  • ./uboot-dtb/<dtb_name_1>.dtb
  • ./uboot-dtb/<dtb_name_2>.dtb
  • ./u-boot.bin
  • ./bl31.bin
  • ./bl32.bin (необязательно)

Также рецепту сборки должна быть передана переменная DDRINIT_DTB_MAP, содержащая пары ddrinit-DTB для включения в образ SBL-XIP. Переменная должна иметь следующий формат: <ddrinit1>:<dtb1> <ddrinit2>:<dtb2> ....

Результатом сборки SBL-XIP является набор образов для всех переданных пар ddrinit и DTB с именами следующего формата: sbl-xip-<dtb>.bin.

SBL-S1

BootROM последовательно загружает и передаёт управление на образы. Цепочка образов упаковывается в проприетарный формат SBIMG.

SBL-S1 (stage 1) предназначен для начальной настройки микросхемы и должен выполняться первым в цепочке загрузки.

Note

Полная цепочка загрузки посредством BootROM еще не реализована.

SBL-S1 выполняется на RISC0 из SPRAM0. Может быть загружен c помощью BootROM или через JTAG.

SBL-S1 выполняет:

  • настройку частот системного коммутатора;
  • настройку регистров уровня TOP;
  • настройку cлужебной подсистемы;
  • настройку WDT0 с таймаутом 3с;

SBL-S3

Является частью цепочки загрузки с помощью BootROM.

Отвечает за: * настройку частот и запуск ПО ARM CPU (entry point TF-A BL31); * предоставляет набор сервисов работающих через mailbox:

  • cервис управления WDT;
  • сервис настройки базовых адресов подсистем/устройств GPU, HSPERIPH, ...;

Разработка

Отладка по JTAG

MDB-скрипты (директория scripts) предназначены для отладки компонентов SBL-S1, ddrinit, TF-A, U-Boot и запуска Linux через отладчик MC-USB-JTAG (отладчик работает через RISC0).

Скрипты последовательно загружают образы и передаёт им управление. Алгоритм исполнения см. в комментариях к скриптам.

Правила разработки

В проекте включаемые заголовки разделены на группы. Группы разделены пустыми строками. Внутри групп заголовки располагаются в алфавитном порядке. Все заголовочные файлы проекта должны быть указаны без использования псевдонимов каталогов UNIX . (текущий каталог) или .. (родительский каталог).

Порядок группировки:

  • Стандартные/системные заголовки C, обрамляемые угловыми скобками.
  • Заголовки проекта, обрамленные угловыми скобками и выраженные через путь относительно корня проекта. Путь к корню проекта передается в скриптах сборки через флаг -I.
  • Локальные заголовки, обрамленные кавычками.

При указании пути без ссылок на верхние директории используются кавычки (#include "header.h" - разрешено, #include <subdir/header.h> - запрещено).

About

Secondary bootloader for MCom-03

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published