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

Обзор

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

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

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

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

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

  • ROCK Pi N10 с установленным ELV-MC03-SMARC r1.1,

  • ТрастФон_ОПН r1.0 с установленным ТрастФон_ПМ r1.0.

Изменения в сборке

  • Добавлена поддержка ROCK Pi N10 с установленным ELV-MC03-SMARC r1.1.

  • Изменения для ТрастФон:

    • Добавлена поддержка DSI-дисплей AUO B101UAN01 с контроллером тачскрина FT560;

    • Улучшена стабильность системы.

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

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

  • mcom03-altlinux-rockpi-sdcard-*.img.bz2 — образ SD-карты для модуля ROCK Pi N10 с установленным ELV-MC03-SMARC r1.1, в extlinux.conf настроено монтирование rootfs с eMMC;

  • mcom03-altlinux-sdcard-*.img.bz2 — образ SD-карты для модуля ТрастФон_ОПН с установленным ТрастФон_ПМ, в extlinux.conf настроено монтирование rootfs с SD-карты;

  • mcom03-rockpi-sbl-mips-boot-order.bin — образ QSPI0 для модуля ELV-MC03-SMARC r1.1;

  • mcom03-trustphonepm-sbl-mips-*.bin — образ QSPI0 для модуля ТрастФон_ПМ r1.0.

Примечание

Возможен запуск образов SD-карты на других модулях на базе MCom-03: после прошивки SD-карты необходимо изменить устройство для загрузки корневой файловой системы (параметр ядра root в файле extlinux.conf).

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

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

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

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

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

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

  • *.dtb-файлы для поддерживаемых модулей и комбинаций с подключенными устройствами (CSI-камера, DSI-дисплей и т.д.).

Раздел 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/sbin/devmem — бинарная утилита-аналог утилиты devmem из BusyBox.

    • /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.

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

Репозитории с исходными кодам базовых компонентов доступны на https://github.com/elvees.

Версии базовых компонентов сборки, из которых собраны бинарные образы для ТрастФон_ПМ:

  • arm-trusted-firmware — 8e077abde8f6853c541e2c7af29eadb8e42ad26b,

  • ddrinit — 94a039995f15b323dc2f2e6b20ee07398a0ab7ee,

  • linux — 9aa6609417e3fd2addec90e180ff69d0b3faee17,

  • mcom03-sbl — 800e6fc2b68b7d277f06e93bd861f77146c12765,

  • uboot — 39b104348133f1f1cfdd246e6226c6d025452d98.

Исходные коды для mcom03-rockpi-sbl-mips-boot-order.bin не определены.

Поддержка HDMI

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

Поддержка DDR

LPDDR4 533 МГц (1066 MT/s), из-за ограничений ПО в Linux доступно суммарно 2 ГБ.

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

MCom-03 запускается в режиме QSPI0 XIP. Память QSPI0 содержит образы SBL, ddrinit, TF-A, U-Boot. SD-карта содержит ядро, DTB, extlinux.conf, подробнее см. Состав образа SD-карты.

U-Boot поддерживает загрузку Linux по схеме Generic Distro с использованием файла extlinux.conf:

  • U-Boot перебирает источники загрузки SDMMC0, SDMMC1, USB (порядок может отличаться в зависимости от используемой версии U-Boot),

  • U-Boot запускает ядро в соответствии с первым обнаруженным extlinux.conf (копирует DTB и ядро в ОЗУ, передаёт управление ядру).

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

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 (в скобках указан источник исполнения)

Поддержка ELV-MC03-SMARC r1.1

В ОС Linux поддерживаются следующие интерфейсы и компоненты модуля:

  • HDMI, поддерживается только видео, см. Поддержка HDMI,

  • eMMC (SDMMC0),

  • I2C0,

  • I2C1,

  • I2C2,

  • I2C3,

  • GBE0,

  • GBE0,

  • MIPI DSI,

  • SATA (SATA-контроллер подключен к контроллеру PCIe0 MCom-03),

  • SDIO (SDMMC1),

  • Serial I2C EEPROM (I2C2),

  • SER0,

  • SER1 (UART0),

  • SER2,

  • SER3,

  • USB0, USB1, USB2, USB4, USB5 поддерживается USB 2.0 (USB1 с поддержкой хаба),

  • USB3 поддерживается USB 3.0 (USB0).

Примечание:

  • Наименования интерфейсов приведены в соответствии с спецификацией SMARC 2.1.

  • В скобках указаны контроллеры MCom-03.

Прошивка eMMC

Память eMMC доступна как стандартное блочное устройство Linux /dev/mmcblk0p2. eMMC может прошиваться тем же образом, что и SD-карта.

Для прошивки достаточно:

  • загрузить Linux с карты памяти SD;

  • скопировать образ для прошивки eMMC на SD-карту;

  • прошить eMMC командой dd (см. howto-flash-sd);

  • обновить корневую файловую систему в extlinux.conf на eMMC.

Поддержка ROCK Pi N10

В ОС Linux поддерживаются следующие интерфейсы и компоненты модуля:

  • Ethernet (1 Гб/с),

  • HDMI, поддерживается только видео, см. Поддержка HDMI,

  • I2C0,

  • I2C1,

  • I2C2,

  • I2C3,

  • microSD,

  • UART2 (подключен к SER1 SMARC-модуля),

  • USB 2.0 (2 порта),

  • USB 3.0 (1 порт).

Запуск ОС

Для запуска ОС необходимо:

  1. Установить джампер режима Boot 0 (QSPI0).

  2. Подключить переходник USB-to-UART к UART2 модуля (пример подключения), подключить переходник к ПК.

  3. Подключить HDMI-дисплей к модулю.

  4. Подключить блок питания USB type C.

  5. На ПК открыть терминал, залогиниться (пользователь/пароль — см. intro).

  6. Если на HDMI-дисплей не выводится видео, выполнить перезапуск HDMI, см. Поддержка HDMI.

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

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

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

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

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

    sudo dd if=mcom03-altlinux-sdcard-...img of=/dev/sdX bs=4M && sync
    
  3. Для загрузки с SD-карты в extlinux.conf SD-карты требуется изменить путь до корневой файловой системы:

    • root=/dev/sda2 — на модуле ТрастФон_ПМ,

    • root=/dev/mmcblk1p2 — на модуле ELV-MC03-SMARC.

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

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

Образы прошивок для QSPI-памятей соответствующих модулей перечислены в Состав сборки.