v4.0.1

v4.0.1 – это коренная модернизация, переносящая OpenMV IDE с его давней основы Qt Creator 4.0.2 на Qt Creator 10.0.1. Весь стек плагинов OpenMV (просмотрщик буфера кадра, последовательный порт/протокол, терминал, гистограмма, редакторы порогов и ключевых точек, инструменты для работы с видео и обёртки для прошивки) заново накладывается поверх новой основы вместе с отполированной парой тем Flat Light/Flat Dark, подсветкой Python с учётом OpenMV, единым диалогом загрузки прошивки и широкой поддержкой обнаружения устройств в ARM64 Linux и macOS. Смена основы Qt Creator – это крупная внутренняя модернизация, но она не ломает пользовательские проекты; несколько поведений по умолчанию и определений плат всё же изменились (см. раздел Несовместимые изменения).

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

  • Переход на Qt Creator 10.0.1. IDE переходит с Qt Creator 4.0.2 на 10.0.1: вышестоящий Qt Creator урезается до базовой сборки (98b95fd3b), и весь плагин OpenMV заново добавляется на новой основе (0e8047372).

  • Темы Flat Light и Flat Dark. Поставляется отполированная пара светлой/тёмной тем с соответствующими пользовательскими стилями подсветки синтаксиса редактора; выбор темы вновь доступен в общих настройках, но ограничен только этими двумя, а темой по умолчанию теперь является flat-dark (21348924b, 13c3849e8).

  • Последовательный терминал с raw-REPL. Терминал теперь запускает, прерывает, перезагружает и вставляет скрипты через полноценный конечный автомат raw-REPL MicroPython (CTRL-A/CTRL-D), надёжно обрабатывая скрипты большего размера (a7241079c).

  • Редактирование Python с учётом OpenMV. Модули, классы, функции, методы и аргументы OpenMV подсвечиваются на основе встроенной документации, с более умным автодополнением и автоматическим выравниванием отступов с учётом скобок и двоеточий (801eab8a8, 8e9f967e7, 9fdff9c6d).

  • Единый диалог загрузки прошивки. Прошивка теперь показывает единый контекстный диалог (Erasing Disk / Flashing Firmware / Flashing Bootloader) с индикатором выполнения и сворачиваемым журналом Show/Hide Details, запоминающим своё состояние (5b51356f8).

  • Поддержка OpenMV Cam RT1062. Для новой платы класса i.MX RT1060 добавлены прошивка, загрузчики DFU/flash, перечисление SDP/blhost и шаг программирования с прожигом eFuse (a6595f5f7), которому затем выделен отдельный вариант платы Secure Bootloader (SBL) (d2b11c6c8).

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

  • Флаги автоматизации. Флаги -auto_update (release / development / путь), -auto_erase и -auto_run позволяют IDE при подключении загрузить/стереть прошивку и затем запустить открытый скрипт; после переподключения загрузчика IDE ждёт до 10 секунд повторного перечисления камеры, прежде чем продолжить (b54affe79, f4e03d978).

  • Флаг ``-disable_stop`` и переключатель меню stop on connect/disconnect позволяют пользователям отключить остановку скрипта при подключении или отключении (02724ca7d).

  • Переключатель Stop Script on Connect/Disconnect (включён по умолчанию) отвязывает подключение/отключение от остановки выполняемого скрипта; Auto Reconnect теперь по умолчанию выключен (a0e78057f).

  • Запрос типа платы. Когда подключённая плата сообщает об архитектуре, отсутствующей в сопоставлении прошивок, IDE теперь предлагает пользователю выбрать тип платы (запоминая последний выбор) вместо прерывания с ошибкой «Unsupported board architecture!» (b7165eb3d).

  • Подсветка синтаксиса Python для OpenMV раскрашивает известные модули, классы, данные, функции, методы и аргументы OpenMV, используя списки ключевых слов, формируемые из встроенной документации (801eab8a8, b4d481bf5).

  • ~300 определений языков KSyntaxHighlighting поставляются с редактором, поэтому исходные файлы на многих языках подсвечиваются прямо из коробки (39674a4dc).

  • Встроенные примеры скриптов OpenMV (Hello World, снимок, запись видео, оптический поток, событийные камеры, глобальный затвор, FLIR Lepton и другие) теперь зафиксированы в репозитории и поставляются с IDE (938ac6bbe).

  • Двоичный/шестнадцатеричный редактор включён, так что пользователи могут открывать и просматривать двоичные файлы, при этом его панель инструментов урезана под интерфейс OpenMV (675bda966).

  • Сравнение документов в памяти. Новые файлы и доступные только для чтения примеры теперь получают резервный временный файл, чтобы можно было сравнивать несохранённые документы, а диалог сравнения внешних файлов запоминает последнюю использованную папку (5281e5f6c, 2934d5216).

  • Плагин редактора с вкладками вновь добавлен, что даёт IDE панель документов с вкладками; исходный код плагина миникарты был возвращён, но оставлен отключённым в сборке этого выпуска (0e8047372).

  • Резервная прошивка через DfuSe и pydfu восстановлена для устройств DFU, к которым нельзя обратиться по серийному номеру, с автоматической обработкой стирания без диалога при подключении (e42a5be7d).

  • Прожиг eFuse для i.MX RT. Программирование прошивки теперь прожигает eFuse (efuse-program-once) для плат класса RT1060 (8053bb578, a6595f5f7).

  • Страница мастера Linux Root Installs позволяет пользователю согласиться или отказаться от установки библиотек через apt с повышенными правами и установки правил udev вместо их безусловного выполнения (6bac80984).

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

  • Фоновое сканирование последовательных портов. Перечисление портов перенесено с потока интерфейса в отдельный рабочий поток ScanSerialPortsThread, так что IDE остаётся отзывчивой во время сканирования (7be4dab26).

  • Более широкое обнаружение устройств. Сканирование портов переработано в переиспользуемый вспомогательный метод filterPorts(), который учитывает устройства picotool и i.MX DFU и переклассифицирует известные последовательные порты загрузчиков Arduino (старые NRF/RPI и PID загрузчиков) как устройства DFU (25a5d30fd).

  • Больше резервных терминалов. При запуске встроенных инструментов воспроизведения видео (Play Video File / Play RTSP Stream) в Linux IDE теперь дополнительно к xterm и gnome-terminal пробует lxterminal, konsole и xfce4-terminal (df54007e0).

  • Сообщение о ключах платы. Регистрация камеры теперь разбирает ответ «Remaining N», чтобы сообщить пользователю, сколько ключей платы осталось, и добавляет отдельное сообщение об ошибке «Invalid Board Key for Board Type» (5759e73eb).

  • Загрузки, размещённые на GitHub. Проверки версий и загрузки ресурсов теперь используют raw.githubusercontent.com/openmv/openmv-ide-version и релизы openmv/openmv-ide вместо upload.openmv.io (994109c28).

  • HTTPS повсюду. Все веб-запросы OpenMV (проверки версий, регистрация SWD ID, загрузки ресурсов и прошивок) теперь используют https:// (54347cad0).

  • Автоматизация настройки Linux. Установщик обнаруживает отсутствующие библиотеки и правила udev и при необходимости генерирует исполняемый setup.sh с точными командами установки apt-get/pip и правил udev (а также README, предлагающий пользователю запустить его) (c6dc705e6).

  • Терпимость к медленным платам. Последовательный терминал увеличивает время ожидания на чтение с 1 мс до 10 мс и выдаёт подтверждение «OK» по завершении скрипта (c935e4489).

  • Более плавный ход прошивки. Индикаторы выполнения загрузчика прошивки теперь сразу переключаются с неопределённого режима на 0-100 % вместо ожидания первого процентного отсчёта во всех инструментах dfu-util, bossac, picotool и i.MX (19d947308, 86d021f92).

  • Восстановление старого загрузчика вновь добавлено через немедленный режим загрузчика, который отправляет команды стирания/записи без дополнения для синхронизации запросов из быстрого режима (c20112c07).

  • Более чистые консоли инструментов. Терминалы прошивки (bossac, dfu-util, picotool, imx, инструменты для видео) теперь выполняются как самостоятельные консольные процессы с лучше отформатированным выводом команд (8053bb578).

  • Доработка автодополнения. Автодополнение различает классы, методы и функции с отдельными подсказками аргументов, использует надлежащие значки модели кода и учитывает область видимости public/protected/private по префиксу из подчёркивания; обработчик дополнения по ключевым словам также пропускает ведущие пробелы перед курсором при явно (вручную) вызванном дополнении (8e9f967e7, 68b26b5fc).

  • Объединённые диалоги. Разрозненные диалоги OpenMV с опцией «Don’t show this again» – включая стартовый информационный диалог OpenMV Cam LED Colors и запросы об обновлении прошивки и примерах – объединены в диалоги CheckableMessageBox «Do Not Ask/Show Again», в общие настройки добавлена кнопка «Reset Do Not Ask/Show Again Dialogs», а маркеры свёртывания кода по умолчанию отключены (9fdff9c6d).

  • Брендинг с учётом темы. Добавлены экраны-заставки для тёмного режима, тёмные/светлые логотипы чипов ST и NXP в окне About, цвета подсказок для тёмного режима и правильные цвета значков автодополнения (d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).

  • Очистка просмотрщика изображений. Действия share, background, outline и «set as default» скрыты, добавлено действие подгонки под экран, и исправлено масштабирование анимированных изображений (b37c55e25).

  • Очистка контекстного меню. Пункты «Show in File System View», «Open Terminal», «File Properties» и «Add/Delete UTF-8 BOM on Save» скрыты (5d862c78e).

  • Тёмный последовательный терминал. Самостоятельный терминал использует надлежащую тёмную тему со стилизованными полосами прокрутки, обновлёнными значками панели инструментов и корректной перезагрузкой значков полос прокрутки с высоким DPI на разных экранах (5c3af6880).

  • Очистка Find/Search. Панель результатов получает тёмную тему, селектор поисковой системы скрыт, метки упрощены, а Find-in-Files по умолчанию использует папку Documents/OpenMV (20a806550).

  • Идентичность приложения. IDE теперь показывает правильный значок OpenMV на рабочем столе, в заголовке окна и на панели задач (с обработкой высокого DPI в Windows), а идентификатор IDE изменён на openmvide (8ad1eed1f).

  • Заставка с высоким DPI отображает изображение заставки 2x на дисплеях Retina/с масштабом 200 % (626ff673e).

  • Восстановление панели действий. Левая панель действий (New File, Open, Save, Undo, Redo, Cut, Copy, Paste) была восстановлена и получила пользовательские значки OpenMV (b8479b5d0).

  • Логотипы в диалоге About. Теперь показываются оба партнёрских логотипа – Arduino и Edge Impulse (Edge Impulse ранее был скрыт) – с вариантами 2x для высокого DPI, а встроенная графика заставки была обновлена (splash-small-2 / splash-large-2) (5facd8d9a).

  • Select Word Under Cursor включён; команды Go to Block Start/End (Ctrl+[ / Ctrl+]) и Select Block Up/Down были ненадолго снова включены (36ed5b1a8), но оставлены отключёнными в выпуске (626ff673e).

  • Запись рабочего стола Linux получает категорию Electronics, поле Comment с описанием и поисковые Keywords (embedded electronics, microcontroller, micropython, computer/machine vision) (470e5702e).

  • Перенос ресурсов. Пользовательские ресурсы перемещены в версионированное расположение (старая папка qtcreator удаляется при запуске), а безобидные предупреждения DirectWrite о начертании шрифтов в Windows подавляются (a04af5351, 70765dc2a).

  • Скрытые внутренние параметры. Внутренние параметры Core -color и -theme скрыты из вывода справки, а режим презентации был вновь включён (434c7b4cc).

  • Заново применённые настройки ядра к красивой панели действий/виджету вкладок, менеджеру сообщений/окну вывода, прокси-действиям, подсветке синтаксиса и текстовому редактору (0e8047372).

  • QCustomPlot 2.1.1. Встроенная библиотека построения графиков обновлена для совместимости с Qt 6.4 и корректной обработки динамически меняющегося DPI дисплея (8801415fe).

  • Косметическая очистка интерфейса значков стрелок полос прокрутки, строки состояния, кнопок закрытия на панели вкладок документов и ширины ползунка редактора; индикатор редактора «Display File Line Ending» теперь по умолчанию выключен (e0c4d2325, 6a26f4430, e130988fb).

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

  • Исправлено обнаружение VID/PID в Linux за счёт чтения /sys/class/tty/<port>/device/uevent для получения реальных VID/PID устройства, что обходит возврат идентификаторов USB-концентратора функцией QSerialPortInfo, так что камеры за концентраторами обнаруживаются корректно (28220b351).

  • Исправлена прошивка через загрузчик на Mac за счёт смягчения проверок размера конечной точки и добавления пакета синхронизирующего запроса только тогда, когда размер записи в точности равен одной конечной точке USB (86d021f92).

  • Исправлены инструменты воспроизведения видео в Linux: Play Video File / Play RTSP Stream теперь скрыты на 32-битном и ARM Linux (нет встроенного ffplay), с резервным вариантом gnome-terminal, когда xterm недоступен, а двоичный файл ffmpeg для macOS восстановлен из заглушки (d342649cc, d896f4225).

  • Задержки начала/конца сброса загрузчика увеличены с 0 до 5, чтобы избежать наложения команд стирания и записи во время обновления прошивки (fabc168b6).

  • Упрощено восстановление загрузчика: принудительный переход в загрузчик для починки кирпича-камеры пропускает избыточные запросы, а после сброса загрузчика DFU IDE автоматически повторяет попытку обновления вместо того, чтобы просить пользователя переподключиться (12b924088).

  • Разрешено прерывать команды выгрузки буфера кадра/TX-буфера через последовательный порт в середине транзакции (4a4afae1b).

  • Удалён обходной приём с отказом при зависании чтения последовательного порта, который мог дополнять ответы нулевыми байтами, что повышает надёжность быстрой передачи по USB (0ee1d8e91).

  • Исправлены отладка по WiFi и автоматическое переподключение: порты WiFi обновляют свою метку времени последнего обнаружения при повторном нахождении, исправлено несколько ошибок с итератором после удаления при выводе из работы портов WiFi и обнаружении DFU/загрузчика, а автоматическое переподключение теперь ждёт, пока IDE не освободится, прежде чем переподключаться (cf0b67dc6).

  • Исправлен конвертер видео в MJPEG, чтобы он разбирал частоту кадров из вывода кодировщика и записывал правильную миллисекундную дельту между кадрами, так что преобразованные видео воспроизводятся с правильной скоростью (4a7ad2057).

  • Исправлен сбой запуска прошивки и встроенных инструментов командной строки за счёт принудительного использования бэкенда QProcess и исправления защиты цикла событий блокирующего процесса (200fe9f3c).

  • Исправлены значки ветвей раскрытия/свёртывания дерева в редакторе наборов данных, чтобы они корректно отображались на дисплеях HiDPI, за счёт перезагрузки таблицы стилей значков при изменении соотношения пикселей устройства (a0e78057f).

  • Обновления пакетов/ресурсов теперь автоматически перезапускают OpenMV IDE вместо простого выхода после установки (178ee1b8e).

  • Исправлена подсветка результатов Find/поиска, и действия открытия результата поиска/файла теперь возвращаются к первому видимому редактору, когда текущий редактор отсутствует (48c402dfc).

  • Исправлен диалог загрузки прошивки, так что его текст предупреждения очищается, а окно корректно изменяет размер по завершении операции прошивки (c505c6ade).

  • Исправлено несколько ошибок интерфейса в macOS: панель вкладок больше не засыпает ошибками загрузки значков и корректно отображается при открытии файла (9be8c58de, 5322cf968).

  • Исправлены стилизация и выравнивание по базовой линии строки состояния / панели вывода в macOS и Linux (4fc4545de, d29b2baa0, a440d5cd8).

  • Исправлена печать исходного кода, так что заголовок страницы с названием имеет правильные верхние и боковые поля вместо касания края страницы (786d6012c).

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

  • Основа Qt Creator: 10.0.1 (перенесена с 4.0.2).

  • OpenMV IDE: 4.0.0 -> 4.0.1.

  • OpenMV Cam RT1062 (i.MX RT1060): начальная прошивка RT1062, flash-загрузчик, подписанные образы, запись imx.txt и ключи конфигурации secure-bootloader/eFuse blhost были добавлены в папку прошивки OPENMV5 (a6595f5f7); затем плата была объединена в единую папку OPENMV_RT1060, и добавлен отдельный вариант платы Secure Bootloader (SBL) (OpenMV_Cam_RT1062_SBL) (d2b11c6c8, 5baf28c6e).

  • Встроенный набор инструментов для прошивки (blhost, bossac, dfu-util, dfuse + драйверы STM32, picotool, sdphost, ffmpeg, драйверы FTDI/Arduino) был заново упакован для Windows/macOS/Linux, при этом двоичные файлы для Linux помечены как исполняемые (fbfa4903a, bfb6b32e2, 9551c64da).

  • ARM64 Linux DFU: встроенный dfu-util для aarch64 вместе с обнаружением arm64 в списке устройств и загрузке прошивки обеспечивает прошивку DFU на хостах вроде Raspberry Pi (16bc6fe0f, 470e5702e).

  • Обнаружение устройств i.MX теперь работает в Linux (разбор lsusb) и macOS (сканирование ioreg), что позволяет загружать прошивку i.MX RT на этих платформах (e03ccbe71, 7cf505d09).

  • Ограничение по платформам: использование i.MX ограничено Windows/macOS/Linux-x86_64 с критической ошибкой в остальных случаях, а прошивка Portenta/Nicla на ARM/ARM64 Linux показывает предупреждение «DFU Util may not be stable on this platform» (9513f6475).

  • Windows OpenGL: программный рендеринг восстановлен за счёт включения opengl32sw, Qt6OpenGL и поддержки OpenGL в Qt6Gui в развёртываемый пакет (aaaa1928f).

  • Переименованы папки/идентификаторы плат Arduino. Папки прошивок и идентификаторы плат в boards.txt для Portenta, Nicla Vision и Nano 33 BLE Sense были переименованы в ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION и ARDUINO_NANO_33_BLE_SENSE (a70d6562a); папка/идентификатор платы Nano 33 BLE Sense впоследствии был приведён к нижнему регистру arduino_nano_33_ble_sense, чтобы соответствовать имени платы, сообщаемому устройством (22750d8c7, a801a81de).

  • Загрузчик OPENMV_RT1060 flash-загрузчики (blhost_flash_loader.bin, sdphost_flash_loader.bin) были обновлены (5baf28c6e).

  • QCustomPlot: 2.1.1 (встроенная библиотека построения графиков) (8801415fe).

  • Образы прошивок на диске были заново упакованы для всех поддерживаемых плат OpenMV/Arduino (OPENMV1-4P, OPENMV4_PRO, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_PORTENTA_H7, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060, CYW4343, плюс прошивка WiFi WINC1500), с прошивкой и, где применимо, образами загрузчика/uvc (fbfa4903a).

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

