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. Модификация образа (установка доп пакетов или модулей ядра) местами невозможна или затруднительна. Необходимые пакеты и модули конфигурируются на этапе сборки.
Обратите внимание на версии вида 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
Сборка "кастомного" дистрибутива выходит за рамки начального базового использования и будет рассмотрена в другой статье.
См. также: