Skip to content

elvees/mcom02-flash-tools

Repository files navigation

Инструменты прошивки модулей на базе MCom-02

Python-пакет mcom02-flash-tools содержит утилиты для прошивки памятей на модулях на базе СнК 1892ВМ14Я (aka MCom-02).

Установка

Проверялось на Python 3.8. Требуются свежие версии pip, setuptools:

export PATH=~/.local/bin:$PATH
python3 -m pip install --upgrade --user pip
hash pip3
pip3 install setuptools --upgrade

Пакет mcom02-flash-tools является стандартным пакетом Python. Установка выполняется любым из методов:

git clone https://github.com/elvees/mcom02-flash-tools.git
cd mcom02-flash-tools
pip3 install . --user

# or if you want to hack the code
pip3 install -e . --user

# or just
pip3 install git+https://github.com/elvees/mcom02-flash-tools.git --user

export PATH=~/.local/bin:$PATH
mcom02-flash-spi --help

Note

Пакет использует пакет setuptools-scm. При установке требуется директория .git. Установка из zip-файла, не содержащего .git (например, zip-файл, загруженный через веб-интерфейс GitHub Download ZIP), не поддерживается.

Прошивка флеш-памяти SPI0

Прошивка выполняется утилитой mcom02-flash-spi. Прошивка выполняется по интерфейсу UART0:

  • MCom-02 загружается в режиме BootROM UART.
  • ПК передаёт Intel-HEX файл по UART.
  • BootROM прошивает файл в SPI0.

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

  • Салют-ЭЛ24Д1 r1.3;
  • Салют-ЭЛ24Д1 r1.4;
  • Салют-ЭЛ24Д1 r1.5;
  • Салют-ЭЛ24Д2 r1.1;
  • Салют-ЭЛ24ОМ1 r1.1 с установленным Салют-ЭЛ24ПМ1 r1.1 Салют-ЭЛ24ПМ1 r1.2;
  • Салют-ЭЛ24ОМ1 r1.2 с установленным Салют-ЭЛ24ПМ1 r1.2, Салют-ЭЛ24ПМ2 r1.0 или Салют-ЭЛ24ПМ2 r1.1.

Для прошивки выполнить:

  1. Подготовить модуль и стенд для прошивки:
    1. Отключить питание модуля, отключить все кабели от модуля.
    2. Установить переключатели BOOT выбора режима загрузки на модуле в режим UART: 1 — OFF, 2 — ON, 3 — OFF (подробнее см. документ "Руководство пользователя" на соответствующий модуль).
    3. Подключить переходник UART-USB к порту UART0 модуля и к порту USB ПК.
    4. На ПК убедиться, что не запущены приложения (например, Putty, minicom) работающие с /dev/ttyUSB или COM-портом ПК.
    5. Подключить модуль к источнику питания.
  2. В терминале ПК ввести команду для запуска скрипта прошивки SPI флеш-памяти:

    mcom02-flash-spi -p <device> <image-path>

    где <device>/dev/ttyUSB (или COM-порт), на котором проинициализирован драйвер UART-USB переходника, <image-path> — путь до файла прошивки SPI флеш-памяти.

    Например:

    mcom02-flash-spi -p /dev/ttyUSB1 uboot-spiflash.img

    Прошивку памяти считать завершённой успешно при выводе сообщения Checking succeeded. Для файла размером ~300КБ процесс прошивки занимает около 4 минут, включая проверку записанного образа.

    Warning

    Для перезагрузки модуля в режиме загрузки по UART должно использоваться отключение питания модуля. Не допускается использование кнопки RESET, расположенной на модуле.

  3. Отключить питание модуля.
  4. Установить переключатели BOOT выбора режима загрузки на модуле в режим SPI: 1 — ON, 2 — ON, 3 — OFF.

Прошивка заводских настроек в SPI0

Заводские настройки специфицируются документом Спецификация заводских настроек модулей на базе 1892ВМ14Я.

Прошивка заводских настроек выполняется утилитой mcom02-flash-factory. Для использования утилиты модуль должен быть прошит загрузчиком U-Boot:

  • MCom-02 загружает U-Boot с SPI0.
  • Утилита mcom02-flash-factory останавливает автозагрузку, переводит U-Boot в режим терминала.
  • Утилита подаёт команды U-Boot для чтения/записи заводских настроек.

Важно: утилита должна запускаться до включения питания (или сброса) процессора. В противном случае утилита не успеет перевести U-Boot в режим терминала и U-Boot загрузит Linux.

Печать заводских настроек:

mcom02-factory-settings print -p /dev/ttyUSB0

Очистка заводских настроек:

mcom02-factory-settings clear -p /dev/ttyUSB0

Запись заводских настроек:

mcom02-factory-settings flash \
  factory_eth_mac=00:11:22:33:44:55 \
  factory_serial=112233 \
  factory_model=elvees,salute-el24d1-r1.3 \
  -p /dev/ttyUSB0

Прошивка eMMC в режиме USB-устройства

В случае если USB-порт MCom-02 разведён на плате в режиме USB-устройства (например, модуль Салют-ЭЛ24ПМ1 r1.2 установленный в специализированную плату-носитель), то прошивка eMMC или SD-карты возможна по USB:

  • MCom-02 загружает U-Boot с SPI0;
  • Утилита mcom02-flash-ums-mmc останавливает автозагрузку, переводит U-Boot в режим терминала.
  • Утилита подаёт команды U-Boot для перевода MCom-02 в режим USB Mass Storage (UMS), например, память eMMC установленная на плате Салют-ЭЛ24ПМ1 r1.2 становится доступной на ПК в виде флеш-накопителя.
  • Утилита обнаруживает новое UMS-устройство на ПК.
  • Утилита записывает образ в UMS-устройство (eMMC-память модуля).

Note

Работа утилиты возможна только в ОС Linux.

Note

Для работы утилиты в U-Boot должна быть включена поддержка UMS.

Пример прошивки eMMC-памяти на Салют-ЭЛ24ПМ1 r1.2 (модуль должен быть установлен в специальную плату-носитель с USB-портом разведённым в режиме USB-устройства или в режиме USB OTG. На модуле Салют-ЭЛ24ОМ1 USB разведён в режиме хост, прошивка eMMC данной утилитой невозможна):

mcom02-flash-ums-mmc /dev/ttyUSB0 <path-to-emmc-image> --status

Тестирование

Тестирование может выполняться на модуле Салют-ЭЛ24ПМ установленном на стенде ПМ-УКФ.

Для запуска тестов необходимо указать порты УИП, терминала модуля и путь к образу прошивки.

Для определения портов запустить:

for k in /dev/ttyUSB*; do echo $k; uip-ctl $k status; done

Скачать образ U-Boot для ПМ-УКФ и распаковать:

wget https://callisto.elvees.com/jenkins/view/MCom-02/job/mcom02-buildroot-buildroot-distrib/lastSuccessfulBuild/artifact/output/internal/mcom02-salute-el24pm2-r1.0-1.1-ukf-r1.1-uboot-v3.1.4-80-gd83fa4d-2021-09-26.img.gz
gunzip *.gz

Установить зависимости в Python-среду:

pip3 install -r test-requirements.txt

Запуск тестов:

pytest --dut-term=<dut_term> --uip-term=<uip_tty> --img=<img_file>

где <dut_term> --- порт терминала модуля, <uip_term> --- порт УИП, <img_file> --- файл с образом прошивки U-boot.