14.5. Заключение

Вы прошли весь жизненный цикл камеры – от работающего стендового скрипта до отгруженного продукта:

  • Пользовательские сборки прошивки – среда разработки, сборка образа прошивки из исходного кода, прошивка его на камеру и путь отладки от VS Code Cortex-Debug до командной строки gdbrunner, когда что-то идёт не так на стороне прошивки.

  • Отгрузка приложения – встраивание кода приложения в прошивку через замороженные модули, встраивание ресурсов в образ ROMFS и порядок поиска, определяющий, какую копию файла среда выполнения фактически загружает при загрузке. Получающееся разделение: boot.py для настройки окружения до REPL, main.py как точка входа приложения, замороженный main.py для точки входа и ROMFS для всего остального.

  • Усиление для производства – библиотека logging, пишущая по известному пути, machine.WDT, обновляемый раз за итерацию главного цикла, верхнеуровневый try / except, превращающий сбои в зарегистрированные события вместо сбросов, гигиена файловой системы, сохраняющая операции с файлами быстрыми по мере того как приложение накапливает записи месяцами в полевых условиях, и – когда того требует продукт – защита флеш-памяти от считывания.

  • Продвинутый материал – TLS-сертификаты для камер, которым нужно аутентифицироваться в сетевых сервисах и шифровать трафик с ними.

Отгруженная камера имеет всё это на месте: её код приложения выполняется из образа прошивки, её сторожевой таймер обновляется раз за итерацию главного цикла, её журнал попадает в датированный каталог на SD-карте, и – когда того требует продукт – её флеш-память заблокирована от считывания.

14.5.1. Куда двигаться дальше

Производство – последняя глава руководства. Отсюда документация разделяется на справочный материал:

  • В справочнике по библиотекам представлено алфавитное «как точно называется этот вызов» описание каждого модуля, который предоставляет камера – machine, logging, os, csi, image, ml и остальные.

  • В страницах краткого справочника по платам рассмотрены особенности каждой камеры из линейки продуктов OpenMV – распиновки, монтируемые шины, идентификаторы плат, доступность периферии и небольшие различия, которые имеют значение, когда приложение должно работать на конкретной плате.

  • В справочных страницах по датчикам и справочных страницах по шилдам рассмотрены отдельные датчики изображения и дополнительные шилды, которые может нести камера – характеристики каждой части, распиновки и заметки, нужные приложению при выборе датчиков и шилдов для сборки.

  • В справочнике по языку MicroPython рассмотрен сам язык – различия в синтаксисе с CPython, особенности реализации, которые имеют значение, когда скрипт работает на стыке двух, и справочник по встроенному ассемблеру для редкого случая, когда Python слишком медленный.

Руководство – это путь от «у меня в руках новая камера» до «я отгрузил продукт». Отсюда камера становится одним из элементов более крупной системы, за которую отвечает приложение, и эта работа – дело самого приложения.