Это видимые пользователю изменения рабочего процесса и поведения; сам переход на Qt Creator 10.0.1 не ломает пользовательские проекты или скрипты.

  • Определения плат i.MX RT1060 изменились. Записи EVKBMIMXRT1060 и OPENMV5 были заменены единой платой OPENMV_RT1060 (OpenMV Cam RT1062, плюс вариант SBL), а старые папки прошивок были удалены (d2b11c6c8).

  • Тайм-аут ответа на команду по умолчанию составляет 10000 мс (был 5000 мс в 4.0.0); текст справки -override_read_timeout был обновлён в соответствии (4a4afae1b).

  • Поведение при подключении/отключении изменилось. Auto Reconnect теперь по умолчанию ВЫКЛЮЧЕН, и подключение или отключение по умолчанию больше не останавливает выполняемый скрипт, если только не включён новый переключатель «Stop Script on Connect/Disconnect» (он по умолчанию включён) (a0e78057f).

  • Процесс обновления перезапускает IDE. Обновления пакетов/ресурсов теперь автоматически перезапускают OpenMV IDE вместо выхода после установки (178ee1b8e).

  • Переименованы идентификаторы плат Arduino. Идентификаторы плат в boards.txt и папки прошивок для Portenta, Nicla Vision и Nano 33 BLE Sense были переименованы в ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION и ARDUINO_NANO_33_BLE_SENSE (последний позднее приведён к нижнему регистру arduino_nano_33_ble_sense) (a70d6562a, 22750d8c7, a801a81de).