Обзор 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.1
- Ядро Linux 5.4
- Все версии
Скачать 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 6.3
Скачать Baikal ARM64 SDK 5.11
Скачать Baikal ARM64 SDK 6.2
Скачать Baikal ARM64 SDK 5.10
Скачать Baikal ARM64 SDK 6.1
Скачать 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-N.n.zip
в рабочую директорию, например/SDK
:unzip /<путь к архиву>/SDK-ARM64-N.n.zip -d /SDK
Найти файл под названием
baikal-arm64-N.n-YYYYMMDD.run
в распакованной
директорииSDK-ARM64-N.n
Примечание:В имени файлов:
N.n
– номер версии SDKYYYYMMDD
– дата выпуска SDK
Перейти в рабочую директорию:
cd /SDK
Для разрешения исполнения установочного файла как программы открыть в терминале GNU/Linux директорию SDK-ARM64-N.n и выполнить следующую команду:
chmod +x ./baikal-arm64-N.n-YYYYMMDD.run
Для запуска установки в терминале необходимо выполнить следующую команду:
./baikal-arm64-N.n-YYYYMMDD.run
ПримечаниеПроцесс установки может занять несколько минут. Не закрывайте терминал до окончания процесса установки.
Распакованный Baikal ARM64 SDK будет находиться в директории под названием
baikal-arm64-N.n-YYYYMMDD
(далее${SDK_ROOT}
) рядом с установщиком.ПримечаниеЗдесь и далее по тексту
${SDK_ROOT}
будет использоваться для обозначения полного пути к корневой директории Baikal ARM64 SDK.
Структура SDK
SDK содержит следующее дерево каталогов:
build
– временная директория для хранения сборок, создается автоматически после первой сборкиimg
– директория для хранения образов, сгенерированных пользователем (создается автоматически после первой сборки)prebuilts
– эталонные загрузочные образы платы, собранные при формировании релиза SDKsrc
– исходные файлы для компонентов SDK:acpica
– исходные файлы ACPICA1(необходимы для построения IASL2 для UEFI3)arm-tf
– дерево исходных файлов доверенной прошивки ARM (TF-A)initrd
– дерево исходных файлов rootfs для Baikal Embedded Linux (BEL)kernel
– дерево исходных файлов ядра Linuxmali
– исходные файлы драйвера и бинарные библиотеки Arm® Mali™-T628openocd
– исходные файлы программы внутрисхемной отладки OpenOCDuefi
– исходное дерево загрузчика UEFIvdec
– исходные файлы драйвера видеодекодера и бинарные библиотеки
tools
– скрипты автоматической сборки SDKutils
– дополнительные утилиты (например, fs utils, dtc)xtools
– кросс-инструментальная цепочка ARM64 с компилятором, GDB и glibc
Каталог prebuilts содержит два важных образа прошивки SCP4, которые невозможно собрать из исходников:
bm1000-scp.bin
и bs1000-scp.bin
для микропроцессоров BE-M1000 и 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 python \
uuid-dev xxd zlib1g-dev
Для создания и сборки образов в 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-S1000
В качестве <options>
можно использовать комбинацию следующих параметров:
-c или --clean | Очистить предыдущие сборки (ядро Linux, UEFI и TF-A) |
-d или --defconfig | Собрать файл конфигурации ядра (.config) из defconfig-файла |
-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 (отладка) |
-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 --defconfig --dtb --kernel --modules --initrd --vdec --uefi-debug --tfa-debug --bootrom
Скрипт сохраняет созданные образы в директории ${SDK_ROOT}/img
, как описано в разделе Результаты выполнения скриптов.
Так же в SDK присутствует возможность собрать ядро Linux с включенными параметрами отладки. По умолчанию, конфигурация ядра оптимизирована для повышения производительности. Включение параметров отладки может привести к незначительному снижению производительности.
Чтобы собрать ядро Linux с включенными параметрами отладки, необходимо в терминале выполнить следующие команды:
Скопировать содержимое файла
baikal_defconfig_debug
в файлbaikal_defconfig
с предварительным сохранением резервного backup файла:cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{,_backup}
cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{_debug,}
Собрать ядро и модули ядра Linux с текущей конфигурацией, например для платы
MBM 2.0
:${SDK_ROOT}/tools/build-boot-img.sh mbm20 -d -k –m
Чтобы собрать ядро Linux с отключенными параметрами отладки, необходимо в терминале выполнить следующие команды:
Восстановить содержимое файла
baikal_defconfig
из backup файла:cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{_backup,}
Собрать ядро и модули ядра Linux с текущей конфигурацией, например для платы
MBM 2.0
:${SDK_ROOT}/tools/build-boot-img.sh mbm20 -d -k –m
ПримечаниеТак же в основном скрипте сборки
build-boot-img.sh
присутствуют команды, относящиеся к эмулятору QEMU. Для работы с QEMU необходим пакет расширения соответствующей версии. Установка, настройка и принцип работы с эмулятором QEMU описаны в документе QEMU эмулятор для микропроцессоров Байкал-M и Байкал-S к SDK.
Скрипт сборки образа файловой системы
Для получения краткой справки по данному скрипту, необходимо запустить терминал в директории 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}/img
будут расположены следующие файлы:
baikal-arm64.Image | Образ ядра Linux |
baikal-arm64.Image.gz | Сжатый образ ядра Linux |
baikal-arm64.System.map | Файл System.map ядра Linux |
${BRD_NAME}.bl1.bin | Бинарный файл, необходимый для записи в boot_flash |
${BRD_NAME}.dtb | BLOB5 объект дерева устройств для выбранного типа платы |
${BRD_NAME}.efi.fd | Образ прошивки EFI6 |
${BRD_NAME}.fat.img | Образ FAT с Baikal Embedded Linux. Для создания такого образа необходимо собранное ядро и файловая система, после чего в терминале нужно выполнить следующую команду: ${SDK_ROOT}/tools/build-boot-img.sh <target> -bl |
${BRD_NAME}.fip.bin | FIP7 образ (bls и EFI) |
${BRD_NAME}.flash0.bin | Только для плат DBM и DBS: образ system_flash (для DBM – прошивка SCP и BL1, для DBS – только SCP) |
${BRD_NAME}.flash.img | Только для плат DBM и DBS: образ boot_flash (DT, bls и EFI) |
${BRD_NAME}.flash.img | Только для плат MBM 1.0 и MBM 2.0: неполный флэш-образ (DT, bls и EFI) |
${BRD_NAME}.full.img | Только для плат MBM 1.0 и MBM 2.0: полный флэш-образ (Прошивка SCP, DT, BLs и EFI) |
initrd.gz | Образ файловой системы Baikal Embedded Linux |
img_mem.ko , vxd.ko | Модуль ядра Linux для поддержки VDec |
В названии файлов ${BRD_NAME}
– это dbm10
, dbm20
, mbm10
, mbm20
, dbs
или dbs-ov
для плат DBM 1.0, DBM 2.0, MBM 1.0, MBM 2.0, DBS и DBS-OV соответственно.
Характеристики поддерживаемых плат
Следующая таблица содержит список поддерживаемых со стороны Baikal ARM64 SDK типов плат и их краткие характеристики.
Таблица 4-1 Характеристики поддерживаемых плат
Тип платы | Тип памяти | Общий объем памяти, ГБ | Максимальный объем памяти на канал, ГБ |
---|---|---|---|
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 |
История изменений
Версия | Дата | Описание |
---|---|---|
1.0 | 27.10.2022 | Начальная версия |
2.0 | 06.02.2023 | Переход к единому обзорному документу для всех версий Baikal ARM64 SDK |
2.1 | 24.08.2023 | В раздел Введение добавлен рисунок Компоненты Baikal ARM64 SDK |