Дистрибутив Buildroot

Документ описывает дистрибутив операционной системы GNU/Linux на базе Buildroot для микросхемы 1892ВМ14Я (MCom-02), процедуру сборки и прошивки образа SD-карты с операционной системой и настройки операционной системы (далее — «ОС»).

Общие сведения

Дистрибутив предназначен для распространения исходных кодов ОС, инструментального ПО и скриптов сборки ОС. Особенности дистрибутива:

  • Поддержка модулей на базе микросхемы 1892ВМ14Я:

    • Салют-ЭЛ24Д1 r1.3;

    • Салют-ЭЛ24Д1 r1.4;

    • Салют-ЭЛ24Д1 r1.5;

    • Салют-ЭЛ24Д1 r1.5 с установленным навигационным радиомодулем RF2Chan v2;

    • Салют-ЭЛ24Д2 r1.1;

    • Салют-ЭЛ24ОМ1 r1.1 с установленным Салют-ЭЛ24ПМ1 r1.1 или Салют-ЭЛ24ПМ1 r1.2;

    • Салют-ЭЛ24ОМ1 r1.2 с установленным Салют-ЭЛ24ПМ1 r1.2, Салют-ЭЛ24ПМ2 r1.0 или Салют-ЭЛ24ПМ2 r1.1.

  • Основные компоненты: система сборки Buildroot, загрузчик U-Boot, ядро Linux.

  • Компоненты дистрибутива основаны на соответствующих версиях из публичных репозиториев с https://github.com/elvees.

  • Архив дистрибутива содержит все компоненты — при сборке дистрибутива с поставляемыми файлами конфигурации поддержки MCom-02 не требуется доступ в интернет.

    Компоненты дистрибутива предоставляются в исходных кодах. Исключения:

    • библиотека пространства пользователя драйвера Mali GPU, демо-приложения GPU;

    • инструментальное ПО DSP DELcore-30M;

    • прошивки микросхем контроллеров установленных на модулях (например, Wi-Fi).

  • Дистрибутив содержит следующие файлы конфигурации поддержки MCom-02:

    • mcom_defconfig — конфигурация дистрибутива по умолчанию.

    • mcommin_defconfig — минимальная конфигурация для загрузки ОС.

  • Особенности файла конфигурации mcom_defconfig:

    • Назначение конфигурации — демонстрация и тестирование интерфейсов MCom-02 и поддерживаемых модулей.

    • Имя пользователя, пароль — root, root.

    • Корневая файловая система основана на BusyBox, оболочка — Bash, система инициализации — systemd.

    • Стандартные бенчмарки и тесты: coremark, ramspeed, memtester, fio, dhrystone, bonnie, hdparm, i2c-tools, iperf и т.п.

    • Пакеты поддержки Mali GPU: модуль пространства ядра, библиотеки пространства пользователя, mcom-mali-demos. Аппаратное ускорение Qt на GPU.

    • Пакет поддержки SpaceWire — mcom-libswic.

    • Поддержка DSP DELcore-30M:

      • Пакет утилит и демонстрационных приложений — mcom-delcore30m-tests.

      • Инструментальное ПО для DSP (компилятор, линковщик).

    • Пакеты реализации OpenVX и демонстраций OpenVX: openvx, openvx-demo.

    • Пакеты реализации навигационного решения GNSS:

      • rf2chan-v2-gnss — модуля ядра для поддержки радиомодуля RF2Chan v2.

      • mcom-talita — драйвер пространства пользователя с реализацией навигационного решения.

    • Поддержка U-Boot из целевой ОС:

      • fw_setenv, fw_printenv — утилиты установки и чтения переменных окружения U-Boot.

      • mcom02-fw-update — утилита прошивки образов U-Boot.

    • Поддержка файла идентификации ОС /etc/os-release.

    • Пакеты Python 3, GStreamer, ALSA, FFmpeg, Bluez, libdrm.

    • udev-правила и systemd-сервисы для инициализации 6LoWPAN, ALSA, CAN, SPI, Wi-Fi.

    • Сетевой адрес получается по DHCP. Имя хоста по умолчанию — mcom02.

    • По умолчанию включен SSH.

