v2.4.0

v2.4.0 построен на Qt Creator 4.0.2 и сосредоточен на новом загрузчике V3 (запрос разметки QSPI flash во время загрузки прошивки и её стирание при полном стирании встроенной data-flash), на отображении датчика и платы в реальном времени в строке состояния, а также на новом 32-битном протоколе USB-отладки, соответствующем входящей в комплект прошивке. Также добавлены руководство по светодиоду при первом запуске и большой набор новых примеров для TensorFlow, Modbus и WiFi. Поскольку протокол отладки изменился, для подключения камеры должны работать на новой входящей в комплект прошивке.

Основные изменения

  • Поддержка загрузчика V3 запрашивает разметку внешней QSPI flash платы во время загрузки прошивки и стирает её при полном стирании встроенной data-flash (d953df62f).

  • Отображение датчика и платы запрашивает модуль датчика подключённой камеры при подключении и показывает его в строке состояния (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) рядом с новой меткой типа платы (0ffa82958).

  • Копирование модели TensorFlow позволяет копировать на камеру модели .tflite, а не только файлы нейронных сетей .network (ad1aa98f0).

  • Erase Onboard Data Flash — новая команда меню Tools, которая после запроса подтверждения стирает только встроенную flash-память файловой системы камеры, не перепрошивая прошивку (d953df62f, 98686ac46).

  • Руководство по светодиоду при первом запуске — новый диалог OpenMV Cam LED Colors, который объясняет состояния встроенного светодиода и может быть отключён навсегда (c2d00422f).

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

  • Загрузчик V3 запрашивает разметку QSPI flash во время загрузки прошивки и стирает внешнюю QSPI flash только при полном стирании встроенной data-flash; connectClicked всегда вызывает bootloaderQSPIFLayout на платах V3, но запускает bootloaderQSPIFErase только при установленном forceFlashFSErase (команды записи/memtest для QSPI реализованы в слое IO, но не задействуются загрузчиком) (d953df62f).

  • Состояние датчика и платы запрашивает модуль датчика камеры при подключении и отображает его (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) в строке состояния вместе с новой меткой типа платы, используя новую карту соответствия id-имя sensors.txt (0ffa82958).

  • Руководство по светодиоду при первом запуске добавляет новый диалог OpenMV Cam LED Colors, который после короткой задержки появляется при первом запуске, если открытым документом является helloworld_1.py, и объясняет состояния встроенного светодиода (мигающий зелёный = работает загрузчик, синий = выполняется main.py, белый = паника при аппаратном сбое); флажок «Don’t show this message again.» сохраняет отказ через параметр DONT_SHOW_LED_STATES_AGAIN (c2d00422f).

  • Open OpenMV Cam Drive folder — новый пункт меню Tools, который открывает смонтированный диск камеры в системном файловом менеджере (a49f54305).

  • Erase Onboard Data Flash — новая команда меню Tools, которая после запроса подтверждения стирает только встроенную flash-память файловой системы, не перепрошивая прошивку (d953df62f, 98686ac46).

  • Копирование модели TensorFlow позволяет диалогу копирования моделей копировать на камеру модели .tflite в дополнение к файлам нейронных сетей .network; фильтр диалога также получил пункты Label Files (*.txt) и All Files (ad1aa98f0, 0ffa82958, c0dbdd9e5).

  • Переключение версии протокола отладки разбивает на части последовательные команды GetAttribute, SetAttribute, FBEnable и JPEGEnable при взаимодействии с прошивкой 3.5.3+ для повышения надёжности (83b9ca18f).

  • Новые входящие в комплект примеры добавляют скрипты со скользящим окном для mobilenet и обнаружения людей на TensorFlow Lite, а также пример MNIST на STM32Cube.AI (nn_stm32cubeai.py), новую папку 32-modbus (modbus_rtu_slave.py, modbus_apriltag.py), дополнения для WiFi-шилда (http_client_ssl, static_ip, mqtt_pub/mqtt_sub), Arduino UART/SPI-slave и CAN (e26b90d79, 42ba8f5c4).

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

  • Обновлён протокол USB-отладки до новой прошивки: чтение атрибутов использует новую 32-битную команду ATTR_READ_2 (0xCA), а полезные данные атрибутов, значений и включения буфера кадра отправляются как 32-битные long вместо 16-битных слов (55d7cfe70).

  • Переименован пункт Save open script to OpenMV Cam в Save open script to OpenMV Cam (as main.py), чтобы пояснить, что он записывает main.py (a49f54305).

  • Переименован пункт Run Bootloader в Run Bootloader (Load Firmware), чтобы пояснить его назначение (ad1aa98f0).

  • Меню примеров теперь сортируются по числовому префиксу папки/файла, а ведущие цифры NN- убираются из отображаемых имён (ad1aa98f0).

  • Терминалы вывода и последовательного порта теперь отображают табуляции пробелами, используя настраиваемую ширину табуляции последовательного терминала из настроек текстового редактора вместо жёстко заданной ширины 8 (98686ac46).

  • Обнаружение дисков в Linux теперь также принимает файловые системы, смонтированные через fuseblk (например, тома exFAT/NTFS), при сопоставлении диска камеры (c0dbdd9e5).

  • Обновлён входящий в комплект набор HTML-документации MicroPython (справочник библиотек, руководства по esp8266/esp32, сгенерированные страницы и изображения), отображаемый в справке IDE (e69d71f7c, 90b5c6eb5, 97b0f645a).

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

  • Исправлено числовое переполнение в статистике гистограммы (среднее, квартили, медиана, стандартное отклонение) путём расширения аккумуляторов с int до 64-битных, что предотвращает неверную статистику на больших изображениях (55d7cfe70).

  • Переработаны отключение/извлечение в Linux: ненадёжный сброс через syncfs/closedir удалён, и диск теперь размонтируется обычной командой umount без диалога прогресса (b86d5c62c, c0dbdd9e5, 30d4a7d2d).

  • USB-диск платы теперь сопоставляется только когда прошивка достаточно новая или присутствует файл-маркер .openmv_disk, что предотвращает захват IDE неверного съёмного диска (e464eaed4).

  • Исправлена логика повторного подключения, так что запуск операции загрузчика/стирания во время подключения теперь сначала корректно отключается, а затем повторяет попытку, избегая зависшего рабочего состояния (d953df62f).

  • Переписан удалитель комментариев/пробелов, используемый при отправке скриптов на камеру, в виде конечного автомата, учитывающего строки, так что символы # внутри строк больше не принимаются за комментарии, а завершающие пробелы и docstring обрабатываются корректно (24dff1b2f).

  • Исправлена обработка строк перевода для нескольких сообщений диалогов подключения/терминала, так что встроенные команды оболочки (sudo adduser, шаги установки pydfu) больше не являются частью переводимого текста и отображаются корректно (b5705a57e).

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

  • База Qt Creator: 4.0.2.

  • Переименована плата/прошивка OpenMV Cam H7 Plus с OPENMV4R на OPENMV4P (OMV4P_H7_32768_SDRAM), и её прошивка включена в комплект под новым именем (c0dbdd9e5).

  • Исправлено отображаемое имя платы H7 Plus, чтобы использовать подчёркивания вместо пробелов (OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM)) (75764132c).

  • Входящая в комплект прошивка обновлялась на протяжении всего релиза, завершившись версией 3.5.2 для OPENMV2/3/4/4P (финальное повышение в 15c07498c; более ранние накопительные повышения в 42ba8f5c4 до 3.4.2, a99c2e3e1 до 3.4.3, e26b90d79 до 3.5.0 и 97b0f645a до 3.5.1).

  • Версии входящей в комплект прошивки: OPENMV2 (Cam M4) 1.4.11, OPENMV3 (Cam M7) 1.4.11, OPENMV4 (Cam H7) 1.2.15, OPENMV4P (Cam H7 Plus) 1.2.15.

  • Версия OpenMV IDE повышена с 2.2.1 до 2.4.0.

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

Протокол чтения атрибутов USB-отладки был переключён со старой 16-битной команды ATTR_READ (0x8A) на новую 32-битную команду ATTR_READ_2 (0xCA), а полезные данные атрибутов, значений и включения теперь отправляются как 32-битные long; IDE также запрашивает ID датчика камеры при подключении. Это требует прошивки, реализующей новый протокол. Входящая в комплект прошивка 1.2.15 / 1.4.11 его предоставляет, поэтому для подключения более старые камеры должны быть перепрошиты на новую прошивку.