SMARC-R-QuikStart
Модуль отладочный ELV-MC03-SMARC-R ● Быстрый старт
Модуль отладочный ELV-MC03-SMARC-R (RockPI N10) на основе СнК СКИФ.
В этой статье будет рассмотрен базовый и ознакомительный сценарий использования отладочного модуля.
В комплект поставки входят:
- Этикетка.
- Комплект ELV-SMARC-R. Он уже собран и готов к работе. Комплект состоит из трёх основных частей:
- Mодуль ELV-RPN10. Это отладочная плата ROCK Pi N10 с нашими доработками.
- На плату ROCK-Pi установлен модуль ELV-MC03-SMARC.
- Поверх смарка утановлена система охлаждения.
- Адаптер USB-UART.
- Кабель USB Type-C.
- Блок питания USB Type-C.
- Карта памяти microSD.
Первый запуск модуля
Прежде всего необходимо подключить модуль к компьютеру по UART. Для этого нужно подключить провода кабеля USB-UART к пинам 6, 8 и 10, как показано здесь. Красный провод подключать не нужно.
При подключении адаптера USB-UART к компьютеру он должен определиться в диспетчере устройств среди COM-портов (Windows) или как устройство вида /dev/ttyUSBn
(Linux). Если плата не определяется, то, вероятнее всего, вам нужно установить драйвер преобразователя USB-UART. Обычно это драйвер от Silabs, Prolific либо FDTI.
После того, как плата определилась, можно подключаться к ней по UART. Для этого открыть эмулятор терминала (например PuTTY или minicom).
Подключить в HDMI разъем монитор, USB клавиатуру и мышь, Ethernet-кабель (опционально)
При подаче питания сразу же стартует U-Boot и начинает загрузку Linux.
Наши модули поставляются с уже прошитыми в память eMMC образом ALT Linux.
По окончанию загрузки на монитор по HDMI выводится интерфейс xfce4 ALT Linux.
Выведем информацию о системе:
[elvees@skif ~]$ cat /etc/os-release NAME="Simply Linux" VERSION="9.1 (Destiny)" ID=altlinux VERSION_ID=9.1 PRETTY_NAME="Simply Linux 9.1 (Destiny)" ANSI_COLOR="1;36" CPE_NAME="cpe:/o:alt:slinux:9.1" HOME_URL="https://www.basealt.ru/products/simplylinux/" BUG_REPORT_URL="https://bugs.altlinux.org/" [elvees@skif ~]$ uname -a Linux skif 4.19.106 #1 SMP Wed Mar 22 02:22:37 UTC 2023 aarch64 GNU/Linux
Обновление Linux
Модуль прошивается текущим на момент отгрузки образом AltLinux. Но может возникнуть необходимость запустить на модуле более новую (или другую) версию Linux.
Для SMARC доступны два варианта дистрибутивов:
- Buildroot
- AltLinux
Исходники и образы лежат тут - https://dist.elvees.com/mcom03/
Buildroot собирается на ПК и полученный образ загружается на uSD или eMMC. Модификация образа (установка доп пакетов или модулей ядра) местами невозможна или затруднительна. Необходимые пакеты и модули конфигурируются на этапе сборки.
Сборка AltLinux использует ядро и некоторые компоненты от Buildroot. Как вручную изменить конфигурацию Alt - MCom03-Linux#Сборка AltLinux.
Обратите внимание на версии вида 2023-03 и т.п.
Загрузка Linux выполняется по следующей схеме:
POWER_ON --> BootROM --> SBL(U-Boot) --> Linux (подробнее bootflow)
SBL и Linux должны быть из одного выпуска и одной версии (например оба Alt 2023-03 и Buildroot). Образ QSPI mcom03-rockpi-sbl-*.bin
идентичен sbl.bin
Если версия sbl не соответствует версии Linux, могут возникать проблемы, самые частые из них:
- uboot не может найти и правильно загрузить
extlinux.conf
- Linux не получает IP адрес по DHCP
- Самопроизвольные перезагрузки
- Не стартует драйвер DSP
Прошивка QSPI-flash
Для прошивки QSPI образом sbl.bin
используется утилита mcom03-flash-tools. Инструкция по использованию в README.
Краткий порядок действий:
- Снять джампер с 25-26 контактов
- Подключить плату к ПК через USB-UART
- Получить образ для прошивки
sbl.bin
- Он собирается вместе с Linux в Buildroot либо его можно скачать с dist. - Включить питание и прошить модуль командой из инструкции выше.
- Отключить питание и установить перемычку
Прошивка Linux на uSD
Для прошивки microSD образом Linux используется утилита tar2dev.
Подробное руководство тут - https://dist.elvees.com/mcom03/docs/linux-sdk/latest/components/buildroot.html#sd.
Запуск модуля после изменений
- Нужно убедиться, что перемычка 25-26 УСТАНОВЛЕНА.
- Подключить USB-UART
- Включить питание модуля.
- В UART консоль должна начать показываться загрузка
В QSPI памяти есть область под прошивку и область под переменные окружения (ENV).
При перепрошивки QSPI утилитой mcom03-flash область ENV не перезаписывается и данные в ней остаются прежними. Из-за этого при запуске могут возникнуть другие ошибки:
Found /boot/extlinux/extlinux.conf Retrieving file: /boot/extlinux/extlinux.conf Reading file would overwrite reserved memory Failed to load '/boot/extlinux/extlinux.conf' Error reading config file SCRIPT FAILED: continuing... "Synchronous Abort" handler, esr 0x96000005
В таком случает надо выполнить сброс ENV (записываются дефолтные значения из прошивки)
- Перезагрузить плату
- Зайти в консоль u-boot
- выполнить:
env default -a
saveenv
boot
Об extlinux.conf и порядке загрузки
В u-boot есть переменная boot_targets
- в ней перечислены интерфейсы через которые u-boot будет пытаться загрузить Linux.
Например, она может содержать следующую строку mmc0 mmc1 usb pxe
увидеть это можно так printenv boot_targets
.
Это значит, что u-boot будет по очереди перебирать интерфейсы mmc0 (eMMC распаянная на модуле SMARC), mmc1 (uSD при наличии), USB(при наличии) и т.д. U-boot ищет файл /boot/extlinux/extlinux.conf
. Этот файл считывается с первого найденного устройства. В нем указано устройство для загрузки. ROOT=/dev/mmcblk1p1
- значит загрузка Linux будет выполняться с внешней uSD.
Обратите внимание, boot_targets
- это порядок опроса устройств на наличие файла extlinux.conf, а непосредственно откуда загружать ядро и файловую систему указывает параметр ROOT в файле extlinux.conf
.
Например: подключена uSD карта и установлен boot_targets = mmc1
, но на sd карте в extlinux.conf в параметре ROOT задано /dev/mmcblk0p1
- что означает eMMC.
- Uboot сканирует mmc1 и находит там конфиг
- Считывает параметр ROOT
- И загружает Linux из eMMC! (потому что так указано в ROOT, несмотря на то, что
boot_targets
только mmc1)
При прошивке uSD рекомендуется использовать "полную версию" tar2dev как описано в руководстве.
ROOT=/dev/mmcblk1p1 tar2dev -n newhostname rootfs.tar.gz /dev/sdX
После прошивки в extlinux.conf будет задан параметр ROOT для дальнейшей загрузки Linux с uSD.
Сборка дистрибутива Buildroot
Сборка "кастомного" дистрибутива выходит за рамки начального базового использования и будет рассмотрена в другой статье.
См. также
- Linux SDK - Руководство программиста - https://dist.elvees.com/mcom03/docs/linux-sdk/latest/index.html
- Видео - Распаковка комплекта отладочного SMARC-R - https://rutube.ru/video/b423aad6e4da46012677ad940981c432/