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

Обзор Baikal MIPS SDK

⤓ Скачать документ

Введение

SDK (Software Development Kit) MIPS предназначен для сборок образов (таких как образ файловой системы, образ загрузчика U-Boot, образ ядра Linux и образ загрузочной SPI-flash микропроцессора BE-T1000), модулей ядра Linux, а так же корневых файловых систем с дополнительными пакетами утилит для микропроцессоров BE-T1000.

Baikal MIPS SDK содержит кросс-компилятор языков C и C++, редактор связей, отладчик, утилиты и системные библиотеки, необходимые для разработки системного и прикладного ПО, исполняемого на микропроцессоре BE-Т1000.

В состав SDK входит дистрибутив BEL (Baikal Embedded Linux), включающий в себя оболочку Busybox и минимальный комплект системных утилит командной строки.

Baikal MIPS SDK устанавливается на компьютер с архитектурой x86-64 под управлением операционной системы GNU/Linux. Собранное при помощи средств SDK системное и прикладное программное обеспечение может быть запущено на микропроцессоре BE-T1000.

Установка Baikal MIPS SDK

Установка производится на компьютер с операционной системой GNU/Linux. Для установки SDK необходимо выполнить следующие действия:

  1. Загрузить Baikal MIPS SDK

    Уведомление

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

    предупреждение

    Baikal MIPS SDK использующий ядро Linux 5.4 больше не поддерживается. Используйте версию основанную на ядре Linux 6.1.

  2. Распаковать архив SDK-MIPS-N.n.zip в рабочую директорию, например /SDK:

    unzip /<путь к архиву>/SDK-MIPS-N.n.zip -d /SDK
  3. Найти файл с именем baikal-mips-N.n-YYYYMMDD.run в директории SDK-MIPS-N.n

    Примечание

    В имени файлов:
    N.n – номер версии SDK
    YYYYMMDD – дата выпуска SDK

  4. Перейти в рабочую директорию:

    cd /SDK
  5. Для разрешения исполнения установочного файла как программы выполнить следующую команду:

    chmod +x ./baikal-mips-N.n-YYYYMMDD.run
  6. Для запуска установки в терминале необходимо выполнить следующую команду:

    ./baikal-mips-N.n-YYYYMMDD.run
    Примечание

    Процесс установки может занять несколько минут. Не закрывайте терминал до окончания процесса установки. Распакованный Baikal MIPS SDK будет находиться в директории под названием baikal-mips-N.n-YYYYMMDD
    (далее ${SDK_ROOT}) рядом с установщиком.

Примечание

Здесь и далее по тексту ${SDK_ROOT} будет использоваться для обозначения полного пути к корневой директории Baikal MIPS SDK.

Результатом распаковки и установки Baikal MIPS SDK будет следующая структура директорий:

  • bin – Бинарные исполняемые файлы (утилиты для сборки и прошивки)
  • doc – Документация
  • img – Образы прошивки загрузочной SPI-flash, загрузчика U-Boot, ядра Linux и корневых файловых систем
  • prebuilts – Загрузочные образы, собранные при формировании релиза SDK
  • src – Исходные файлы для компонентов SDK:
    • bootrom – Файлы исходных кодов для формирования образа загрузочной SPI-flash микропроцессора
    • dfu-util – Исходные коды утилиты DFU для прошивки платы
    • examples – Файлы исходных кодов примеров программ, запускаемых на микроконтроллере
    • genext2fs – Утилита для создания файловой системы ext2 без прав суперпользователя
    • initrd – Файлы исходных кодов программ, устанавливаемых в минималистичный дистрибутив ОС GNU/Linux, а так же набор конфигурационных файлов и загрузочных скриптов данного дистрибутива
    • kernel – Файлы исходных кодов ядра Linux
    • openocd – Файлы исходных кодов программы внутрисхемной отладки OpenOCD
    • u-boot – Файлы исходных кодов загрузчика U-Boot
    • ramfs – Исходные файлы корневой файловой системы начальной загрузки
  • usr – Основные скрипты SDK, дополнительные утилиты и исходные тексты:
    • spdgen – Исходный код утилиты для генерации прошивки SPD (Serial Presence Detect)
    • mips_tips – Скрипты для сборки оптимизированных для MIPS мультимедиа библиотек (ffmpeg, libpng)
    • oprofile – Профилировщик программ, запускаемых на микропроцессоре BE-T1000
    • scripts – Скрипты автоматической сборки и прошивки образов системы
    • x-tools – Средства кросс-компиляции
    • oe_layer_baikal – Файлы исходных кодов системы сборки OpenEmbedded/Yocto

Работа с Baikal MIPS SDK

Инструментарий Baikal MIPS SDK состоит из средств кросс-компиляции для архитектуры MIPS, средств отладки и скриптов, предназначенных для автоматической сборки системного и прикладного ПО. Программное обеспечение включает в себя встроенный загрузчик U-Boot, ядро Linux, минималистичное системное окружение busybox, набор файлов для формирования корневых файловых систем, а также несколько полезных утилит, устанавливаемых в образ минималистичной ОС GNU/Linux.

Инструментарий для работы с Baikal MIPS SDK состоит из средств кросс-компиляции, исходных кодов и скриптов, назначение которых описано ниже.

Средства кросс-компиляции (компилятор, компоновщик и т.д.) находятся в директории ${SDK_ROOT}/usr/x-tools и используются для компиляции программ для архитектуры MIPS.

Исходные коды включают загрузчик U-Boot, ядро Linux, исходный код корневой файловой системы и другие исходные коды для различных утилит и программ поддержки платы.

Cкрипты Baikal MIPS SDK и их назначение

После установки Baikal MIPS SDK директория ${SDK_ROOT}/usr/scripts содержит следующие скрипты:

build-boot-img.shОсновой скрипт сборки. Скрипт сборки загрузочного образа микропроцессора, включающего загрузчик, ядро Linux и корневую файловую систему.
build-initrd-img.shСкрипт сборки образа корневой файловой системы ОС BEL с возможностью выбора дополнительных устанавливаемых пакетов.
build-ramfs-img.shСкрипт для сборки корневой файловой системы начальной загрузки основной ОС.
flash-tool.shСкрипт для прошивки загрузочной SPI-flash памяти микропроцессора платы BFK 3.1 с помощью утилиты dfu-util (запускается с правами суперпользователя).
openocd-server.shВспомогательный скрипт для запуска сервера OpenOCD (запускается с правами суперпользователя).
gen_initramfs_list.shСкрипт создания CPIO образа файловой системы (не предназначен для прямого использования пользователем).
baikal-oe-initВспомогательный скрипт загрузки файлов исходных кодов системы OpenEmbedded (не предназначен для прямого использования пользователем).
environment.shВспомогательный скрипт, содержащий набор общих функций сборочных скриптов (не предназначен для прямого использования пользователем).

Использование основного скрипта сборки

Данный скрипт используется для создания загрузочной SPI-flash памяти, включающего загрузчик, ядро Linux и корневую файловую систему.

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

${SDK_ROOT}/usr/scripts/build-boot-img.sh -h

На экран выводится основная информация скрипта: шаблон команды для сборки, список поддерживаемых плат, а так же список параметров запуска сборки скрипта. Шаблон команды для сборки выглядит следующим образом:

build-boot-img.sh <target> <options>

где используются следующие обозначения:

  • <target> – тип платы, для которой будет происходить сборка
  • <options> – параметры, с которыми мы запускаем процесс сборки

Для параметра <target> может использоваться одно единственное значение:

  • bfk3 – плата BFK 3.1

В качестве <options> можно использовать комбинацию следующих параметров:

-c или --cleanОчистить предыдущие сборки (выполняется перед сборкой ядра)
-k или --kernelСобрать ядро Linux с текущей конфигурацией (.config)
-d или --defconfigСобрать файл конфигурации ядра (.config) из defconfig-файла
-m или --modulesСобрать модули ядра с текущей конфигурацией (.config)
-u или --ubootСобрать загрузчик U-Boot
-b или --bootromСобрать загрузочный SPI-flash образ (формат компрессии – GZIP)
-l или --bootrom-lzmaСобрать загрузочный SPI-flash образ (формат компрессии – LZMA)
-i или --initrdСобрать образ корневой файловой системы минималистичной ОС GNU/Linux
-r или --initramfsСобрать образ корневой файловой системы начальной загрузки ОС
-K или --kernel-oeСобрать ядро Linux, используя систему сборки OpenEmbedded
-U или --uboot-oeСобрать загрузчик U-Boot, используя систему сборки OpenEmbedded
-L или --bootrom-lzma-oeСобрать загрузочный SPI-flash образ, используя систему сборки OpenEmbedded (формат компрессии – LZMA)
-h или --helpОтобразить справку