Linux 4.4 и Linux 5.4

Таблица 1 Поддержка 1892ВМ14Я

Подсистема

Linux 4.4

Linux 5.4

Machine (startup, suspend, SMP, cache)

CMCTR, PLL (ELVEES)

DSP (ELVEES Elcore-30)

Ethernet MAC (Arasan)

I2C (DesignWare)

I2S (ELVEES MFBSP)

I2S (DesignWare)

GPU (ARM Mali-300)

[1]

[2]

GPIO (DesignWare)

MCC (ELVEES GNSS)

NAND (Arasan)

PMCTR (ELVEES)

RTC (ELVEES)

SDMA (ARM)

SDMMC (Arasan)

SpaceWire (ELVEES)

SPI (DesignWare)

Timers (DesignWare)

UART (DesignWare)

USB (DesignWare)

VPIN (MIPI CSI, parallel)

VPOUT (MIPI DSI, parallel)

VPU encoder (ELVEES VELcore-01, aka avico)

VPU decoder

Watchdog (DesignWare)

Таблица 2 Поддержка Салют-ЭЛ24ПМ

Подсистема

Linux 4.4

Linux 5.4

Audio codec (NXP SGTL5000) @ MFBSP I2S

eMMC @ SDMMC0

Ethernet PHY

LEDs @ GPIO

NAND flash

PMIC (NXP MMPF0100N)

SPI flash @ SPI0

Таблица 3 Поддержка Салют-ЭЛ24ОМ

Подсистема

Linux 4.4

Linux 5.4

Parallel @ VPIN

MIPI CSI @ VPIN

MIPI DSI @ VPOUT

Parallel LCD @ VPOUT

HDMI audio (TDA998x) @ I2S0

HDMI video (TDA998x) @ VPOUT

CAN (MCP2515) @ SPI0

LEDs @ GPIO

RTC (MCP7940x) @ I2C2

SD card @ SDMMC1

Wi-Fi (AP6212) @ SDMMC1

Bluetooth (AP6212) @ UART1

PWM

Подготовка ПК

ПК должна иметь конфигурацию:

  • не менее 4 ГиБ ОЗУ, 20 ГиБ свободного места на НЖМД или твердотельном накопителе;

  • на ПК должен быть установлен кард-ридер SD-карт;

Для работы с модулем требуется дополнительное оборудование:

  • microUSB-USB кабель;

  • патч-корд Cat5e;

  • MicroSD-карта;

  • опционально: USB-флеш-накопитель.

Программные требования к ПК:

  • Операционная система ПК на базе ОС Linux, поддерживаемые ОС CentOS Stream 8, 9, Ubuntu 22.04.

  • Для прошивки образов и работы с UART пользователь должен быть добавлен в группы disk, dialout.

  • Для сборки дистрибутива в ОС ПК должны быть установлены RPM-пакеты, перечисленные в соответствующем файле Dockerfile.<distro> (см. build-docker):

    sudo dnf install <packages-from-dockerfile> -y
    

    Для работы с терминалом UART должны быть установлены RPM-пакеты minicom и putty.

  • В зависимости от модели используемого USB-UART переходника необходима установка драйверов.

  • При сборке дистрибутива в Docker-контейнере требуется дополнительная настройка ПК, подробнее см. Сборка в среде Docker.

Получение дистрибутива

Дистрибутив распространяется на странице https://dist.elvees.com/mcom02/buildroot.

Пример иерархии директорий:

├── linux44/
│   ├── graphs/
│   ├── images/
│   ├── git-info.json
│   ├── manifest.json
│   └── mcom02-defconfig-src.tar.gz
└── linux54
    ├── graphs/
    ├── images/
    ├── git-info.json
    ├── manifest.json
    └── mcom02-defconfig-src.tar.gz

В директориях linux44 и linux510 хранятся исходные коды и образы на базе соответствующих ядер 4.4 и 5.10.

В файле git-info.json перечислены SHA-версии пакетов Buildroot.

