v1.3.0

В v1.3.0 уровень связи с камерой переписан на основе структурированного протокола команд/ответов, а также добавлено автоматическое обновление внутри IDE как для самой IDE, так и для входящих в её состав ресурсов. Версия построена на Qt Creator 4.0.2 и включает прошивку камеры OpenMV 2.0.0. На macOS и Linux для прошивки firmware через DFU теперь требуется однократная установка Python вместе с libusb и pyusb; см. раздел «Несовместимые изменения».

Основное

  • Переписанный уровень связи. Код последовательного порта/USB-отладки перестроен на основе структурированного протокола команд/ответов с длинами ответов для каждой команды и задержками ожидания в начале/конце, что повышает надёжность подключения, запуска скриптов, операций с буфером кадра и загрузчиком.

  • Автообновление внутри IDE. IDE теперь проверяет openmv.io на наличие более новой версии и предлагает кнопку Download, а также отдельно загружает и устанавливает обновлённые пакеты ресурсов (примеры, прошивку, документацию), после чего предлагает перезапуск.

  • Обновление прошивки в один клик. Версия прошивки в строке состояния теперь является кликабельной кнопкой, которая сравнивает подключённую камеру с входящей в комплект прошивкой и предлагает обновление в один клик, когда доступна более новая версия.

  • Прошивка firmware через DFU на каждой платформе. Прошивку теперь можно записывать через DFU на Windows, macOS, Linux x86 и Linux x86_64, а средство выбора прошивки принимает файлы .dfu в дополнение к .bin.

  • Автоматический переход на DFU. Когда во время обновления прошивки не удаётся подключиться к последовательному загрузчику, IDE теперь предлагает выполнить обновление через DFU-загрузчик камеры, проводя вас через установку перемычки BOOT/RST.

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

  • Средство обновления внутри IDE. Проверяет openmv.io на наличие более новой версии IDE и предлагает кнопку Download, которая открывает openmv.io/download, а также загружает, распаковывает и устанавливает пакеты ресурсов openmv-ide-resources-X.Y.Z.zip непосредственно в IDE перед предложением перезапуска (8a1f92bb1, 194acd828, b0be97e3e).

  • Кликабельная кнопка версии прошивки. Метка версии в строке состояния стала QToolButton, привязанной к процессу updateCam(), который читает входящий в комплект firmware/firmware.txt, сравнивает его с подключённой камерой и предлагает Firmware Update с возможностью стирания внутренней файловой системы при наличии более новой версии (b2ac8defe).

  • Поддержка файлов DFU. Диалог прошивки загрузчика/firmware теперь принимает файлы .dfu в дополнение к .bin и принудительно выполняет полное стирание внутренней файловой системы при записи .dfu. Фильтр средства выбора прошивки расширен до Firmware Binary (*.bin *.dfu), а процесс принудительного стирания для .dfu появился в 4ad2be5f9; всегда отмеченный неактивный флажок стирания, автоматически переключающийся в зависимости от расширения выбранного файла, добавлен в b2ac8defe (4ad2be5f9, b2ac8defe).

  • Автоматический переход на DFU при сбое загрузчика. Когда обновление прошивки .bin не может запустить последовательный загрузчик, IDE теперь сообщает Unable to connect to the bootloader!, а затем предлагает выполнить обновление через DFU-загрузчик камеры, предупреждая, что DFU стирает внутреннюю файловую систему флеш-памяти, и проводя вас через установку перемычки BOOT/RST и повторное подключение перед запуском DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Пример HoG. Добавлен пример визуализации Histogram of Oriented Gradients (09-Feature-Detection/hog.py) с использованием img.find_hog() (b03a707f7).

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

  • Старый разрозненный код скорости передачи/пакетов заменён классами OpenMVPluginSerialPortCommand/Result, кодами операций __USBDBG_* и __BOOTLDR_* и вспомогательными функциями command()/commandResult() вместо write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • Установка драйвера последовательного порта в Windows теперь выполняется тихо/в автоматическом режиме: драйверные скрипты openmv.cmd/pybcdc.cmd переведены на установщики на основе dpinst вместо интерактивного InfDefaultInstall, а также добавлен и исправлен установщик Visual C++ Redistributable (vcr.cmd, тихо запускающий vcredist_x86.exe и vcredist_x64.exe) (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

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

  • Исправлены сбои прошивки firmware и связи внутри виртуальных машин, а также ослаблены различные тайм-ауты команд и опрос буфера кадра/tx-буфера, чтобы подключение и запуск были более надёжными. Диалог перепрограммирования теперь сообщает, что процесс «may take up to 5 minutes», а тайм-аут процесса DFU был увеличен с 240 с до 300 с в 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Исправлено сравнение доступности обновления firmware/IDE, чтобы более новый минорный или патч-номер больше не вызывал ложного срабатывания при равенстве более старшего поля, и потребовано наличие корректно выбранного файла в диалоге загрузчика перед прошивкой (4ad2be5f9).

  • Дескрипторы файлов (список плат, файлы прошивки/версии) теперь закрываются после чтения, а дополнение блоков прошивки исправлено для выравнивания до FLASH_WRITE_CHUNK_SIZE, что предотвращает утечку дескрипторов и неправильное дополнение последних блоков во время обновления прошивки (4ad2be5f9).

  • Исправлены меню OpenMV Help и панели вывода: пункт About OpenMV Cam больше не конфликтует с системной ролью About (AboutRoleApplicationSpecificRole), а панели вывода больше не перехватывают сочетания Alt/Cmd + цифра (a0694eac7).

  • При открытии внешних веб-ссылок OpenMV (форумы, загрузка, поддержка) теперь отображается диалог ошибки «Failed to open», если URL не удаётся запустить, вместо тихого бездействия (b0be97e3e).

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

  • База Qt Creator: 4.0.2.

  • Входящая в комплект прошивка камеры: обновлена до 2.0.0, с новыми firmware.bin/openmv.bin и впервые добавленными firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf для OMV2 и OMV7.

  • Прошивка через DFU в Windows добавлена с использованием входящего в комплект ST DfuSeCommand.exe, пакета USB-драйвера ST DfuSe (DfuSe v3.0.4.0 на Win7/Win8, v3.0.5.0 на Win8.1) и установщика драйвера dfuse.cmd (4ad2be5f9).

  • Прошивка через DFU в macOS и Linux переведена с готовых бинарных файлов dfu-util на входящий в комплект скрипт прошивки pydfu.py, при этом IDE показывает необходимые команды установки libusb/pyusb. В ac248c0ec ненадолго были добавлены бинарные файлы dfu-util/dfu-prefix/dfu-suffix для Linux x86_64, но в 324f243f9 все они затем удалены в пользу pydfu.py. В финальном релизе бинарных файлов dfu-util нет; static.pro включает каталог данных pydfu для всех хостов, кроме Windows, тогда как Windows использует входящий в комплект процесс DfuSe (ac248c0ec, 324f243f9, 7837a07da).

  • Правила udev для Linux обновлены для использования сопоставления по SUBSYSTEM (cam VID 1209/PID abd1 tty и STM DFU 0483/df11), чтобы символьные ссылки устройства и DFU работали в 32-битном Linux, а также добавлена защита сетевых запросов со следованием за перенаправлениями для старых версий Qt (194acd828).

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

Входящие в комплект автономные бинарные файлы dfu-util для macOS и Linux удалены и заменены скриптом прошивки на Python pydfu.py. На macOS и Linux для прошивки firmware через DFU теперь требуется однократная установка Python вместе с libusb и pyusb (IDE показывает точные команды MacPorts/HomeBrew/apt-get). Windows по-прежнему использует входящий в комплект процесс на основе DfuSe. Несовместимых изменений в API скриптинга нет, а база Qt Creator 4.0.2 не изменилась.