Для создания полного набора образов в качестве <options> можно использовать следующие комбинированные параметры:

  • -a или --all – применить все параметры, эквивалентно следующему списку параметров:
    --clean --defconfig --kernel --modules --initrd --initramfs --uboot --bootrom
  • -A или --all-oe – применить все параметры системы сборки OpenEmbedded, эквивалентно следующему списку параметров: --kernel-oe --uboot-oe --bootrom-lzma-oe

Скрипт сохраняет созданные образы в директории ${SDK_ROOT}/img, как описано в разделе Список образов Baikal MIPS SDK.

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

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

${SDK_ROOT}/usr/scripts/build-initrd-img.sh -h

На экран выводится краткая справка с шаблоном команды и параметрами запуска. Шаблон команды для сборки выглядит следующим образом: build-initrd-img.sh <platform> <options> <-p | --packages list> где используются следующие обозначения:

  • <platform> – платформа для сборки (необязательное поле)
  • <options> – параметры запуска сборки файловой системы
  • <-p | --packages list> – параметр запуска для установки дополнительных пакетов

Для параметра <platform> может использоваться одно единственное значение:

  • baikal

В качестве <options> можно использовать комбинацию следующих параметров:

-c или --cleanОчистить временную директорию хранения сборок
-s или --skipbuildПропустить сборку, создать образ из существующего каталога сборок
-m или --modulesСобрать и установить модули ядра
-d или --defaultСобрать и установить пакеты по умолчанию (см. ниже)
-p или --packagesУстановить дополнительные пакеты (перечисляются в виде списка после параметров в командной строке)
-l или --listВывести список доступных пакетов
-h или --helpВывести справку

Параметр <-p | --packages list> принимает список имен утилит, разделенных пробелом, предполагаемых к установке в загрузочный образ ОС GNU/Linux, например:

${SDK_ROOT}/usr/scripts/build-initrd-img.sh –p benchmarks i2ctools

Скрипт поддерживает установку следующих пакетов:

benchmarksНабор тестов производительности
busyboxНабор Unix-утилит командной строки, предназначенных для использования во встраиваемых системах
dropbearНебольшой SSH-сервер и клиент
e2fsprogsНабор служебных утилит для проверки целостности, поиска и исправления ошибок, изменения настроек, форматирования файловых систем
ethtoolУтилита для проверки и настройки сетевых интерфейсов
fbtestУтилита для тестирования frame buffer
fioУтилита для тестирования производительности жестких дисков
i2ctoolsНабор утилит для работы с I2C-шиной
iperf3, iperfУтилиты измерения пропускной способности сетевых интерфейсов
kexec-toolsУтилита, позволяющая загрузить новое ядро «поверх» запущенного
lmsensorsУтилита для мониторинга состояния аппаратного обеспечения
pciutilsНабор программ для определения доступных в системе PCI-устройств. Позволяют проверить их состояния и выполнить чтение/изменение конфигурационных регистров
spitoolsНабор утилит для работы с SPI-шиной
straceУтилита для отслеживания системных вызовов и полученных сигналов запущенной программы

В случае если <-p | --packages list> не указан, но указан параметр –d, будет установлены следующие пакеты: busybox, i2ctools, lmsensors, ethtool, dropbear, kexec-tools и pciutils.

Сборка образа корневой файловой системы начальной загрузки

Скрипт предназначен для сборки образа корневой файловой системы, используемой для запуска основой ОС. Образ начальной загрузки выполняется первым сразу после завершения процесса старта ядра и обычно предполагает установку драйверов, необходимых для работы с устройствами, содержащими файловую систему основной ОС. Для получения краткой справки по данному скрипту необходимо выполнить следующую команду:

${SDK_ROOT}/usr/scripts/build-ramfs-img.sh -h

На экран выводится краткая справка с шаблоном команды и параметрами запуска. Шаблон команды. Шаблон команды для сборки выглядит следующим образом: build-ramfs-img.sh <options> где используются следующие обозначения:

  • <options> – параметры запуска сборки файловой системы В качестве <options> можно использовать комбинацию следующих параметров:
-b или --buildСоздать образ
-c или --cleanОчистить временную директорию хранения сборок
-l или --listСгенерировать список файлов корневой файлов системы (.spec)
-k или --kmodulesУстановить модули ядра, используя существующие из директории ${SDK_ROOT}/_build/kernel/modules
-m или --modulesСобрать и установить модули
-h или --helpВывести справку

