13.5. Инструменты MicroPython

Проект MicroPython поставляет инструментарий для хост-стороны вместе с самим языком. Два из этих инструментов полезны для любого рабочего процесса с OpenMV cam, который существует вне IDE; оба устанавливаются из PyPI одной командой, и оба работают с тем же интерфейсом USB serial / файловой системы, который камера уже предоставляет.

13.5.1. mpremote

mpremote — это альтернатива OpenMV IDE из командной строки. Одна команда покрывает то, что IDE делает через свой файловый браузер, терминал и кнопку запуска скрипта: подключение к камере по USB serial, управление REPL, копирование файлов в файловую систему камеры и обратно, запуск скрипта на хост-стороне против камеры без его загрузки, а также установка сторонних пакетов с помощью mip:

$ pip install --user mpremote
$ mpremote                          # interactive REPL
$ mpremote cp main.py :             # upload to cam
$ mpremote run local_script.py      # run host script on cam
$ mpremote ls                       # list cam filesystem
$ mpremote mip install aioble       # install package on cam

Это подходящий инструмент для автоматизированных тестовых стендов, развёртываний без дисплея, CI-скриптов, которые прошивают свежий образ и запускают дымовой тест, а также для любого рабочего процесса, где запуск графического интерфейса избыточен. Справочник по mpremote документирует каждую команду и опцию.

13.5.2. mpy-cross

mpy-cross — это кросс-компилятор, который превращает исходный файл .py в двоичный контейнер .mpy, готовый к импорту на камере. Предварительная компиляция избавляет камеру от разбора исходного кода при импорте, даёт меньший размер на диске и является единственным путём для функций, помеченных декораторами @native и @viper, которым нужна сборка, соответствующая архитектуре MCU камеры:

$ pip install --user mpy-cross
$ mpy-cross foo.py
$ mpremote cp foo.mpy :

Для замороженных модулей, встроенных в образ прошивки, и для разделов ROMFS, поставляемых вместе с ним, тот же инструмент запускается автоматически в рамках сборки прошивки — система сборки вызывает mpy-cross для каждого .py в scripts/ на пути к созданию .bin. Прямой вызов нужен приложению, когда оно хочет поставлять .mpy отдельно от прошивки или управлять компилятором из скрипта сборки.

Раздел mpy-cross справочника по файлам .mpy охватывает флаги командной строки, уровни оптимизации, матрицу -march и точки входа модулей Python.