v4.8.1

v4.8.1 построена на Qt Creator 14.0.2 и сосредоточена на новом высоконадёжном протоколе камеры OpenMV V2, встроенном профилировщике кода (Code Profiler) и рабочем процессе сохранения, при котором камера остаётся примонтированной вместо извлечения. Поставляемая прошивка и полный набор примеров обновлены до 4.8.1. Изменений в API скриптов нет, но поведение «сохранение больше не извлекает» и удаление нескольких последовательных флагов запуска являются заметными для пользователя изменениями рабочего процесса.

Основные моменты

  • OpenMV Protocol V2 — это новый высоконадёжный стек камеры (OMVCamera/OMVTransport/OMVDebug) с CRC32, нумерацией последовательностей, ACK/NAK, повторной передачей, событиями и фрагментацией. Он автоматически согласуется при подключении и управляет сбросом, загрузкой, потоковой передачей, выполнением скриптов и статистикой.

  • Code Profiler — это новое окно (Window > Show Code Profiler), которое опрашивает записи профилирования по функциям с камеры и показывает количество вызовов, минимальные/максимальные/суммарные/средние микросекунды (мкс), среднее число циклов, процент и счётчики событий в сортируемой таблице.

  • Сохранение на месте больше не извлекает накопитель камеры; теперь IDE записывает main.py и сбрасывает том на диск, поэтому устройство остаётся примонтированным.

  • Обнаружение нескольких датчиков сообщает о каждой камере на плате, что отображается в строке состояния как Sensors: X, Y с главным датчиком в начале списка.

  • Динамическое чтение кадров заново вычисляет оптимальное разрешение сырого потока для каждого формата пикселей и автоматически переконфигурирует поток.

  • Поставляемая прошивка и примеры обновлены до 4.8.1 для всех плат, добавлены новые примеры для событийной камеры GenX320, машинного обучения TensorFlow, OLED-дисплея Alif и шилдов LCD/Touch-LCD.

