Перейти к основному содержимому

SMARC-R Быстрый старт

Модуль отладочный ELV-MC03-SMARC-R (RockPI N10) на основе СнК СКИФ.

Видео • Распаковка модуля

к сведению

В этой статье будет рассмотрен базовый и ознакомительный сценарий использования отладочного модуля.

В комплект поставки входят:

  1. Этикетка.
  2. Комплект ELV-SMARC-R. Он уже собран и готов к работе. Комплект состоит из трёх основных частей:
    • Mодуль ELV-RPN10. Это отладочная плата ROCK Pi N10 с нашими доработками.
    • На плату ROCK-Pi установлен модуль ELV-MC03-SMARC.
    • Поверх смарка утановлена система охлаждения.
  3. Адаптер USB-UART.
  4. Кабель USB Type-C.
  5. Блок питания USB Type-C.
  6. Карта памяти 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. Модификация образа (установка доп пакетов или модулей ядра) местами невозможна или затруднительна. Необходимые пакеты и модули конфигурируются на этапе сборки.

Обратите внимание на версии вида 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.

Краткий порядок действий:

  1. Снять джампер с 25-26 контактов.
  2. Подключить плату к ПК через USB-UART.
  3. Получить образ для прошивки sbl.bin - Он собирается вместе с Linux в Buildroot либо его можно скачать с dist.
  4. Включить питание и прошить модуль командой из инструкции выше.
  5. Отключить питание и установить перемычку.

Прошивка Linux на uSD

Для прошивки microSD образом Linux используется утилита tar2dev.

Подробное руководство тут - https://dist.elvees.com/mcom03/docs/linux-sdk/latest/components/buildroot.html#sd.

Запуск модуля после изменений

  1. Нужно убедиться, что перемычка 25-26 УСТАНОВЛЕНА.
  2. Подключить USB-UART.
  3. Включить питание модуля.
  4. В 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 (записываются дефолтные значения из прошивки)

  1. Перезагрузить плату.
  2. Зайти в консоль u-boot.
  3. Выполнить: 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.

  1. Uboot сканирует mmc1 и находит там конфиг
  2. Считывает параметр ROOT
  3. И загружает 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 • Руководство программиста
Видео • Распаковка модуля