Обзор Baikal ARM64 SDK
Введение
Baikal ARM64 SDK (Software Development Kit) предназначен для создания сборок образов и различных модулей (таких как образ файловой системы, UEFI образ, модули ядра VDec или ядра Linux с определенной конфигурацией), а так же файловых систем с дополнительными пакетами утилит для микропроцессоров BE-M1000 и BE-S1000.
Работа с SDK производится через терминал или командную строку ОС GNU/Linux.
Данный документ содержит описание процесса установки (раздел Установка SDK), краткое описание структуры распакованных файлов и папок (раздел Структура SDK), доступных после установки SDK, описание работы с SDK (раздел Работа с SDK), а также характеристики поддерживаемых плат со стороны Baikal ARM64 SDK.
Установка SDK
Установка производится на компьютер с операционной системой GNU/Linux.
Для установки SDK необходимо выполнить следующие действия:
Загрузить Baikal ARM64 SDK
УведомлениеК предоставляемым ресурсам применяются положения, описанные в пользовательском соглашении. Загружая любые материалы с сайта, вы соглашаетесь с данными условиями.
Выберите версию для загрузки- Актуальные версии
- Ядро Linux 6.6
- Ядро Linux 6.1
- Ядро Linux 5.4
- Все версии
Скачать Baikal ARM64 SDK 2409-6.6
Скачать Baikal ARM64 SDK 2409-6.1
Скачать Baikal ARM64 SDK 2409-5.4Скачать Baikal ARM64 SDK 2409-6.6
Скачать Baikal ARM64 SDK 2406-6.6
Скачать Baikal ARM64 SDK 2403-6.6Скачать Baikal ARM64 SDK 2409-6.1
Скачать Baikal ARM64 SDK 2406-6.1
Скачать Baikal ARM64 SDK 2403-6.1
Скачать Baikal ARM64 SDK 6.4
Скачать Baikal ARM64 SDK 6.3
Скачать Baikal ARM64 SDK 6.2
Скачать Baikal ARM64 SDK 6.1Скачать Baikal ARM64 SDK 2409-5.4
Скачать Baikal ARM64 SDK 2406-5.4
Скачать Baikal ARM64 SDK 2403-5.4
Скачать Baikal ARM64 SDK 5.12
Скачать Baikal ARM64 SDK 5.11
Скачать Baikal ARM64 SDK 5.10
Скачать Baikal ARM64 SDK 5.9
Скачать Baikal ARM64 SDK 5.8
Скачать Baikal ARM64 SDK 5.7
Скачать Baikal ARM64 SDK 5.6
Скачать Baikal ARM64 SDK 5.5
Скачать Baikal ARM64 SDK 5.4
Скачать Baikal ARM64 SDK 5.3
Скачать Baikal ARM64 SDK 5.2
Скачать Baikal ARM64 SDK 5.1Скачать Baikal ARM64 SDK 2409-6.6
Скачать Baikal ARM64 SDK 2409-6.1
Скачать Baikal ARM64 SDK 2409-5.4
Скачать Baikal ARM64 SDK 2406-6.6
Скачать Baikal ARM64 SDK 2406-6.1
Скачать Baikal ARM64 SDK 2406-5.4
Скачать Baikal ARM64 SDK 2403-6.6
Скачать Baikal ARM64 SDK 2403-6.1
Скачать Baikal ARM64 SDK 2403-5.4
Скачать Baikal ARM64 SDK 6.4
Скачать Baikal ARM64 SDK 5.12
Скачать Baikal ARM64 SDK 6.3
Скачать Baikal ARM64 SDK 5.11
Скачать Baikal ARM64 SDK 6.2
Скачать Baikal ARM64 SDK 6.1
Скачать Baikal ARM64 SDK 5.10
Скачать Baikal ARM64 SDK 5.9
Скачать Baikal ARM64 SDK 5.8
Скачать Baikal ARM64 SDK 5.7
Скачать Baikal ARM64 SDK 5.6
Скачать Baikal ARM64 SDK 5.5
Скачать Baikal ARM64 SDK 5.4
Скачать Baikal ARM64 SDK 5.3
Скачать Baikal ARM64 SDK 5.2
Скачать Baikal ARM64 SDK 5.1Распаковать архив
SDK-ARM64-YYMM-N.n.zip
в рабочую директорию, например/SDK
:unzip /<путь к архиву>/SDK-ARM64-YYMM-N.n.zip -d /SDK
ПримечаниеВ имени файлов:
YYMM-N.n
– номер версии SDKN.n
– номер версии ядра LinuxYYYYMMDD
– дата выпуска SDK
Перейти в рабочую директорию с распакованным SDK:
cd /SDK/SDK-ARM64-YYMM-N.n
Для разрешения исполнения установочного файла как программы выполнить следующую команду:
chmod +x ./baikal-arm64-YYMM-N.n-YYYYMMDD.run
Для запуска установки в терминале необходимо выполнить следующую команду:
./baikal-arm64-YYMM-N.n-YYYYMMDD.run
ПримечаниеПроцесс установки может занять несколько минут. Не закрывайте терминал до окончания процесса установки.
Распакованный Baikal ARM64 SDK будет находиться в директории под названием
baikal-arm64-YYMM-N.n-YYYYMMDD
(далее${SDK_ROOT}
) рядом с установщиком.ПримечаниеЗдесь и далее по тексту
${SDK_ROOT}
будет использоваться для обозначения полного пути к корневой директории Baikal ARM64 SDK.
Структура SDK
SDK содержит следующее дерево каталогов:
${SDK_ROOT}/
├─ build – директория для хранения сгенерированных образов
│ └─ kernel – директория хранения ядра и модулей ядра Linux
├─ prebuilts – эталонные загрузочные образы платы, собранные при релизе SDK
├─ src
│ ├─ acpica – исходные файлы ACPICA (для построения IASL для UEFI)
│ ├─ arm-tf – дерево исходных файлов доверенной прошивки ARM (TF-A)
│ ├─ initrd – дерево исходных файлов rootfs для Baikal Embedded Linux (BEL)
│ ├─ kernel – дерево исходных файлов ядра Linux
│ ├─ mali – исходные файлы драйвера и бинарные библиотени Arm® Mali™-T628 (только для SDK на базе ядра Linux 5.4)
│ ├─ opencsd – исходные файлы библиотеки CoreSight™ Trace Decode library
│ ├─ openocd – исходные файлы программы внутрисхемной отладки OpenOCD
│ ├─ simde – исходные файлы библиотеки SIMDe
│ ├─ uefi – исходное дерево загрузчика UEFI
│ ├─ vdec – исходные файлы драйвера видеодекодера и бинарные библиотеки
│ └─ xen – исходные файлы гипервизора Xen
├─ tools – скрипты автоматической сборки SDK
├─ utils – дополнительные утилиты (например, fs utils, dtc)
└─ xtools – ARM64 cross-toolchain с компилятором, GDB и glibc
Каталог prebuilts
содержит несколько важных бинарных образов, которые невозможно собрать из исходников:
Имя образа | Описание |
---|---|
bm1000-scp.bin | Прошивка SCP для BE-M1000 |
bs1000-ddr-trainfware.bin | Набор параметров для тренинга и инициализации DDR PHY |
bs1000-scp.bin | Прошивка SCP для BE-S1000 |
bs1000-scp-boot.bin | Прошивка SCP SoC #0 для двухсокетных плат на СнК BE-S1000 |
bs1000-scp-slave.bin | Прошивка SCP SoC #1 для двухсокетных плат на СнК BE-S1000 |
Работа с SDK
Для установки библиотек, необходимых для работы SDK, в терминале Linux нужно выполнить следующую команду:
sudo apt-get install acpica-tools autoconf automake bc bison \
build-essential clang flex fonts-freefont-ttf genext2fs \
imagemagick libarchive-zip-perl libfdt-dev libglib2.0-dev \
libncurses-dev libpixman-1-dev libssl-dev m4 mtools uuid-dev \
python xxd zlib1g-dev python-is-python3
Для создания и сборки образов в SDK используются два скрипта:
- Основной скрипт сборки –
build-boot-img.sh
- Скрипт сборки образа файловой системы –
build-initrd-img.sh
Основной скрипт сборки
Для получения краткой справки для основного скрипта необходимо запустить терминал и выполнить следующую команду:
${SDK_ROOT}/tools/build-boot-img.sh -h
На экран выводится основная информация скрипта: шаблон команды для сборки, список поддерживаемых плат, а так же список параметров запуска сборки скрипта. Шаблон команды для сборки выглядит следующим образом:
build-boot-img.sh <target> <options>
<target>
– тип платы, для которой будет происходить сборка<options>
– параметры, с которыми мы запускаем процесс сборки
Для параметра <target>
может использоваться одно из следующих возможных значений:
dbm10
– отладочная плата DBM 1.0 для BE-M1000dbm20
– отладочная плата DBM 2.0 для BE-M1000mbm10
– материнская плата MBM 1.0 для BE-M1000mbm20
– материнская плата MBM 2.0 для BE-M1000dbs
– отладочная плата DBS для BE-S1000dbs-ov
– отладочная плата DBS-OV для BE-S1000mbs-1s
- односокетная материнская плата MBS-1S для BE-S1000mbs-2s
- двухсокетная материнская плата MBS-2S для BE-S1000
В качестве <options>
можно использовать комбинацию следующих параметров:
Параметр | Описание |
---|---|
-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 |
-D или --vdec | Собрать модули ядра vdec (релиз) |
-u или --uefi | Собрать UEFI (релиз) |
-ud или --uefi-debug | Собрать UEFI (отладка) |
-t или --tfa | Собрать TF-A (релиз) |
-td или --tfa-debug | Собрать TF-A (отладка) |
--xen | Собрать образ EFI-приложения Xen |
-b или --bootrom | Собрать загрузочный SPI-flash образ (BootROM) |
-bl или --bootrom-linux | Собрать загрузочный SPI-flash образ (BootROM) с образом восстановления Linux |
-bp или --bootrom-padding | Собрать загрузочный SPI-flash образ (BootROM) под размер SPI flash (32 МБ) |
-h или --help | Отобразить справку |
Для сборки полного набора образов и других бинарных файлов в качестве <options>
можно использовать следующие комбинированные параметры:
-a
или--all
– применить все параметры, эквивалентно следующему списку параметров:--clean --defconfig --dtb --kernel --modules --initrd --vdec --uefi --tfa --bootrom
-ad
или--all-debug
– применить все параметры (отладка), эквивалентно следующему списку параметров:--clean --debugconfig --dtb --kernel --modules --initrd --vdec --uefi-debug --tfa-debug --bootrom
Скрипт поддерживает опциональные модификаторы дерева устройств для разных типов плат (влияют на использование параметров --dtb
, --all
и --all-debug
).
В следующей таблице указаны параметры, которые обеспечивают модификацию дерева устройств для поддерживаемых плат.
Поддерживаемый тип платы | Параметр | Описание |
---|---|---|
DBM | --use-emmc | активировать eMMC (несовместимо с --use-sd ) |
DBM | --use-sd | активировать SD (несовместимо с --use-eMMC ) |
DBM | --use-hda | активировать кодек HDA |
DBM | --use-i2s | активировать кодек I2S |
DBM, MBM | --use-lvds | активировать LVDS |
DBM | --use-xgbe-krkx4 | активировать XGb Ethernet 10GBASE-KR/10GBASE-KX4 |
Все платы | --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 и выполнить следующую команду:
${SDK_ROOT}/tools/build-initrd-img.sh -h
Данная команда выводит на экран краткую справку с шаблоном команды и параметрами запуска. Шаблон команды для сборки выглядит следующим образом:
build-initrd-img.sh <platform> <options> <-p | --packages list>
<platform>
– платформа для сборки (необязательное поле)<-p | --packages list>
– параметр запуска для установки дополнительных пакетов
Для параметра <platform>
может использоваться одно единственное значение:
baikal
В качестве <options>
можно использовать комбинацию следующих параметров:
Параметр | Описание |
---|---|
-c или --clean | Очистить временную директорию хранения сборок |
-s или --skipbuild | Пропустить сборку, создать образ из существующего каталога сборок |
-m или --modules | Собрать и установить модули ядра |
-d или --default | Собрать и установить пакеты по умолчанию (см. ниже) |
-p или --packages | Установить дополнительные пакеты (перечисляются в виде списка после параметров в командной строке) |
-l или --list | Вывести список доступных пакетов |
-h или --help | Вывести справку |
В параметре <-p | --packages list>
, через пробел, необходимо указать список дополнительных пакетов, например:
${SDK_ROOT}/tools/build-initrd-img.sh –p benchmarks i2ctools
Скрипт поддерживает установку следующих пакетов:
Имя пакета | Описание |
---|---|
benchmarks | Набор тестов производительности |
busybox | Набор Unix-утилит командной строки, предназначенных для использования во встраиваемых системах |
dropbear | Небольшой SSH-сервер и клиент |
e2fsprogs | Набор служебных утилит для проверки целостности файловых систем, поиска и исправления ошибок, изменения настроек, форматирования |
ethtool | Утилита для проверки и настройки сетевых интерфейсов |
fbtest | Утилита для тестирования frame buffer |
fio | Утилита для тестирования производительности жестких дисков |
i2ctools | Набор утилит для работы с I2C-шиной |
iperf , iperf3 | Утилита измерения пропускной способности сетевых интерфейсов |
kexec-tools | Утилита, позволяющая загрузить новое ядро «поверх» запущенного |
lmsensors | Утилита для мониторинга состояния аппаратного обеспечения |
pciutils | Набор программ для определения доступных в системе PCI-устройств. Позволяют проверить их состояния и выполнить чтение/изменение конфигурационных регистров |
spitools | Набор утилит для работы с SPI-шиной |
В случае если <-p | --packages list>
не указан, но указан параметр –d
, будет установлены следующие пакеты: busybox
, i2ctools
, lmsensors
, ethtool
, dropbear
, kexec-tools
и pciutils
.
Результаты выполнения скриптов
После успешного выполнения скрипта, в каталоге ${SDK_ROOT}/build
будут расположены следующие файлы:
Файл | Тип платы | Описание |
---|---|---|
${BRD}.bl1.bin | Все платы | Бинарный файл BL1, необходимый для записи в boot_flash |
${BRD}.dtb | Все платы | Бинарный файл дерева устройств для выбранного типа платы |
${BRD}.efi.fd | Все платы | Образ прошивки EFI |
${BRD}.fip.bin | Все платы | Бинарный файл FIP, содержащий BL2, BL31 и BL33 (EFI) |
${BRD}.flash0.bin | DBM DBS MBS-1S | Образ прошивки SCP_flash Содержит только прошивку SCP |
MBS-2S | Образ прошивки SCP_flash Содержит только прошивку SCP для SoC #0 | |
${BRD}.flash1.bin | DBM DBS MBS-1S | Образ прошивки boot_flash Содержит BL1, DTB (+TFW), FIP (+FAT) |
MBS-2S | Образ прошивки SCP_flash Содержит только прошивку SCP для SoC #1 | |
${BRD}.flash.bin | MBS-2S | Образ прошивки boot_flash Содержит BL1, DTB (+TFW), FIP (+FAT) |
MBM | Полный образ прошивки SPI_flash Содержит прошивку SCP, BL1, DTB, FIP (+FAT) | |
${BRD}.ap.bin | MBM | Образ прошивки boot_flash Содержит BL1, DTB, FIP (+FAT) |
xen.efi | Все платы | Образ EFI-приложения гипервизора Xen |
В названии файлов ${BRD}
– это dbm10
, dbm20
, mbm10
, mbm20
, dbs
, dbs-ov
, mbs-1s
или mbs-2s
для плат DBM 1.0, DBM 2.0, MBM 1.0, MBM 2.0, DBS, DBS-OV, MBS-1S и MBS-2S соответственно.
При этом в каталоге ${SDK_ROOT}/build/kernel
будут расположены следующие файлы:
Файл | Описание |
---|---|
Image-#-baikal-arm64 | Образ ядра Linux |
vmlinuz-#-baikal-arm64.efi | Сжатый образ ядра Linux, запакованный как EFI-приложение (только для SDK на базе ядра Linux 6.1 или 6.6) |
config-#-baikal-arm64 | Файл конфигурации ядра Linux |
System.map-#-baikal-arm64 | Файл System.map ядра Linux |
initramfs.cpio | Несжатый образ initramfs, который при необходимости может быть включён в ядро |
initrd.img-#-baikal-arm64 | Cжатый образ initramfs для записи на внешний носитель |
modules | Модули ядра Linux |
В названии файлов #
используется для обозначения версии ядра Linux (например 6.1.63).
Характеристики поддерживаемых плат
Следующая таблица содержит список поддерживаемых со стороны Baikal ARM64 SDK типов плат и их краткие характеристики.
Тип платы | Тип памяти | Общий объем памяти, ГБ | Максимальный объем памяти на канал, ГБ |
---|---|---|---|
DBM 1.0 | DDR4-1600 | 64 | 32 |
DBM 2.0 | DDR4-2400 | 64 | 32 |
MBM 1.0 | DDR4-2400 | 64 | 32 |
MBM 2.0 | DDR4-2400 | 64 | 32 |
DBS | DDR4-3200 | 768 | 128 |
DBS-OV | DDR4-3200 | 768 | 128 |
MBS-1S | DDR4-3200 | 768 | 128 |
MBS-2S | DDR4-3200 | 1 536 | 128 |