Новые возможности

  • Добавлен протокол связи OpenMV V2: полноценный транспортный и транзакционный уровень с CRC32, нумерацией последовательностей, ACK/NAK, повторной передачей, событиями и фрагментацией, а также класс OMVCamera, автоматически согласуемый при подключении и интегрированный в последовательный драйвер (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Добавлено окно Code Profiler (Window > Show Code Profiler), которое опрашивает записи профилирования по функциям и отображает количество вызовов, минимальные/максимальные/суммарные/средние микросекунды (мкс), среднее число циклов, процент и счётчики событий, сопоставляя адреса с символами через встроенный парсер ELF ELFIO (019d3cd2c, 57cd9e1cc).

  • Добавлено диалоговое окно Debug Protocol Settings, отображающее в реальном времени System Info, Host Stats и Device Stats с обновлением каждую секунду, открывающее доступ к частотам опроса по каждому каналу, а также к управлению объединённым и раздельным опросом (5220a6125, 0da2f79d0).

  • Добавлено обнаружение нескольких датчиков: плата с более чем одной камерой сообщает обо всех из них в строке состояния как Sensors: X, Y, главный датчик первым (cebc79ce7).

  • Добавлено динамическое чтение кадров (включено по умолчанию), которое заново вычисляет оптимальное разрешение сырого потока для каждого формата пикселей (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) и переконфигурирует поток (75c073bdb, 0da2f79d0).

  • Добавлено декодирование буфера кадра для сырых форматов пикселей BINARY (1-битный монохром) и ARGB8 (32-битный с альфа-каналом), так что эти типы изображений теперь отображаются в просмотрщике (dabb82062).

  • В Windows функция Connect теперь сканирует USB-устройства, помеченные ОС как проблемные, и предупреждает списком неисправных устройств, которые могут блокировать подключение (1a5beb081, 1b59cd78e).

  • Добавлен индикатор регистрации в строке состояния: зелёная кнопка Registered или коралловая Unregistered для подключённой камеры, по нажатию на которую можно зарегистрировать плату (a8c98a4b9).

  • Просмотрщик буфера кадра теперь может отображать вместо изображения отцентрированное текстовое сообщение, отправленное из работающего скрипта через новый управляющий код FB_MESSAGE (530048201).

  • Добавлены новые записи в model-zoo: модели оценки глубины ST FastDepth (224/256/320), модель позы ключевых точек головы от ST, модели рук для обнаружения ладони и ключевых точек руки, а также фронтальная модель обнаружения лиц BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Добавлен скрипт самотестирования только для заводской сборки (камера, IMU, ToF, WiFi, LAN), который поставляется и автоматически открывается при запуске в заводском варианте IDE (0db7fbbb0); часть теста для LAN на RT1060 в настоящее время отключена (48370d022).

Прочие изменения и улучшения

  • Сохранение на месте: сохранение скрипта больше не извлекает накопитель камеры; IDE записывает main.py и сбрасывает том на диск (FlushFileBuffers в Windows, syncfs в Linux, sync_volume_np/F_FULLFSYNC в macOS), поэтому устройство остаётся примонтированным (1614c572f, 6928b51ea, 35ed53967).

  • Действия панели инструментов, выполненные во время занятости камеры (отключение буфера кадра, JPEG-сжатие, сохранение скрипта, настройка параметров), теперь ставятся в очередь и выполняются автоматически, когда устройство освобождается, вместо показа диалога ошибки Busy (f4315f0a4).

  • Просмотрщик буфера кадра теперь по умолчанию использует режим вписывания, поэтому изображение автоматически масштабируется под окно при запуске, а панель вывода последовательного терминала теперь отображается по умолчанию при запуске (f3ce4dc75).

  • Скомпилированные файлы моделей с расширением .lite теперь распознаются везде: при фильтрации и отображении в браузере model-zoo, при выравнивании ROMFS прошивки, а компиляторы Vela/STEdge AI теперь выдают вывод .lite (f3ce4dc75).

  • Диалог компиляции моделей STEdge AI (N6) теперь разбирает и сообщает проценты использования NPU RAM и hyperRAM и копирует перемещённый вывод сети в файл с расширением, соответствующим расширению модели (f3ce4dc75).

  • Браузер model-zoo теперь показывает столбец Size с размером файла и растягивает столбец имени по ширине вместо того, чтобы скрывать размер (f3ce4dc75).

  • Шаблон нового скрипта обновлён под новый API модуля csi и по умолчанию использует разрешение VGA, а поставляемый пример Hello World переключён с QVGA на VGA (f3ce4dc75).

  • Диалог Convert Video был переписан с использованием общего диалога загрузчика с цветным выводом, сообщениями об успехе/неудаче, кнопкой OK для закрытия и понятной ошибкой, когда FFMPEG недоступен на платформе (f56efc7be).

  • Просмотрщик буфера кадра теперь показывает мигающее предупреждение, когда изображение JPEG/PNG слишком велико для буферизации и отправки, через новый управляющий код FB_BUFFER_ERROR (fda826126).

  • Вход в загрузчик DFU теперь принудительно оставляет загрузчик резидентным на прошивке с протоколом V2, с определением версии, которое откатывается на обычный сброс на старых загрузчиках (<1.0.2), которые могли зависнуть при принудительном входе (975857221).

  • Переименованы и реорганизованы папки моделей обнаружения объектов от ST (st_yolo_lc_v1 в yolo_lc, tiny_yolo_v2 в yolo_v2, модели людей yolov8n в файлы с простыми именами по размеру) и удалены крупные варианты int8 tiny_yolo_v2 (34240cc3c).

  • Тайминги последовательного порта теперь настраиваются через ключи переопределения protocol в файле прошивки settings.json (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait и ключи V2 overrideCRC/overrideSEQ/overrideACK) вместо флагов командной строки во время запуска (019d8bf1d).

  • Установлено ограничение длины строки языкового сервера Python в 120 столбцов для flake8 и pycodestyle, чтобы длинные строки больше не помечались по умолчанию на 79 (dabb82062).

  • Уменьшен набор поставляемых моделей машинного обучения путём перемещения коллекции моделей Qualcomm и google/mobilenet_v1 в models_unused для сокращения размера установщика (c44ddba20).

Исправления ошибок

  • Диалоги прогресса загрузки прошивки и обновления ресурсов были сделаны устойчивыми к сбоям с помощью защит QPointer, поэтому они больше не используют удалённый диалог, если он закрывается в середине загрузки (f3ce4dc75).

  • Сканирование накопителей теперь продолжает пересканирование, пока не будет найден USB-накопитель камеры, и очищает устаревшие записи о накопителях при отключении, устраняя прежний костыль с одноразовым таймером (a31d41b4e).

  • Несколько исправлений подключения и последовательного порта: скрытые датчики (например, SoftCSI) больше не загромождают отображаемый тип датчика, таймер keep-alive последовательного порта в Windows предотвращает зависания USB, Start больше не перезапускает уже работающий скрипт, а канал камеры корректно отключается при закрытии порта (a8e467be6).

  • В представлении профилировщика восстановлен выбор счётчиков событий PMU по каждому столбцу (отмечаемые меню событий) и сохранение состояния счётчиков/заголовков, которое было временно отключено (40c679e90).

Поддержка платформ и инструментов

  • База Qt Creator: 14.0.2.

  • Поставляемая прошивка: обновлена с 4.7.0 до 4.8.1, с пересборкой прошивки для OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 и плат Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • Исправлено рукопожатие версии протокола в macOS для плат RT1062 и AE3 путём разбиения многокомандной USB-передачи на части размером USBDBG_LEN, которые эти платы могут обработать (6b9d5f842).

  • Переработан поставляемый пакет драйверов Windows: добавлены подписанные файлы драйверов .cat/.inf для каждой платы (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062), а CDC-драйверы последовательного порта перемещены в новую папку openmvcdc с автоустановщиком на основе dpinst (439557829, ba3b01bfb).

  • Добавлена поддержка более старых ревизий датчика камеры MT9V032 путём регистрации идентификаторов датчиков 0x1311 и 0x1312 (наряду с существующим 0x1313) как MT9V0X2 (eaaa624e3).

Несовместимые изменения

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

  • Сохранение скрипта больше не извлекает и не размонтирует USB-накопитель камеры. Теперь IDE сбрасывает буферы тома на месте, поэтому устройство остаётся примонтированным после сохранения.

  • Флаги последовательного порта во время запуска -override_read_timeout (по умолчанию 5000 мс), -override_read_stall_timeout (по умолчанию 1000 мс) и -override_per_command_wait (по умолчанию 1 мс, 2 мс в macOS) были удалены; тайминги последовательного порта теперь настраиваются через ключи переопределения protocol в файле прошивки settings.json (019d8bf1d).

  • Поставляемые загрузчики теперь поставляются только в формате .bin; файлы прошивки и загрузчика .dfu для каждой платы были удалены.