Создание дистрибутива
Первые действия
Сборка образов и инструментальных средств выполняется из исходных кодов с использованием системы сборки Buildroot. Архив исходных кодов содержит все нужные компоненты для сборки дистрибутива Buildroot с поставляемыми файлами конфигурации. Для получения образов необходимо загрузить архив tar с исходными файлами и распаковать его:
$ tar -xvzf multicore-mips-src.tar.gz
Перейти в распакованную папку:
$ cd multicore_multicore-mips-src_repo
Описание компонентов
Основные компоненты дистрибутива:
buildroot — исходный код Buildroot. Базовая версия Buildroot 2019.02 (Linux 4.14)
Dockerfile.centos7 — файл конфигурации Docker-образа для среды сборки дистрибутива для CentOS 7
Dockerfile.centos8stream — файл конфигурации Docker-образа для среды сборки дистрибутива для CentOS 8
docker-build.sh — скрипт сборки Docker-образа и сборки дистрибутива в контейнере Docker
external-common — внешнее дерево конфигурации для всех поддерживаемых платформ
external-(chip_name) — внешнее дерево файлов конфигураций и пакетов для конкретной платформы
Makefile — Makefile cкрипт сборки Buildroot.
Дерево исходных кодов дистрибутива:
├── buildroot
│ ├── arch
│ ├── board
│ ├── boot
│ ├── CHANGES
│ ├── Config.in
│ ├── Config.in.legacy
│ ├── configs
│ ├── COPYING
│ ├── DEVELOPERS
│ ├── dl
│ ├── docs
│ ├── fs
│ ├── linux
│ ├── Makefile
│ ├── Makefile.legacy
│ ├── output
│ ├── package
│ ├── README
│ ├── support
│ ├── system
│ ├── toolchain
│ └── utils
├── docker-build.sh
├── Dockerfile.centos7
├── Dockerfile.centos8stream
├── external-common
│ ├── Config.in
│ ├── configs
│ ├── external.desc
│ ├── external.mk
│ ├── package
│ └── toolchain
├── external-mc30sf6
│ ├── board
│ ├── Config.in
│ ├── configs
│ ├── external.desc
│ └── external.mk
├── external-mct04
│ ├── board
│ ├── Config.in
│ ├── configs
│ ├── external.desc
│ └── external.mk
├── external-mct06
│ ├── board
│ ├── Config.in
│ ├── configs
│ ├── external.desc
│ └── external.mk
├── Makefile
Сборка и настройка дистрибутива на локальном ПК (Native Buildroot build)
Конфигурация Buildroot
Для создания образов в ОС должны быть установлены некоторые пакеты. Они могут быть взяты из соответствующего файла Dockerfile.{centos8stream, centos7 и т.д.}. Файлы Docker расположены в корневом каталоге репозитория.
Конфигурация Buildroot содержится в файлах:
external-mc30sf6/configs/*_defconfig — конфигурационные файлы с настройками для MC-30SF6 по умолчанию ( модуль МС-30SF6 )
external-mct04/configs/*_defconfig — конфигурационные файлы с настройками для MCT-04 по умолчанию ( модуль MCT-04EM-3U )
external-mct06/configs/*_defconfig — конфигурационные файлы с настройками для MCT-06 по умолчанию ( модуль MCT-06EM-6U )
external-common/configs/*_defconfig — общие конфигурационные файлы.
Настройка и сборка Buildroot
В качестве примера приведена настройка Buildroot для выбранной платы MCT-06EM-6U:
$ make mct_06_mct_06em_6u_defconfig
$ make
Созданные образы доступны в каталоге buildroot/output/images
.
Изменение конфигурации платы
В процессе сборки Buildroot можно использовать любые стандартные команды
Buildroot, такие как make source
, make <package>-reconfigure
,
make <package>-menuconfig
или make menuconfig
.
Подробнее см. The Buildroot user manual.
Сборка и настройка дистрибутива на основе Docker
Настройка среды Docker
Следует убедиться, что текущий пользователь находится в группе Docker, а также у клиента Docker установлены настройки прокси-сервера.
Настройка и сборка Buildroot
Для настройки и сборки Buildroot следует выполнить команды:
$ export DOCKERFILE=Dockerfile.centos8stream
$ export ENABLE_NETWORK=1 # контейнеру разрешен доступ к сети
$ ./docker-build.sh make mct_06_mct_06em_6u_defconfig
$ ./docker-build.sh make
Изменение конфигурации платы (внутри Docker)
Алгоритм:
для изменения конфигурации платы следует применить defconfig для конкретной платы
с помощью
./docker-build.sh make menuconfig
осуществляется вход в меню buildrootдля сохранения отредактированной конфигурации выполняется
./docker-build.sh make savedefconfig
Пример изменения конфигурации платы mct06em:
$ ./docker-build.sh make mct_06_mct_06em_6u_defconfig
$ ./docker-build.sh make menuconfig
$ ./docker-build.sh make savedefconfig
Для более комфортной разработки, например, ядра Linux можно, используя пакет из Buildroot, воспользоваться следующей инструкцией:
перейти в папку с распакованными исходными файлами Buildroot
multicore_multicore-mips-src_repo
создать переопределяющий файл, указывающий на локальный репозиторий:
$ echo LINUX_OVERRIDE_SRCDIR=$(pwd)/linux-multicore-4.14 > buildroot/local.mk
редактировать пакет в локальной папке, в нашем случае
linux-multicore-4.14
перенастроить и собрать пакет, в нашем случае для ядра Linux:
$ ./docker-build.sh make linux-reconfigure $ ./docker-build.sh make linux-build
Для U-Boot и других пакетов используются аналогичные алгоритмы.
См. 8.13.6. «Using Buildroot during development» на The Buildroot user manual.
Инструменты для сборки
Описание
Buildroot включает в себя пакеты инструментов сборки:
Toolchain mipsel-elvees-elf32 основан на GCC для MIPS32 RISC0. Портированный набор инструментов содержит обходные пути ошибок процессора. Архив
toolchain-mipsel-elvees-elf32/ELVEES-Mips32.GCC.linux64.*.tar.gz
Не рекомендуется использовать другие наборы инструментов для MIPS32 RISC0Toolchain Linux GCC для MIPS. Набор инструментов собирается из исходных кодов во время сборки Buildroot
Использование
Возможно использование инструментов собранных Buildroot. С помощью добавления путей к исполняемым файлам в переменную окружения PATH различных инструментов:
Linux MIPS toolchain:
$ export PATH=$PWD/buildroot/output/host/bin:$PATHBaremetal MIPS toolchain (если выбран, в противном случае может быть скопирован из каталога dl):
$ export PATH=$PWD/buildroot/output/host/opt/toolchain-mipsel-elvees-elf32/bin:$PATH
Поддержка CMake
Для поддержки сборки проектов на основе CMake для каждого инструмента
создается файл toolchain.cmake. Файлы toolchain.cmake присутствуют в
каталоге сборки buildroot/output/host
и копируются в архив toolchain:
Linux MIPS toolchain -
buildroot/output/host/share/buildroot/toolchainfile.cmake
Baremetal MIPS toolchain -
buildroot/output/host/opt/toolchain-mipsel-elvees-elf32/share/cmake/mips_toolchain.cmake
Проекты CMake могут быть собраны с помощью стандартного механизма (см. CMake cross-compiling):
$ cmake -DCMAKE_TOOLCHAIN_FILE=<absolute-path-to-toolchain.cmake> ...
Утилита mcprog
Установка
В процессе сборки Buildroot архив будет распакован
buildroot/output/host/opt/mcprog_elvees/
. Если этого не произошло,
придется распаковать самостоятельно.
Для ручной установки требуется распаковать архив
/buildroot/dl/mcprog-elvees/mcprog_linux_*.zip
.
Полная инструкция mcprog
содержится в файле README.md
в составе архива.
Предупреждение
Перед первым запуском mcprog необходимо зарегистрировать устройство-адаптер USB JTAG с помощью скрипта register_USB_JTAG.sh
.
Необходимо, чтобы у пользователя были root права для выполнения скрипта.
Программирование flash накопителя с помощью mcprog
Программирование flash накопителя запускается с host-машины
и осуществляется с помощью USB-адаптера JTAG.
Приложение mcprog
запускается на host-машине,
инициализирует MPORT и MFBSP-SPI в микросхеме
и далее ожидает команды для программирования flash накопителя.
Необходимо перейти в директорию содержащую утилиту mcprog:
$ cd buildroot/output/host/opt/mcprog_elvees/
Выполнить команды для загрузки образа.
Команды для загрузки образа на целевую плату с помощью mcprog
:
Примечание
Программируемый в SPI flash накопитель образ image-boot.img
содержит spi_boot, memory-config и U-Boot.
Для микросхем МС-30SF6, MCT-06 необходимо дополнительно программировать flash накопители для корректного запуска.
MCT-04EM-3U:
$ mcprog -e2 -b mct-04 -f <path-to>/image-boot.img 0x0
MCT-06EM-6U :
BOOT = 1: $ mcprog -e2 -b mct-06 -f <path-to>/image-boot.img 0x0 BOOT = 0: $ mcprog -e2 -b mct-06 <path-to>/boot-spi1.bin 0xbfc00000 $ mcprog -e2 -b mct-06 -f <path-to>/image-boot.img 0x0
МС-30SF6EM-6U:
$ mcprog -e2 -b mc-30sf6em <path-to>/boot-spi1.bin 0xbfc00000 $ mcprog -e2 -b mc-30sf6em -f <path-to>/image-boot.img 0x0