Перейти к основному содержимому

Обзор Baikal ARM64 SDK

Введение

Baikal ARM64 SDK (Software Development Kit) - пакет программной поддержки разработчика для платформ BE-M1000 и BE-S1000, позволяющий как генерировать полностью готовые к использованию образы загрузчиков, ядра Linux и файловой системы, так и разрабатывать собственные модификации драйверов и иного программного обеспечения для перечисленных платформ.

SDK может использоваться только на компьютере с операционной системой GNU/Linux.

Данный документ содержит описание процесса установки, краткое описание структуры распакованных файлов и папок, доступных после установки SDK, описание работы с SDK, а также характеристики поддерживаемых плат.

Условные обозначения, используемые в документе
ОбозначениеРасшифровка
<Текст>Переменные данные. Примеры: <путь к файлу>, <имя платы>
<X|Y>Выбор одного из альтернативных вариантов.
<SDK_ROOT>Путь до директории с SDK.

Установка SDK

Установка производится на компьютер с операционной системой GNU/Linux.

Шаг 1: Загрузить Baikal ARM64 SDK

Выберите версию для загрузки:

Уведомление

К предоставляемым ресурсам применяются положения, описанные в пользовательском соглашении. Загружая любые материалы с сайта, Вы соглашаетесь с данными условиями.

Шаг 2: Распаковать SDK

Открыть терминал и распаковать архив:

unzip /<путь к архиву>/SDK-ARM64-<YYMM>-<N.n>.zip
Шаг 3: Перейти в директорию с распакованным SDK
cd SDK-ARM64-<YYMM>-<N.n>
Шаг 4: Разрешить исполнение установочного файла
chmod +x ./baikal-arm64-<YYMM>-<N.n>.run
Шаг 5: Запустить установку SDK
./baikal-arm64-<YYMM>-<N.n>.run

Не закрывайте терминал до завершения процесса. Распакованный SDK будет находиться в директории <SDK_ROOT>/baikal-arm64-<YYMM>-<N.n>.

Примечание

Здесь и далее по тексту переменная <SDK_ROOT> используется для обозначения полного пути до директории с распакованным SDK.

Структура SDK

SDK содержит следующее дерево каталогов:

├─ build            – Директория для хранения сгенерированных образов
│ └─ kernel – Директория хранения ядра и модулей ядра Linux
├─ prebuilts – Собранные эталонные загрузочные образы
├─ src – Директория с исходными файлами
│ ├─ acpica – Исходные файлы ACPICA (для построения IASL для UEFI)
│ ├─ initrd – Дерево исходных файлов rootfs для Baikal Embedded Linux (BEL)
│ ├─ kernel – Дерево исходных файлов ядра Linux
│ ├─ mali – Исходные файлы драйвера и бинарные библиотеки Arm® Mali™ - T628
│ ├─ opencsd – Исходные файлы библиотеки CoreSight™ Trace Decode library
│ ├─ openocd – Исходные файлы программы внутрисхемной отладки OpenOCD
│ ├─ simde – Исходные файлы библиотеки SIMDe
│ ├─ tf-a – Дерево исходных файлов загрузчиков TF-A
│ ├─ uefi – Исходное дерево загрузчика UEFI
│ ├─ vdec – Исходные файлы драйвера и бинарные библиотеки видеодекодера
│ └─ xen – Исходные файлы гипервизора Xen
├─ tools – Скрипты сборки SDK
├─ utils – Дополнительные утилиты
└─ xtools – ARM64 cross-toolchain с компилятором, GDB и библиотекой glibc

В директории /prebuilts находятся заранее скомпилированные (эталонные) бинарные файлы для поддерживаемых плат. В следующей таблице указаны бинарные образы, которые невозможно собрать из исходных файлов.

Эталонные образы
Имя образаОписание
bm1000-xcp.binПрошивка SCP для BE-M1000.
bs1000-cfg1soc.binФайл конфигурации СнК для BE-S1000 (один сокет).
Записывается в EEPROM на материнской плате.
bs1000-cfg2soc.binФайл конфигурации СнК для BE-S1000 (два сокета).
Записывается в EEPROM на материнской плате.
bs1000-cfg2soc-nosmp.binNon-SMP-файл конфигурации СнК для BE-S1000 (два сокета).
Образ записывается в EEPROM на материнской плате.
bs1000-ddr-training.binНабор параметров для тренинга и инициализации DDR PHY.
bs1000-xcp.binПрошивка SCP для BE-S1000.

Работа с SDK

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

sudo apt-get install acpica-tools autoconf automake bc bison \
build-essential clang cpio fakeroot flex fonts-freefont-ttf \
libarchive-zip-perl libfdt-dev libglib2.0-dev libncurses-dev \
libpixman-1-dev libssl-dev m4 mtools python python-is-python3 \
python3-anytree python3-click python3-prettytable python3-pyelftools \
uuid-dev xxd zlib1g-dev

Для создания и сборки образов в SDK используются два скрипта:

Данные скрипты находятся в директории <SDK_ROOT>/tools.

Основной скрипт сборки

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

<SDK_ROOT>/tools/build-boot-img.sh –h

Будет выведена основная информация о скрипте:

  • Шаблон команды сборки - build-boot-img.sh <target> <options>:

  • Список поддерживаемых плат;

  • Список параметров сборки.

Описание поля <target>
ПараметрОписание
dbm10Отладочная плата DBM 1.0 для BE-M1000
dbm20Отладочная плата DBM 2.0 для BE-M1000
mbm10Материнская плата MBM 1.0 для BE-M1000
mbm20Материнская плата MBM 2.0 для BE-M1000
dbsОтладочная плата DBS для BE-S1000
dbs-ovОтладочная плата DBS-OV для BE-S1000
rds-1sОдносокетная материнская плата RDS-1S для BE-S1000
rds-2sДвухсокетная материнская плата RDS-2S для BE-S1000
Описание поля <options>
ПараметрОписание
-a / --allСборка полного набора образов и других бинарных файлов в режиме release. Команда эквивалентна следующему списку параметров: --clean --defconfig --dtb --kernel --modules --initrd --vdec --uefi -–tfa --bootrom
-ad / --all-debugСборка полного набора образов и других бинарных файлов в режиме debug. Команда эквивалентна следующему списку параметров: --clean --debugconfig --dtb –-kernel
--modules --initrd --vdec --uefi-debug --tfa-debug --bootrom
-c / --cleanОчистка предыдущих сборок (ядро Linux, UEFI и TF-A)
-ct / --clean-tfaОчистка предыдущих сборок TF-A
-cu / --clean-uefiОчистка предыдущих сборок UEFI
-d / --defconfigСборка файла конфигурации ядра (.config) из defconfig-файла
--debugconfigСборка файла конфигурации ядра (.config) с включенными параметрами отладки
--хenconfigСборка файла конфигурации ядра (.config) для поддержки гипервизора Xen
--nconfigСборка файла конфигурации ядра (.config) с помощью меню ncurses
-f / --dtbСборка больших двоичных объектов дерева устройств (DTB)
-k / --kernelСборка ядра Linux с текущей конфигурацией (.config)
-m / --modulesСборка модулей ядра с текущей конфигурацией (.config)
-i / –initrdСборка образа файловой системы initrd
-u / --uefiСборка UEFI (release)
-ud / --uefi-debugСборка UEFI (debug)
-t / --tfaСборка TF-A (release)
-td / --tfa-debugСборка TF-A (debug)
--xenСборка образа EFI-приложения Xen
-b / --bootromСборка загрузочного образа SPI-Flash (BootROM)
-bl / --bootrom-linuxСборка загрузочного образа Baikal Embedded Linux (BEL)
-bp / --bootrom-paddingСборка загрузочного образа SPI-Flash (BootROM) под размер SPI Flash (32 МБ)
-h / --helpВывод справки
Примечание

В качестве <options> допускается использование нескольких параметров, например --debugconfig --xen

Скрипт поддерживает включение или отключение отдельных периферийных модулей или контроллеров в дереве устройств на этапе компиляции. Параметры-модификаторы необходимо использовать совместно с параметрами --dtb, --all, --all-debug.

В следующей таблице указаны параметры, которые обеспечивают модификацию дерева устройств для поддерживаемых плат.

Параметры модификации дерева устройств
Тип платыПараметрОписание
DBM--use-emmcАктивация eMMC (несовместимо с --use-sd)
--use-sdАктивация SD (несовместимо с --use-eMMC)
--use-hdaАктивация кодека HDA
--use-i2sАктивация кодека I2S
--use-xgbe-krkx4Активация XGb Ethernet 10GBASE-KR/10GBASE-KX4
DBM, MBM--use-lvdsАктивация LVDS
RDS-2S--nosmpСборка с конфигурацией non-SMP (для систем, не использующих CCIX)
Все платы--coresightАктивация поддержки CoreSight
--uefi-serial-dxe=<0|1>Отключение (0) или включение (1) поддержки последовательной консоли в UEFI

Пример команды со сборкой полного набора образов для платы DBM 1.0 с использованием LVDS и HDA-кодека:

<SDK_ROOT>/tools/build-boot-img.sh dbm10 -a --use-lvds --use-hda

Скрипт сохраняет созданные образы в директории <SDK_ROOT>/build, как описано в разделе Результат выполнения скрипта.

Скрипт сборки образа файловой системы

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

<SDK_ROOT>/tools/build-initrd-img.sh –h

Будет выведена основная информация о скрипте:

  • Шаблон команды сборки - build-initrd-img.sh <platform> <options> <-p>;

  • Список параметров сборки.

<platform> – платформа для сборки. На данный момент может использоваться только одно значение – baikal.

<options> – опции сборки.

<-p|--packages list> – установка дополнительных пакетов.