В директории images хранятся собранные образы и архивы:

  • mcom02-defconfig-src.tar.gz — архив исходных кодов Buildroot.

  • rootfs.tar.gz — архив корневой файловой системы rootfs.tar.gz c ОС Linux. Архив предназначен для прошивки на загрузочное устройство (SD-карта, eMMC, USB-накопитель). Корневая ФС совместим со всеми модулями.

  • *-uboot.img.gz — образы загрузчика для прошивки в SPI-флеш память. Соответствие модулей и образов:

    • mcom02-salute-el24d1-r1.3-uboot.img — Салют-ЭЛ24Д1 r1.3;

    • mcom02-salute-el24d1-r1.4-uboot.img — Салют-ЭЛ24Д1 r1.4;

    • mcom02-salute-el24d1-r1.5-uboot.img — Салют-ЭЛ24Д1 r1.5;

    • mcom02-salute-el24d1-r1.5-rf2chan-uboot.img — Салют-ЭЛ24Д1 r1.5 c навигационным радиомодулем RF2Chan v2;

    • mcom02-salute-el24d2-r1.1-uboot.img — Салют-ЭЛ24Д2 r1.1;

    • mcom02-salute-el24pm1-r1.1-1.2-om1-r1.1-1.2-uboot.img — Салют-ЭЛ24ОМ1 с Салют-ЭЛ24ПМ1;

    • mcom02-salute-el24pm2-r1.2-om1-r1.1-1.2-uboot.img — Салют-ЭЛ24ОМ1 с Салют-ЭЛ24ПМ2.

    Важно

    Совместимость ревизий модулей Салют-ЭЛ24ОМ и Салют-ЭЛ24ПМ https://support.elvees.com/docs/Microchips/1892VM14YA/Boards.

  • arm-buildroot-linux-gnueabihf_sdk-buildroot.tar.gz — комплект тулчейнов ARM, DSP (подробнее см. Средства сборки).

  • mcom02-buildroot-sdcard.img — образ корневой файловой системы Linux (для записи на SD-карту, USB-накопитель, eMMC-память.

Файл images/tar2dev используется для прошивки SD-карты в режиме загрузки Generic Distro, см. howto-flash-sd.

Для сборки необходимо скачать содержимое директории, распаковать архив с исходными кодами *-defconfig-src.tar.gz перейти в распакованную директорию:

tar -xf ..-defconfig-src.tag.gz
cd ..-defconfig-src

Важно

Путь до директории, в которой выполняется распаковка и сборка, не должен содержать символов кириллицы и пробелов.

Примечание

Архив *-defconfig.src подготовлен командами:

make mcom_defconfig
make source
tar -czf ...defconfig-src.tag.gz ...

Обзор исходных кодов

Дерево исходных кодов после распаковки архива представлено на диаграмме:

mcom_defconfig-src/
├── buildroot/
│   ├── ...
│   ├── dl/
│   └── output/
│       └── ...
├── docker-build.sh
├── Dockerfile.centos8stream
├── Dockerfile.ubuntu22.04
├── external-common/
├── external-mcom02/
├── Makefile
├── Makefile.u-boot
└── u-boot/

Исходные коды Buildroot:

buildroot/

Исходные коды системы сборки Buildroot. Некоторые рецепты пакетов Buildroot изменены.

Buildroot сконфигурирован файлом конфигурации external-mcom02/configs/mcom_defconfig. В директории buildroot/dl содержатся архивы исходных кодов всех пакетов данной конфигурации.

Архив buildroot/dl/linux-mcom02*.tar.gz — исходные коды ядра Linux.

external-common/

Внешнее дерево пакетов Buildroot независимых от архитектуры. Дерево оформлено в соответствии с описанием Buildroot br2-external tree.

external-mcom02/

Внешнее дерево пакетов Buildroot для поддержки MCom-02. Содержит mcom_defconfig и фрагменты.

Makefile

Скрипт сборки Buildroot. Скрипт устанавливает переменную BR2_EXTERNAL с указанием до директорий external-* и вызывает make в директории buildroot. Т.о. при вызове make в корневой директории дистрибутива доступны все стандартные цели Buildroot, например: make help — вывод справки по целям Buildroot.

Результатом сборки Buildroot являются rootfs.tar.gz и инструментальные средства Buildroot SDK для ПК.

Загрузчик U-Boot:

u-boot/

Исходные коды загрузчика U-Boot, описание см. Загрузчик U-Boot.

Makefile.u-boot

Скрипт сборки образов U-Boot всех поддерживаемых модулей. Для сборки U-Boot скрипт использует инструментальные средства Buildroot SDK.

Результатом сборки U-Boot являются образы для прошивки SPI-памяти.

Скрипты сборки в Docker-контейнере:

Dockerfile.*

Файлы конфигурации Docker-образа.

docker-build.sh

Скрипт сборки Docker-образа и сборки дистрибутива в контейнере Docker.

Сборка в «родной» ОС (native)

Перед сборкой в ОС необходимо установить системные пакеты, пакеты брать из соответствующих файлов Dockerfile.* (например centos8stream, ubuntujammy, и т.д.).

Примечание

Распространяемый архив был собран в Docker-контейнере DOCKERFILE=Dockerfile.centos8stream. Примененный файл конфигурации buildroot/.config содержит список пакетов строго для данной среды. В случае смены ОС требуется повторное применение конфигурации docker-build.sh make ..._defconfig .... При запуске make из сети могут скачиваться дополнительные пакеты.

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

Для сборки Buildroot с ядром 4.4 для любого поддерживаемого модуля необходимо выполнить:

make mcom_defconfig
make

Для сборки Buildroot с ядром 5.4 для любого поддерживаемого модуля необходимо выполнить:

make mcom_defconfig FRAGMENTS=linux54
make

Длительность сборки может составлять более 120 минут и зависит от производительности CPU ПК.

Собранные образы доступны в директории buildroot/output/images, описание файлов см. getting-source.

При сборке Buildroot могут быть использованы любые стандартные команды: make source, make <package>-reconfigure, make menuconfig. Подробнее см. официальный Buildroot manual.

Для сборки образов U-Boot (сборку необходимо выполнять после сборки Buildroot):

  1. Выполнить команду для вывода справки по целям скрипта, запомнить цель соответствующую используемому модулю:

    make -f Makefile.u-boot help
    
  2. Выполнить команду для сборки U-Boot. Пример команды сборки загрузчика модуля Салют-ЭЛ24Д1 r1.5:

    make -f Makefile.u-boot saluted1-r15
    

    Результатом сборки данного примера является файл uboot-images/mcom02-salute-el24d1-r1.5-uboot.img.

Сборка в среде Docker

Внимание

В случае если сборка Buildroot была выполнена в контейнере, то повторные запуски сборки (после реконфигурации, изменения исходных кодов пакетов) также должны выполняться в контейнере. Повторный запуск сборки Buildroot в ОС ПК будет завершаться ошибкой. Для очистки генерируемых промежуточных файлов Buildroot необходимо выполнить make clean.

Причины:

  • Рабочая директория Buildroot на файловой системе ОС ПК и на файловой системе контейнера имеет различные пути.

  • При сборке скрипты Buildroot устанавливают абсолютные пути в генерируемых скриптах сборки.

Установить и настройть Docker:

  1. Установить Docker версии 17.07 или выше на ПК согласно инструкции Get Docker CE for CentOS.

  2. Добавить текущего пользователя в группу docker согласно инструкции Post-installation steps for Linux.

  3. Настроить прокси для сервиса Docker (при необходимости) согласно инструкции Control Docker with systemd.

  4. Настроить прокси для клиента Docker (при необходимости) согласно инструкции Configure the Docker client.

Собрать rootfs в среде Docker:

export DOCKERFILE=Dockerfile.centos8stream
export ENABLE_NETWORK=1  # container is allowed to access network

# for rootfs with Linux 4.x
./docker-build.sh make mcom_defconfig
./docker-build.sh make

# for rootfs with Linux 5.x
./docker-build.sh make mcom_defconfig FRAGMENTS=linux54
./docker-build.sh make

Собрать U-Boot:

./docker-build.sh make -f Makefile.u-boot

Средства сборки

В состав Buildroot входят средства сборки (далее — тулчейны) для процессорных ядер MCom-02:

  • Linux GCC для ARM CPU0. Тулчейн собирается из исходных кодов во время сборки Buildroot.

  • GCC для DSP. Тулчейн портирован компанией ЭЛВИС.

Варианты использования тулчейнов:

  1. Собрать Buildroot и использовать тулчейны, добавляя пути до исполняемых файлов в PATH:

    # ARM toolchain
    export PATH=$PWD/buildroot/output/host/bin:$PATH
    
    # DSP toolchain
    export PATH=$PWD/buildroot/output/host/opt/toolchain-elcore30/bin:$PATH
    
  2. Собрать набор тулчейнов (aka relocatable Buildroot SDK) c использованием встроенного механизма Buildroot (подробнее см. «Using the generated toolchain outside Buildroot» в Buildroot manual).

    Создать архив тулчейнов ..._sdk-buildroot.tag.gz в buildroot/output/images:

    make sdk
    

    Распаковать архив в произвольную директорию, вызвать скрипт для настройки путей (команда настроит переменную PATH):

    source <your/sdk/path>/environment-setup
    

    Примечание

    Предсобранный ..._sdk-buildroot.tar.gz распространяется в составе артефактов MCom-02 Buildroot, см. getting-source.

    Примечание

    Несмотря на префикс «arm» в названии архива, архив содержит тулчейны для всех процессоров.

Для поддержки сборки проектов на базе CMake для каждого из тулчейнов создаётся toolchain.cmake-файл. toolchain.cmake-файлы присутствуют в сборочной директории buildroot/output/host и копируются в архив тулчейнов:

buildroot/output/host/share/buildroot/toolchainfile.cmake
buildroot/output/host/opt/toolchain-elcore30m/share/cmake/elcore30m-toolchain.cmake

Проекты CMake могут собираться с использованием стандартного механизма (см. CMake cross-compiling):

cmake -DCMAKE_TOOLCHAIN_FILE=<absolute-path-to-toolchain.cmake> ...

Подготовка носителя ОС

Прошивка SD-карты

Для записи образа на SD-карту необходимо:

  1. Извлечь SD-карту из считывателя карт ПК и считать список устройств командой:

    ls -la /dev/sd*
    
  2. Установить SD-карту в кард-ридер ПК и повторно считать список устройств командой ls -la /dev/sd*. Вычесть из списка устройств после установки SD-карты список устройств до установки карты и получить устройство /dev/sdX и/или список устройств /dev/sdX1, /dev/sdX2... (где 1, 2, … номера разделов SD-карты). В случае, если получен список устройств, то получить устройство /dev/sdX отбрасыванием последней цифры из устройства соответствующего первому разделу SD-карты /dev/sdX1.

  3. Записать образ на SD-карту:

    sudo dd if=buildroot/output/images/mcom02-buildroot-sdcard.img of=/dev/sdX bs=4M
    sudo sync
    
  4. Извлечь SD-карту из считывателя карт ПК.

Прошивка eMMC

Для прошивки образа в память eMMC на модулях Салют-ЭЛ24ПМ1 и Салют-ЭЛ24ПМ2 выполнить:

  1. Запустить модуль. Загрузка системы должна быть произведена с SD-карты.

  2. Подключиться к модулю по терминалу UART и считать его IP-адрес командой ifconfig, значение IP-адреса сохранить на ПК в переменной TARGET_IP_ADDR:

    TARGET_IP_ADDR=<IP-адрес-модуля>
    
  3. В терминале на ПК установить переменную с путём до файла образа:

    IMG_PATH=<путь-до-файла-образа-SD-карты>
    
  4. Выполнить на ПК команду:

    ssh root@$TARGET_IP_ADDR dd of=/dev/mmcblk0 bs=4M conv=fsync < $IMG_PATH
    
  5. При необходимости проверить корректность записи образа, для этого на ПК выполнить команду:

    IMG_SIZE=$(stat -c%s "$IMG_PATH")
    
    ssh root@$TARGET_IP_ADDR "dd if=/dev/mmcblk0 bs=4M count=$(($IMG_SIZE / 1024 / 1024 / 4)) | head -c $IMG_SIZE | md5sum"
    

    Полученную MD5-сумму сравнить с MD5-суммой записанного файла образа.

Прошивка SPI флеш-памяти через BootROM

Прошивка SPI флеш-памяти модуля образом загрузчика U-Boot через BootROM выполняется в случае, если загрузчик повреждён или не прошит. Операция трудозатратна: требуются ручные циклы переключения питания и изменение состояния переключателей BOOT на модуле.

Прошивка выполняется утилитами из пакета MCom-02 flash tools согласно инструкции.

Образы SPI, распространяемые на dist.elvees.com (см. getting-source), сжаты. Перед прошивкой необходимо выполнить декомпрессию файла mcom02-salute-...-uboot.img.gz:

gunzip mcom02-salute-....-uboot.img.gz

Прошивка SPI флеш-памяти из ОС модуля

Для прошивки SPI флеш-памяти из ОС модуля используется утилита mcom02-fw-update: необходимо скопировать образ с ПК на ФС устройства (например, командой scp) и выполнить на устройстве:

mcom02-fw-update <image-file>

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

Во время исполнения процесс прошивки не должен прерываться.

Для прошивки с восстановлением переменных окружения U-Boot используется опция -r:

mcom02-fw-update -r <image-file>

Подсказка

Для печати и установки переменных окружения загрузчика U-Boot в ОС модуля используются утилиты fw_printenv и fw_setenv соответственно.

Настройка ОС

Увеличение объема ОЗУ

Доступный объем ОЗУ по умолчанию равен 1 ГиБ для модулей Салют-ЭЛ24Д1 и Салют-ЭЛ24Д2, 2 ГиБ — для модулей Салют-ЭЛ24ОМ1. Для увеличения объема ОЗУ до 2 ГиБ необходимо активировать второй контроллер DDR (если применимо для данного модуля).

Включение контроллера DDR выполняется установкой значения enable для переменной окружения ddrctl_cmd в терминале загрузчика U-Boot:

setenv ddrctl_cmd enable
saveenv

Включение драйвера framebuffer vpoutfb

По умолчанию образ SD-карты собирается с выключенным модулем ядра vpoutfb для модулей Салют-ЭЛ24Д1 и Салют-ЭЛ24Д2. При необходимости включение произвести путем удаления строки modprobe.blacklist=vpoutfb из переменной окружения cmdline в терминале загрузчика.

Настройка сети

По умолчанию ОС настроена на получение сетевого адреса по DHCP. Настройка параметров сети задаётся в конфигурационных файлах /etc/systemd/network/*.network и /usr/lib/systemd/network/*.network на корневой файловой системе. Полная документация по настройке сети доступна в документации systemd.

Имя хоста по умолчанию — mcom02. Для изменения имени хоста необходимо отредактировать конфигурационные файлы /etc/hostname и /etc/hosts на корневой файловой системе.

Настройка 6LoWPAN

Сетевой интерфейс 6LoWPAN обеспечивает взаимодействие по протоколу IPv6 через сеть стандарта IEEE 802.15.4.

Параметры сетевого интерфейса задают командой ip. Для автоматической настройки интерфейса используется сервис systemd lowpan.service (выключен по умолчанию).

Для изменения IP, выставляемого сервисом, необходимо изменить файл:

  • external-mcom02/overlay/elvees/usr/lib/systemd/system/lowpan.service в директории исходных кодов на ПК;

  • или /usr/lib/systemd/system/lowpan.service на файловой системе на целевой платформе и перезапустить сервис:

    systemctl daemon-reload
    systemctl restart lowpan
    

Параметры запуска Linux

Параметры запуска Linux задаются с помощью переменных окружения загрузчика.

Совет

При работе с Салют-ЭЛ24ОМ1 для изменения загрузочного устройства на карту памяти microSD необходимо установить переменную окружения загрузчика boot_targets в значение legacy_mmc1 mmc1.

Дополнительные параметры запуска Linux необходимо передавать через переменную окружения cmdline загрузчика.

Параметры запуска Linux описаны в Kernel Parameters.

Добавление программ в образ SD-карты

Система сборки Buildroot поддерживает добавление в сборку программ и библиотек пользователя. Подробная документация находится в директории buildroot/docs.

Управление выводами GPIO из пространства пользователя

Управление выводами GPIO СнК осуществляется с помощью служебных файлов в /sys/class/gpio (подробнее см. GPIO Sysfs Interface for Userspace).

Управление выводом GPIO может быть недоступно, если он используется драйвером.

В соответствии с руководством пользователя на СнК выводы GPIO делятся на 4 группы: GPIOA, GPIOB, GPIOC, GPIOD. В Linux выводы GPIO обозначаются номерами. Соответствие базовых номеров для каждой группы приведено в таблице Таблица 4. Внутри групп номера идут по порядку. Например, вывод GPIOA5 соответствует номеру 480 + 5 = 485 в Linux.

Таблица 4 Соответствие обозначений выводов GPIO номерам в Linux

Группа

Базовый номер в Linux

GPIOA

480

GPIOB

448

GPIOC

416

GPIOD

384

Запуск модуля

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

  1. Собрать образ SD-карты и образ загрузчика для модуля.

  2. Записать образ SD-карты.

  3. Прошить SPI флеш-память модуля образом загрузчика.

  4. Настроить ОС.

  5. Установить SD-карту в слот MicroSD модуля.

  6. Установить переключатель BOOT модуля в положение, соответствующее загрузке из SPI флеш-памяти (подробнее см. Руководство пользователя на модуль).

  7. Подключить модуль к источнику питания (подробнее см. Руководство пользователя на модуль).

  8. Открыть терминал UART модуля, или установить соединение по протоколу SSH (логин: root, пароль: root).

  9. Выполнить команду uname -a. Считать модуль готовым к использованию при выводе в терминал сообщения:

    Linux mcom02 4.1.41.3 #1 SMP Fri Sep 1 17:08:44 MSK 2017 armv7l GNU/Linux
    

Примечание

systemd инициализирует пользовательское пространство параллельно процедуре инициализации устройств (к примеру, терминал инициализируется до загрузки всех модулей ядра). Это может привести к проблемам запуска, на ранних этапах, приложений, взаимодействующих с устройствами. Рекомендации по ожиданию устройств описаны в systemd-udev-settle.service.

Сообщения при загрузке

Отладочный модуль выводит в терминал UART сообщения о ходе загрузки. Пример вывода в терминал при успешной загрузке:

DDR retention disabled

U-Boot SPL 2017.07.0.3 (Sep 01 2017 - 17:12:01)
DDR controllers init started
DDR controller #0 init done
DDR controller #1 init done
Trying to boot from SPI


U-Boot 2017.07.0.3 (Sep 01 2017 - 17:12:01 +0300), Build: v2.5-2017-09-01

CPU:   MCom-compatible
Model: Salute-EL24OM1 r1.1
I2C:   ready
DRAM:  2 GiB
MMC:   sdhci0@3800b000: 0, sdhci1@3800d000: 1
SF: Detected m25p32 with page size 256 Bytes, erase size 64 KiB, total 4 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
DDR controller #1 disabled
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0(part 0) is current device
reading zImage
3310424 bytes read in 211 ms (15 MiB/s)
## Flattened Device Tree blob at 7f768140
   Booting using the fdt blob at 0x7f768140
   Loading Device Tree to 4fff8000, end 4ffffbcd ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.41.3 (jenkins_drap@leo-pc.elvees.com)
(gcc version 5.2.0 (Buildroot 2015.08.1) ) #1 SMP Fri Sep 1 17:08:44 MSK 2017
...

Welcome!
mcom02 login: