MCom-03 (СКИФ) ALT Linux 2021.09

Обзор

MCom-03 ALT Linux — сборка операционной системы ALT Linux с поддержкой модулей на базе микросхемы 1892ВА018 (aka СКИФ, aka MCom-03). При включении питания модуля запускается рабочее окружение Xfce с выводом на HDMI-монитор. Управление ОС выполняется через терминал или через мышь, клавитуатуру, подключенные к модулю.

Пользователи ОС:

  • пользователь elvees, пароль elvees,

  • суперпользователь: root, пароль elvees.

Поддерживаемые модули:

  • IPCom BuB r1.3.0 (aka MCom-03 BuB),

  • NGFW-CB r1.0 с установленным SMARC-модулем ELV-MC03-SMARC r1.0.

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

Сборка MCom-03 ALT Linux состоит из бинарных образов:

  • mcom03-altlinux-sdcard-2021-09-08.img.bz2 — образ SD-карты для модулей MCom03-BuB и NGFW-CB,

  • mcom03-mcom03bub-sbl-mips-2021-09-08.bin — образ QSPI0 для модуля MCom03-BuB c выводом видео на HDMI-мониторы разрешением FullHD,

  • mcom03-mcom03bub-sbl-mips-1280x800-2021-09-14.bin — образ QSPI0 для модуля MCom03-BuB c выводом видео на HDMI-мониторы разрешением 1280x800,

  • mcom03-ngfwcb-sbl-mips-fullhd-2021-09-08.bin — образ QSPI0 для модуля NGFW-CB с установленным SMARC-модулем.

Образы размещены на сайте http://dist.elvees.com/mcom03/altlinux/2021.09.

Состав образа SD-карты

Образ SD-карты состоит из GPT-разделов boot (FAT32) и root (EXT4).

Раздел boot содержит файлы:

  • extlinux/extlinux.conf — конфигурационный файл схемы U-Boot Generic Distro.

  • alt/Image — образ ядра Linux.

Раздел root содержит корневую файловую систему (rootfs) ALT Linux. Корневая файловая система разработана следующим образом:

  • Установлен ALT Linux P9 из образа slinux-9.1-aarch64.tar.xz (при установке созданы пользователи, настроен часовой пояс и т.д.).

  • Добавлены файлы:

    • /usr/bin/modetest — стандартное приложение вывода шаблона на HDMI-монитор.

    • /usr/bin/mcom03-demo-video.sh — скрипт вывода видеофайла на HDMI-монитор без X-сервера.

    • /usr/sbin/mcom03-pixclk-pll-restart.sh — скрипт перезапуска PLL3 подсистемы Media MCom-03.

    • /usr/sbin/mcom03-hdmi-setup.sh — скрипт-обёртка перезапуска PLL3, скрипт опрашивает подтверждения стабильности вывода видео на HDMI-монитор (подробнее см. Поддержка HDMI).

    • /usr/share/pixmaps/gradient.png — изображение для проверки стабильности вывода на HDMI-монитор.

  • Из стандартных репозиториев ALT Linux установлены дополнительные пакеты (mpv).

  • Установлен пакет МойОфис myoffice-standard-documents-2020.03.1.25.0-0.aarch64.rpm.

  • На рабочем столе созданы ярлыки для запуска приложений Firefox, mpv, МойОфис, mcom03-hdmi-setup.sh.

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

Версии исходных кодов базовых компонентов поддержки MCom-03, из которых собраны бинарные образы:

Поддержка модуля MCom-03 BuB

Поддерживаются следующие интерфейсы модуля MCom-03 BuB:

Интерфейс

Разъём модуля

Примечание

HDMI

XS20

Подробнее см. Поддержка HDMI.

USB0

USB0

Подробнее см. Поддержка USB. Подключен к USB0 MCom-03.

USB1

USB1

Подробнее см. Поддержка USB. Подключен к USB1 MCom-03.

SD-карта

XS11

Поддерживается Default Speed. SD-карта подключена к SDMMC0 MCom-03.

QSPI0

QSPI0

Поддерживается только в U-Boot.

UART0

XS33

Консоль MCom-03.

DDR

LPDDR4 533 МГц (1066 MT/s), суммарно 8 ГБ.

Примечание

Для поддержки Ethernet необходимо использовать USB2Ethernet-адаптер.

Поддержка модуля NGFW-CB

Поддерживаются следующие интерфейсы модуля NGFW-CB:

Интерфейс

Разъём модуля

Примечание

HDMI

XS14

Подробнее см. Поддержка HDMI.

USB

XS12

Подробнее см. Поддержка USB. Подключен к USB1 MCom-03. На разъёме XS12 два USB-порта.

SD-карта

M.2 SIM

Поддерживается Default Speed. Подключена к SDMMC1 MCom-03.

QSPI0

Поддерживается только в U-Boot, память установлена на SMARC-модуле.

UART0

XS18

Консоль MCom-03.

DDR

LPDDR4 533 МГц (1066 MT/s), суммарно 8 ГБ.

Примечание

Для поддержки Ethernet необходимо использовать USB2Ethernet-адаптер.

Поддержка USB

USB 3.0 не поддерживается, подключение должно выполняться через удлинитель USB 2.0 или USB-хаб 2.0. Как следствие, в консоль Linux могут выводиться регулярные сообщения о неисправности USB-кабеля. Для отключения сообщений изменить уровень печатаемых ядром сообщений:

dmesg --console-level alert

Поддержка HDMI

При включении/сбросе СнК видео на HDMI может не выводиться или выводиться испорченным. Для перезапуска HDMI требуется перезапуск процессора или перенастройка PLL СнК. Перенастройка PLL выполняется скриптом mcom03-hdmi-setup.sh (установлен в ОС).

В зависимости от требуемого выводимого разрешения модуль QSPI0 MCom-03 BuB должен быть прошит разными прошивками. Доступные прошивки QSPI0 перечислены в Состав сборки, инструкция по прошивке QSPI0 — в Прошивка QSPI-памяти.

Обзор загрузки ОС (boot flow)

MCom-03 запускается в режиме QSPI0 XIP. Память QSPI0 содержит образы SBL, ddrinit, TF-A, U-Boot. SD-карта содержит образ ядра Linux, файл extlinux.conf, rootfs (см. Состав образа SD-карты). U-Boot поддерживает загрузку Linux по схеме Generic Distro с использованием файла extlinux.conf.

Для старта ядра Linux используются: образ ядра, DTB-файл и файл extlinux.conf. DTB-файл встроен в U-Boot, собирается и загружается вместе с U-Boot и передается ядру Linux при загрузке.

Последовательность загрузки приведена на диаграмме:

digraph G {

  node [ shape = box, style = filled, width=2.5, height=0.4]

  poweron [label = "User Power On", fillcolor=darkolivegreen1]
  sbl1 [label = "SBL @ RISC0 (QSPI0 XIP)", fillcolor=azure2]
  ddrinit [label = "DDR init @ CPU (SPRAM)", fillcolor=lightsalmon]
  sbl2 [label = "SBL @ RISC0 (QSPI0 XIP)", fillcolor=azure2]
  tfa [label = "TF-A @ CPU (DDR)", fillcolor=lightsalmon]
  uboot [label = "U-Boot @ CPU (DDR)", fillcolor=lightsalmon]
  linux [label = "Linux @ CPU (DDR)", fillcolor=lightsalmon]

  poweron -> sbl1 -> ddrinit -> sbl2 -> tfa -> uboot -> linux
}

Последовательность загрузки Linux (в скобках указан источник исполнения)

Инструкции (how-to)

Запуск ОС на модуле MCom-03 BuB

  1. Перевести переключатели BOOT0,1,2 на блоке SA1 в положение OFF.

  2. Подключить USB2Ethernet-адаптер через удлинитель USB 2.0 и переходник Micro USB 3.0 к разъему USB0 (XS6) или USB1 (XS7) модуля.

  3. Подключить HDMI-монитор через HDMI-кабель в разъем XS20 модуля.

  4. Установить SD-карту в слот SD SDMMCO (XS11) модуля.

  5. Подключить разъем UART0USB (XS33) модуля и USB-порт ПК посредством кабеля USB 2.0 TypeB.

  6. Подключить блок питания в разъем PWR IN модуля. Модуль начнет загружаться.

  7. На ПК открыть терминал UART модуля. Дождаться в консоли окончания загрузки Linux и залогиниться, логин: root, пароль elvees.

  8. Дождаться появления на HDMI-мониторе рабочего стола Xfce.

  9. Если изображение выводится на HDMI-монитор с артефактами или не выводится, то в консоли терминала UART необходимо выполнить команду mcom03-hdmi-setup.sh. Запустится приложение, перезапускающее вывод изображения на HDMI-монитор — при появлении стабильного изображения без артефактов на клавиатуре необходимо нажать y. В противном случае нажимать n до появления стабильной картинки на мониторе. Пример работы приложения mcom03-hdmi-setup.sh:

    [root@altlinux ~]# mcom03-hdmi-setup.sh
    Output image is good? [y/n] n
    Restarting PLL...
    Output image is good? [y/n] y
    [root@altlinux ~]#
    

Запуск ОС на модуле NGFW-CB

  1. Перевести переключатели BOOT0,1,2 на блоке SA2 выставить в положение ON.

  2. Подключить USB2Ethernet-адаптер через удлинитель USB 2.0 к разъему XS14 модуля.

  3. Подключить HDMI-монитор через HDMI-кабель в разъем XS17 модуля.

  4. Установить microSD-карту в внешний разъём слота M.2 SIM задней стороне модуля.

  5. Подключить разъем CONSOLE (XS18) модуля и USB-порт ПК посредством кабеля USB 3.0 TypeC.

  6. Подключить блок питания в разъем +12V (XS21) модуля.

  7. Нажать кнопку POWER (SB1). Модуль начнет загружаться.

  8. На ПК открыть терминал UART модуля. Дождаться в консоли окончания загрузки Linux и залогиниться, логин: root, пароль elvees.

  9. Дождаться появления на HDMI-мониторе рабочего стола Xfce.

  10. Если изображение выводится на экран с артефактами или не выводится вообще, то в консоли терминала UART необходимо выполнить команду mcom03-hdmi-setup.sh. Запустится приложение, перезапускающее вывод изображения на HDMI-монитор — при появлении стабильного изображения без артефактов на клавиатуре необходимо нажать y. В противном случае нажимать n до появления стабильной картинки на мониторе. Пример работы приложения mcom03-hdmi-setup.sh:

    [root@altlinux ~]# mcom03-hdmi-setup.sh
    Output image is good? [y/n] n
    Restarting PLL...
    Output image is good? [y/n] y
    [root@altlinux ~]#
    

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

Прошивка SD-карты выполняется на ПК:

  1. Определить имя устройства SD-карты на ПК (извлечь SD-карту из считывателя карт ПЭВМ, считать список устройств командой ls -la /dev/sd*, установить SD-карту в ПК, повторно считать список устройств, обнаружить новое устройство /dev/sdX).

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

    sudo dd if=mcom03-altlinux-sdcard-2021-09-08.img of=/dev/sdX bs=4M && sync
    

Прошивка QSPI-памяти

Прошивка QSPI-памяти выполняется с ПК. Python-пакет утилит для прошивки QSPI-памятей mcom03-flash-tools и инструкция по прошивке расположены по адресу https://github.com/elvees/mcom03-flash-tools.

Образы прошивок для QSPI-памятей соответствующих модулей (MCom-03 BuB, NGFW-CB) перечислены в Состав сборки.