MCom-03 (СКИФ) ALT Linux 2022.02¶
Обзор¶
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.
Изменения в сборке¶
Общие изменения:
В данном документе добавлена глава Сборка исходных кодов.
Linux: Исправлены ошибки инициализации PCIe-карт.
Linux: Исправлена ошибка неработоспособности Ethernet 100 Мб/с.
Linux: Добавлен драйвер pinctrl для LSPERIPH0, LSPERIPH1.
Linux: Добавлена базовая поддержка управления частотами.
Linux: Для уменьшения тока потребления отключены тактовые частоты неиспользуемых блоков подсистемы SDR.
Linux: Уточнены тайминги I2C.
U-Boot: Уточнены тайминги I2C.
U-Boot: Добавлен драйвер NAND Flash Controller (NFC).
U-Boot: Включен драйвер QSPI. Добавлена поддержка переменных окружения в QSPI0.
U-Boot: Изменён порядок загрузки: сперва проверяется
extlinux.conf
с SDMMC1, затем с SDMMC0.
Изменения для ROCK Pi N10 с установленным ELV-MC03-SMARC r1.1:
ddrinit: Добавлено включение питания PMIC DDR1 на ELV-MC03-SMARC.
Linux: Добавлена поддержка разъёма PCIe M.2 на ROCK Pi N10.
Изменения для ТрастФон:
Добавлена поддержка LTE-модема в режиме voice call.
Важно
Ядро Linux данной сборки несовместимо с загрузчиком U-Boot предыдущих версий. Для корректной работы требуется перепрошивка QSPI и eMMC/SD-карты модуля.
Состав сборки¶
Сборка 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/2022.02.
Состав образа 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 (при установке созданы пользователи, настроен часовой пояс и т.д.).
Добавлены файлы:
/lib/modules/*
— модуля ядра Linux./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 — d688da5f694b24c47c2b11eda78d9e4c28314de5,
ddrinit — 24bf7fe0a9c67244d8f6ebcb8a32291d0c60a54f,
linux — e50cee65781d866a573c83850870be19fa3a98ed,
mcom03-sbl — 800e6fc2b68b7d277f06e93bd861f77146c12765,
uboot — 222ea584b0077f6eaa99af963cbf827913c7cbfc.
Поддержка 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 и ядро в ОЗУ, передаёт управление ядру).
Последовательность загрузки приведена на диаграмме:
Последовательность загрузки Linux (в скобках указан источник исполнения)¶
Поддержка ELV-MC03-SMARC r1.1¶
В ОС Linux поддерживаются следующие интерфейсы и компоненты модуля:
HDMI, поддерживается только видео, см. Поддержка HDMI,
eMMC (SDMMC0),
I2C0,
I2C1,
I2C2,
I2C3,
GBE0,
GBE1,
MIPI DSI,
PCIe A 4x (PCIe1),
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 (подключен к SDIO SMARC-модуля),
PCIe M.2 (подключен к PCIe_A 4x SMARC-модуля),
UART2 (подключен к SER1 SMARC-модуля),
USB 2.0 (2 порта),
USB 3.0 (1 порт).
Запуск ОС¶
Для запуска ОС необходимо:
Установить джампер режима Boot 0 (QSPI0).
Подключить переходник USB-to-UART к UART2 модуля (пример подключения), подключить переходник к ПК.
Подключить HDMI-дисплей к модулю.
Подключить блок питания USB type C.
На ПК открыть терминал, залогиниться (пользователь/пароль — см. intro).
Если на HDMI-дисплей не выводится видео, выполнить перезапуск HDMI, см. Поддержка HDMI.
Инструкции¶
Сборка исходных кодов¶
Для сборки образа QSPI0 SBL или ядра Linux используется тулчейны и скрипты из Buildroot с поддержкой микросхемы https://dist.elvees.com/mcom03/buildroot/.
Для сборки с произвольными версиями базовых компонентов необходимо:
Скачать и распаковать исходные коды Buildroot, например:
wget https://dist.elvees.com/mcom03/buildroot/20220216/rockpi/rockpi-defconfig-src.tar.gz tar -xf rockpi-defconfig-src.tar.gz cd rockpi-defconfig-src
Склонировать в произвольную директорию перечисленные выше компоненты (U-Boot, Linux, mcom03-sbl):
git clone https://github.com/elvees/....
Создать файл
buildroot/local.mk
. В файле добавить строки с путями до склонированных репозиториев:ARM_TRUSTED_FIRMWARE_OVERRIDE_SRCDIR = <abspath to local TF-A> DDRINIT_OVERRIDE_SRCDIR = <abspath to local ddrinit> LINUX_OVERRIDE_SRCDIR = <abspath to local Linux> MCOM03_SBL_OVERRIDE_SRCDIR = <abspath to local mcom03-sbl> UBOOT_OVERRIDE_SRCDIR = <abspath to local U-Boot>
Подробнее про
local.mk
см. «8.14.6. Using Buildroot during development» в главе https://buildroot.org/downloads/manual/manual.html#_advanced_usage.Запустить сборку (образы собираются в директории
buildroot/output/images
):make # or to build in docker ENABLE_NETWORK=1 ./docker-build.sh make
Прошивка SD-карты¶
Прошивка SD-карты выполняется на ПК:
Определить имя устройства SD-карты на ПК (извлечь SD-карту из считывателя карт ПЭВМ, считать список устройств командой
ls -la /dev/sd*
, установить SD-карту в ПК, повторно считать список устройств, обнаружить новое устройство/dev/sdX
).Записать образ на SD-карту:
sudo dd if=mcom03-altlinux-sdcard-...img of=/dev/sdX bs=4M && sync
Для загрузки с 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-памятей соответствующих модулей перечислены в Состав сборки.