v4.4.0¶
v4.4.0 — это крупный релиз модернизации, в котором OpenMV IDE переносится со своей давней базы Qt Creator 10.0.1 на Qt Creator 14.0.2, с повторным применением полного плагина OpenMV и всех модификаций форка поверх более новой базы. Помимо этого, данный релиз включает встроенный языковой сервер Python для автодополнения кода в офлайн-режиме, активирует GitHub Copilot на всех платформах, представляет новый пользовательский загрузчик OpenMV DFU и переводит камеры OpenMV на новый идентификатор поставщика USB 37C5. Смена базы — это масштабная внутренняя модернизация, которая не нарушает пользовательские проекты; см. Несовместимые изменения для небольшого числа заметных пользователю изменений рабочего процесса.
Основные нововведения¶
Перенос на Qt Creator 14.0.2. IDE переходит с Qt Creator 10.0.1 на 14.0.2, с повторным применением всего плагина OpenMV и всех модификаций
// OPENMV-DIFF //поверх современной базы (d6c895be8, 1fa75b397).Встроенный языковой сервер Python. IDE теперь поставляется со встроенным
pylsp(с astroid 3.3.5) и автоматически его использует, обеспечивая офлайн-автодополнение кода Python/MicroPython без отдельной установки через pip на Windows, macOS и Linux x86_64 (257addee0, 5a2b3e72f, 94470798d).GitHub Copilot на всех платформах. Copilot интегрирован и включён по умолчанию, со встроенной средой выполнения Node.js 20.18.0 для Windows, macOS и Linux, поэтому он больше не ограничен отдельными машинами, плюс добавлено стартовое диалоговое окно для его включения (bb07d582b, 1cb967c5a, b37e48040).
Новый загрузчик OpenMV DFU. Полностью реализованный пользовательский процесс загрузчика
openmv_dfuуправляет обновлениями прошивки изsettings.json, включая диалоговое окно «обнаружена плата в режиме DFU», предлагающее варианты установки последнего релиза, загрузки конкретной прошивки и стирания файловой системы, плюс путь через резервный загрузчик для восстановления окирпиченных камер (08b9d0676, 6a6a9351d, 6d78d6571).Поддержка новых камер. Добавлена поддержка плат OpenMV Cam N6, RT1062 и AE3, а также выполнен перевод камер на новый идентификатор поставщика USB
37C5с обновлёнными драйверами DFU и правилами udev (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).Более надёжная последовательная связь. Крупные исправления последовательной связи устраняют искажение текста в терминале и случайные разрывы соединения с камерами на основе TinyUSB (caeba6a16, 6cf122a3c).
Новые возможности¶
Загрузчик OpenMV DFU. Новая система загрузчика
openmv_dfuс выделенными драйверами DFU и механизмом резервного загрузчика восстанавливает окирпиченные камеры для разных типов прошивок (6a6a9351d, 6d78d6571). Процесс управляет обновлениями прошивки изsettings.jsonи отображает диалоговое окно «обнаружена плата в режиме DFU» с вариантами установки последнего релиза, загрузки конкретной прошивки и стирания файловой системы (08b9d0676, ef19133b6, 9c59d113c).Имя платы в выборе порта. Диалоговое окно выбора последовательного порта теперь опрашивает каждый порт и показывает обнаруженное имя платы рядом с портом (например,
COM3: OpenMV Cam H7) вместо простого имени порта (9837d6cb5).Редактор с вкладками. Плагин редактора с вкладками восстановлен, добавляя ряд вкладок документов над областью редактора для переключения между открытыми файлами (c8519c09f), и теперь он сохраняет и восстанавливает порядок вкладок между сеансами (55ccfb207).
Подсветка синтаксиса Python. Добавлено выделенное определение подсветки синтаксиса Python для редактора с правилами для форматирования строк, чисел с плавающей точкой и ключевых слов (9be46c0c3).
Прочие изменения и улучшения¶
Рефакторинг загрузки прошивки. Код загрузки прошивки был разделён на отдельные обработчики загрузчика для каждого типа (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), добавлена обработка PID касания-для-сброса для плат Arduino DFU и явные варианты плат «Legacy» для устройств с альтернативными VID/PID (9f465f9f8).
Защитные меры для ROM-загрузчика STM32. IDE теперь предупреждает или блокирует загрузку
firmware.dfu/openmv.dfuв ROM-загрузчик восстановления STM32, рекомендуя толькоbootloader.dfu, чтобы избежать окирпичивания плат STM32H7, затронутых ошибкой ROM-загрузчика чипа (c5ce0ae1a, e7cde1ec1).Автоматическая, бесшумная настройка Python LSP. Языковой сервер Python теперь устанавливается и обновляется автоматически без запросов в информационной панели или спама сообщений в консоли (d89f5985f), а система автодополнения и всплывающей документации Python была переработана в выделенный движок документации OpenMV, который разбирает встроенную HTML-документацию библиотек для подсветки ключевых слов и подсказок (47e02873b, 4f9853f21, 82cefc931).
Обнаружение интерпретатора Python в Linux. Обнаружение интерпретатора в Linux теперь автоматическое: учитываются только интерпретаторы Python 3 из
PATHс выбором новейшего как единственного по умолчанию (214fdc758).Очистка настроек Python. Группа управления отдельными интерпретаторами и страница Interpreters скрыты, конфигурация языкового сервера помещена в категорию
Python, а неиспользуемые кнопки панели инструментов REPL и выбора интерпретатора скрыты в редакторе Python (d89f5985f). В Windows IDE теперь автоматически регистрирует встроенныйpython.exeкак интерпретатор по умолчанию, при этом встроенный языковой сервер считается уже установленным (1d9ca003e, d89f5985f).Более чистый каталог профиля. IDE больше не записывает неиспользуемые файлы настроек Qt Creator (устройства, наборы, цепочки инструментов, версии Qt) и открывает файлы напрямую в редакторе (3771b0107), больше не сканирует систему на наличие qmake/версий Qt (42807f25f) и избегает загрузки неиспользуемого механизма устройств/цепочек инструментов/наборов и лишнего шума при запуске (902a357de, b2666a35b).
Более безопасные обновления. Обновление IDE больше не затирает пользовательские ресурсы; удаляются и копируются заново только управляемые папки ресурсов (examples, firmware, html, models), при этом
micropython-headersдополнительно удаляется (он устанавливается отдельно, а не копируется заново этим путём), а также добавлено более понятное сообщение об ошибке, еслиfirmware/settings.jsonотсутствует или недействителен (b4b8c208d, 3255ba4fb).Более быстрое подключение DFU. Время ожидания подключения DFU было сокращено, благодаря чему прошивка и подключение выполняются быстрее (11d8c9fe3, 4700bf678).
Восстановленное меню OpenMV и настройки интерфейса. Упрощённая компоновка меню OpenMV применена повторно, скрывая меню Build и Debug и удаляя действия управления проектами (7503f2bec); движок автодополнения кода вновь получает осведомлённость о классах/методах и области видимости ключевых слов public/private для автодополнения MicroPython (55fc348ea); рендеринг ANSI-цветов терминала применён повторно с учётом темы для значений яркости/затемнённости и поддержкой escape-последовательности возврата курсора (c6787a27a); а панель инструментов просмотрщика изображений настроена с подсказками разрешения/масштаба и перемещённым действием Fit-to-Screen (734fec693).
Восстановленные встроенные ресурсы. Инструменты прошивки, драйверы DFU, прошивка и полное дерево примеров/скриптов восстановлены в общих ресурсах после удаления в ходе переноса базы (33c8354bc), а пользовательская логика запуска приложения OpenMV применена повторно: она жёстко требует плагин
TextEditor(проверки плагинов OpenMV и TabbedEditor присутствуют, но отключены), устанавливает пользовательский обработчик сообщений Qt, удаляет параметры командной строки-client/-pid/-blockи принудительно включает режим единственного экземпляра (06c788f3d).Сбой при отсутствии плагина. Приложение теперь жёстко завершается с понятной ошибкой, если требуемые плагины отсутствуют или отключены, плагин OpenMV получил зависимость от Copilot, а несколько параметров текстового редактора (
Prefer single line commentsи селектор положения комментария в настройках Behavior, а такжеHighlight selectionв настройках Display) скрыты (1bc02b1f3).Более короткие таймауты последовательной связи. Таймауты последовательного протокола были сокращены (чтение с 10000 до 5000 мс, запись с 6000 до 3000 мс) для более быстрой обратной связи об ошибках, при этом документированное значение по умолчанию
-override_read_timeoutобновлено соответствующим образом (641385af4).Восстановление зависшего порта. Последовательные порты, зависшие в середине команды, теперь восстанавливаются с помощью запроса
GET_STATE(настраивается через параметр get-state) вместо запроса о выполнении скрипта (a8598f550).Порядок в диалоге настроек. Диалог настроек скрывает флажок алфавитной сортировки категорий, чтобы список страниц оставался в задуманном OpenMV порядке (1cb967c5a).
Упрощённые настройки Copilot. Страница настроек Copilot сведена только к элементам входа/аутентификации и управления прокси, скрывая параметры включения Copilot, пути Node.js, пути dist и автодополнения (1cb967c5a).
Исправления ошибок¶
Исправлены серьёзные проблемы последовательной связи путём увеличения таймаута зависания чтения в 10 раз и отключения механизма восстановления на основе
GET_STATE, который искажал текст в последовательном терминале (caeba6a16).Исправлены случайные разрывы последовательного соединения с камерами на основе TinyUSB путём отправки команды разблокировки сброса кадра и переработки обработки зависания чтения вместо разрыва соединения (6cf122a3c).
Обработка
get_stateкамеры стала устойчивой к коротким/неполным ответам, и обеспечен сброс буферизованного текста последовательного терминала во время восстановления после ошибки, чтобы вывод журнала не терялся (c8b4248a6, 247a779dd).Исправлены номера раздела флеш-памяти/alt-setting DFU-загрузчика для загрузки прошивки OpenMV Cam (a8700d12d).
Восстановлены все загрузчики путём учёта нового флага платы
hidden, переключения фильтрации серийных номеров на инверсные фильтры и предоставления рабочей конфигурации picotool для UF2-записи Arduino Nano RP2040 Connect (63cee629b).Исправлен диалог выбора типа платы загрузчика, запоминавший неверное значение, путём использования отдельных ключей истории для удобочитаемых выборов типа платы и выборов типа платы IMX (a3325af32).
Исправлен расчёт временных меток/частоты кадров при перекодировании видео (Save Video) путём вычисления среднего интервала между кадрами в микросекундах, добавления поддержки нового формата времени v21
ImageWriterи защиты от нулевых pixmap во время преобразования (f5c75c749, f8f762b3e).Исправлен сбой в представлении гистограммы/буфера кадра при получении пустого (нулевого) pixmap путём защиты
pixmapUpdate()от нулевых данных (622cf5ea8).Восстановлены всплывающие подсказки аннотаций в текстовом редакторе, поэтому наведение на текстовые метки снова показывает всплывающую подсказку аннотации (1852d18e1).
Предотвращено появление информационных диалогов GitHub Copilot и цветов светодиодов, пока IDE занята подключением или прошивкой (f8f762b3e).
Добавлена защита от сбоев в языковом клиенте, поэтому обработка изменения содержимого документа больше не приводит к сбою IDE в граничных случаях (7926ffe4c).
Исправлены проверки языкового сервера Python, мешавшие чистому завершению работы IDE, путём асинхронного ожидания плагином Python текущих проверок перед выходом (9ff6c7936).
Исправлено автодополнение Python в Linux: языковой клиент укореняется во встроенном
micropython-headers, а избыточное действие всплывающего автодополнения на панели инструментов редактора скрыто (d37f66a9a, 56e748f9d, 016fa73eb).Исправлена обработка временных/несохранённых файлов, поэтому Save As использует начальный каталог файлового диалога, а диалог Save Items и редактор Diff больше не показывают внутренние пути временных файлов (b7f0bb378, c8e7b6b8f, 6b128c34c).
Сохранение безымянного/временного буфера теперь по умолчанию предлагает в диалоге Save-As корректное имя файла
.pyвместо пустого имени (3001fdfff).Временные/безымянные документы теперь предлагаются для сохранения при изменении, исключаются из автосохранения и корректно направляются через Save-As (f87b71cf0).
Исправлен порядок в меню Recent Files, поэтому повторное открытие уже перечисленного файла больше не меняет его порядок, а файловый диалог теперь по умолчанию открывает каталог проектов (d49c0c993).
Исправлен рендеринг текста в окнах сообщений путём отказа от принудительного формата rich-text для окон сообщений с флажками, поэтому необработанный текст отображается корректно (0c565502f).
Исправлены цвета всплывающих подсказок, поэтому подсказки корректно отображаются в светлой теме (35cbf077b).
Общие исправления стабильности и очистки Qt Creator в основных настройках, языковом клиенте, цепочке инструментов MSVC, проводнике проектов и плагинах Python (836b163dc, 134f43cb8).
Исправлено имя папки встроенной прошивки Arduino Nano 33 BLE Sense (b1d8ac227) и исправлено правило udev в Linux для идентификатора продукта DFU-загрузчика AE3, изменив
96E3на строчное96e3, чтобы работало регистрозависимое сопоставлениеidProductв udev (2cd43c96b). Правило udev в Linux для DFU-загрузчика AE3 также было обновлено до идентификатора продукта37c5:afe3для символьной ссылкиopenmvdfu(b99555637).
Поддержка платформ и инструментов¶
База Qt Creator: 14.0.2 (перенесена с 10.0.1).
OpenMV Cam N6 теперь поддерживается (VID:PID 37C5:1206, DFU-загрузчик 37C5:9206), включая настройки прошивки, драйвер DFU для Windows и правило udev для Linux (000ed8a87, 1b950c8c6).
OpenMV Cam RT1062 теперь поддерживается с новыми пользовательскими USB VID/PID (37C5:1060), включая драйверы DFU, правила udev и сохранённые устаревшие записи 1209:ABD1 для более старых устройств (f453bc945, d55d6441f).
OpenMV Cam AE3 теперь поддерживается, включая драйверы DFU для Windows, дерево образов прошивки/конфигурации и USB VID/PID (обновлены до 37C5:16E3 для среды выполнения / 37C5:96E3 для загрузчика) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).
Новая система USB VID/PID: камеры OpenMV переходят на идентификатор поставщика
37C5с новыми идентификаторами загрузчика/DFU (например, 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), переименовывая старые платы 1209:ABD1 в Legacy, при этом по-прежнему поддерживая как старую, так и новую прошивку (6d78d6571, 6a6a9351d, 500b1a0bf).В список распознаваемых датчиков добавлен датчик изображения PAG7936 (f9e3f3461).
Встроенный интерпретатор Python 3.13 включён для macOS, Linux x86_64, Linux arm64 и Linux arm (9133b1516), с нативными разделяемыми библиотеками
libpython3.13иujson(d3aa663d8, a2cb24e74).Встроенный языковой сервер:
pylspс astroid 3.3.5 на Windows, macOS и Linux x86_64 (257addee0). Сборка для Windows поставляется со встроенным CPython, включающим python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 и distlib 0.3.9 (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).Встроенная среда выполнения Node.js 20.18.0 «Iron» LTS для Windows, macOS, Linux arm64, Linux x64 и Linux armv7 для включения GitHub Copilot на всех платформах (bb07d582b, 6db78bf45, 1cb967c5a).
Alif Security Toolkit с подписанными двоичными файлами загрузки/системного пакета и руководством пользователя, включён для Windows, macOS и Linux x86_64 для подготовки камер OpenMV на основе Alif (например, AE3) (f63851be3).
Интеграция с рабочим столом Linux восстановлена: устанавливается элемент рабочего стола приложения и метаданные AppStream, а также регистрируется MIME-тип Python (
.py) (3fa25f571).
Несовместимые изменения¶
Скриптовый API не изменился. Могут быть замечены следующие заметные пользователю изменения рабочего процесса и поведения:
Новый идентификатор поставщика USB. Камеры OpenMV переходят на идентификатор поставщика
37C5с новыми идентификаторами продукта и DFU-загрузчика; платы со старым VID1209:ABD1теперь помечаются как «Legacy». IDE поддерживает старую и новую прошивку одновременно, но пользователям Linux необходимо переустановить обновлённые правила udev, чтобы новые идентификаторы распознавались.Устаревшие записи плат скрыты. Устаревшие варианты плат OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal теперь подавляются в списке выбора прошивки/платы с помощью нового флага платы
legacy(отличного от ранее существовавшего флагаhidden), поэтому пользователи, которым специально нужна запись устаревшей платы, больше не увидят её в выпадающем списке (6d78d6571).Более короткие таймауты последовательной связи. Таймаут чтения ответа по умолчанию снижается с 10000 мс до 5000 мс, а таймаут записи — с 6000 мс до 3000 мс (значение по умолчанию
-override_read_timeoutтеперь документировано как 5000). Медленные платы/каналы, полагавшиеся на более длинные значения по умолчанию, могут истечь по таймауту раньше.
Перенос на Qt Creator 14.0.2 — это масштабная внутренняя модернизация, но он не нарушает работу пользовательских проектов.