Описание поля <options>
ПараметрОписание
-c / --cleanОчистка директории хранения сборок
-s / --skipbuildПропуск сборки, создание образа из существующего каталога сборок
-m / --modulesСборка и установка модулей ядра
-d / --defaultУстановка пакетов по умолчанию. Вводится вместо параметра -p / --packages. Устанавливаемые пакеты: busybox, i2ctools, lmsensors, ethtool, dropbear, kexec-tools, pciutils
-l / --listВывод списка доступных пакетов
-h / --helpВывод справки
Описание поля <-p|--packages list>
ПараметрОписание
benchmarksНабор тестов производительности
busyboxКомандная оболочка Busybox со встроенным набором базовых утилит Linux
dropbearSSH-сервер и клиент
e2fsprogsНабор служебных утилит для проверки целостности файловых систем, поиска и исправления ошибок, изменения настроек, форматирования
ethtoolУтилита для проверки и настройки сетевых интерфейсов
fbtestУтилита для тестирования видеобуфера
fioУтилита для тестирования производительности жестких дисков
i2ctoolsНабор утилит для работы с I2C-шиной
iperfУтилиты измерения пропускной способности сетевых интерфейсов
iperf3
kexec-toolsУтилита, позволяющая загрузить новое ядро «поверх» запущенного
lmsensorsУтилита для мониторинга состояния аппаратного обеспечения
pciutilsНабор утилит для работы с PCI-устройствами
rt-linux-testНабор программ для тестирования и измерения различных компонентов поведения ядра в реальном времени, таких как задержка таймера, задержка сигнала и т.д.
spitoolsНабор утилит для работы с SPI-шиной

Результат выполнения скрипта

После успешного выполнения скрипта, в зависимости от типа платы, вызываемого скрипта и его опций, в директории <SDK_ROOT>/build могут быть созданы файлы, указанные в следующей таблице.

Файлы директории /build:
ФайлТип платыОписание
<board>.bl1.binВсе платыБинарный файл BL1, необходимый для записи в Boot flash
<board>.dtbВсе платыБинарный файл дерева устройств для выбранного типа платы
<board>.uefi.fdВсе платыОбраз EFI
<board>.fip.binВсе платыБинарный файл FIP, содержащий BL2, BL31 и BL33 (EFI)
<board>.flash0.binDBM
DBS
RDS-1S
Образ прошивки SCP_flash. Содержит только прошивку SCP.
RDS-2SОбраз прошивки SCP_flash. Содержит только прошивку SCP для SoC #0
<board>.flash1.binDBM
DBS
RDS-1S
Образ прошивки boot_flash. Содержит BL1, DTB (+TFW), FIP (+FAT)
RDS-2SОбраз прошивки SCP_flash. Содержит только прошивку SCP для SoC #1
<board>.flash.binRDS-2SОбраз прошивки boot_flash. Содержит BL1, DTB (+TFW), FIP (+FAT)
MBMПолный образ прошивки SPI_flash. Содержит прошивку SCP, BL1, DTB, FIP (+FAT)
<board>.ap.binMBMОбраз прошивки boot_flash. Содержит BL1, DTB, FIP (+FAT)
xen.efiВсе платыОбраз EFI-приложения гипервизора Xen
Примечание

Переменная <board> обозначает тип платы, для которой произведена сборка.

В директории <SDK_ROOT>/build/kernel будут созданы файлы и директории, указанные в следующей таблице.

Файлы директории /build/kernel
ФайлОписание
Image-#-baikal-arm64Образ ядра Linux
vmlinuz-#-baikal-arm64.efiСжатый образ ядра Linux, запакованный как EFI-приложение (только для SDK на базе ядра Linux 6.1, 6.6, 6.12)
config-#-baikal-arm64Файл конфигурации ядра Linux
System.map-#-baikal-arm64Файл System.map ядра Linux
initramfs.cpioНесжатый образ initramfs, который при необходимости может быть включён в ядро
initrd.img-#-baikal-arm64Cжатый образ initramfs для записи на внешний носитель
./lib/firmwareБинарные файлы с прошивками (firmware) для различного оборудования
./lib/modulesМодули ядра Linux
Примечание

В названии файлов # используется для обозначения версии ядра Linux.

Характеристики поддерживаемых плат

Следующая таблица содержит список поддерживаемых SDK типов плат и их краткие характеристики.

Cписок поддерживаемых плат
Тип платыТип памятиОбщий объем памяти, ГбМаксимальный объем памяти на канал, Гб
DBM 1.0DDR4-16006432
DBM 2.0DDR4-24006432
MBM 1.0 DDR4-24006432
MBM 2.0DDR4-24006432
DBSDDR4-3200768128
DBS-OVDDR4-3200768128
RDS-1SDDR4-3200768128
RDS-2SDDR4-32001 536128

История изменений

ВерсияДатаОписание
1.027.10.2022Начальная версия
2.006.02.2023Переход к единому обзорному документу для всех версий Baikal ARM64 SDK
2.124.08.2023В раздел Введение добавлен рисунок Компоненты Baikal ARM64 SDK
2.219.04.2024Добавлена информация про поддержку плат MBS-1S и MBS-2S. Обновлены разделы "Структура SDK", "Основной скрипт сборки", "Результаты выполнения скриптов". В разделе Работа с SDK обновлен список устанавливаемых библиотек
2.3.820.11.2025В связи с выходом версии SDK 2509 обновлены разделы "Основной скрипт сборки", "Скрипт сборки образа файловой системы", "Результаты выполнения скриптов"