Прошивка платы BFK 3.1

Скрипт flash-tool.sh предназначен для прошивки загрузочной SPI-flash платы BFK 3.1 при помощи утилиты dfu-util. Для получения краткой справки необходимо выполнить следующую команду:

${SDK_ROOT}/usr/scripts/flash-tool.sh -h

На экран выводится краткая справка с шаблоном команды. Шаблон команды прошивки выглядит следующим образом:

flash-tool.sh <image>

В качестве <image> используется имя файла образа, при необходимости включающее путь до него.

Примечание

Процесс прошивки необходимо запускать с правами пользовательских групп plugdev и dialout либо с правами суперпользователя.

Запуск сервера OpenOCD

Вспомогательный скрипт openocd-server.sh позволяет запустить сервер OpenOCD. Для получения краткой справки по данному скрипту выполнить следующую команду:

${SDK_ROOT}/usr/scripts/openocd-server.sh -h

На экран выводится краткая справка с шаблоном команды. Шаблон выглядит следующим образом:

openocd-server.sh <option>

В качестве <options> можно использовать следующие параметры:

  • start – запустить сервер OpenOCD
  • stop – остановить сервер OpenOCD
Примечание

Сервер OpenOCD необходимо запускать с правами пользовательских групп plugdev и dialout либо с правами суперпользователя.

После запуска сервер OpenOCD доступен по следующим адресам:
localhost:3333 – из отладчика gdb
localhost:4444 – из консоли telnet

Запуск скриптов без прав суперпользователя

В состав Baikal MIPS SDK входят скрипты, работа с которыми требует дополнительных прав доступа. Чтобы избежать запуска скриптов от имени суперпользователя, можно однократно выполнить следующие действия:

  1. Добавить пользователя в группы plugdev и dialout:
sudo useradd -G plugdev $(whoami)
sudo useradd -G dialout $(whoami)
  1. Создать файл /etc/udev/rules.d/99-baikal.rules и занести туда следующий текст:
# Olimex ARM-USB-OCD-H
ACTION=="add|change", ATTRS{idVendor}=="15ba",
ATTRS{idProduct}=="002b", MODE="664", GROUP="plugdev"
# BFK 3.1 board
ACTION=="add|change", ATTRS{idVendor}=="0483",
ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev"
  1. Перезапустить службу udev:
sudo systemctl restart udev

Список образов Baikal MIPS SDK

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

bfk3.dtbБинарный образ дерева устройств микропроцессора и платы BFK 3.1
bfk3.romОбраз прошивки загрузочной SPI-flash платы BFK 3.1
bfk3.System.mapФайл System.map ядра Linux
bfk3.u-boot.binБинарный образ загрузчика U-Boot
bfk3.u-boot.bin.gzСжатый бинарный образ загрузчика U-Boot
bfk3.u-boot.srecОбраз загрузчика U-Boot в S-record формате
bfk3.vmlinux.binБинарный образ ядра Linux
bfk3.vmlinux.bin.gzБинарный образ ядра Linux, сжатый при помощи алгоритма Deflate
bfk3.vmlinux.bin.lzmaБинарный образ ядра Linux, сжатый при помощи алгоритма LZMA
bfk3.vmlinuz.binСжатый образ ядра Linux со встроенным распаковщиком
initramfs.gzСжатый образ корневой файловой системы начальной загрузки
initramfs.lzmaОбраз корневой файловой системы начальной загрузки, сжатый при помощи алгоритма LZMA
initrd.gzСжатый образ корневой файловой системы минималистичного дистрибутива ОС GNU/Linux
initrd.lzmaСжатый образ корневой файловой системы минималистичного дистрибутива ОС GNU/Linux, сжатый при помощи алгоритма LZMA
uImageЗагрузочный образ ядра Linux
uInitramfsЗагрузочный образ корневой файловой системы начальной загрузки
uInitrdЗагрузочный образ корневой файловой системы дистрибутива ОС BEL
uMultiКонсолидированный образ загрузчика системы в U-Boot, включающий в себя ядро Linux, дерево устройств платы BFK 3.1, образы корневых файловых систем и две конфигурации загрузки: в дистрибутив ОС BEL, либо в любой другой при помощи системы начальной загрузки

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

ВерсияДатаОписание
1.028.10.2022Начальная версия