v1.3.0

v1.3.0 reescribe la capa de comunicación con la cámara en torno a un protocolo estructurado de comando/respuesta y añade actualización automática dentro del IDE tanto para el IDE como para sus recursos incluidos. Está construido sobre Qt Creator 4.0.2 e incluye el firmware de cámara OpenMV 2.0.0. En macOS y Linux, la grabación de firmware por DFU ahora requiere una instalación única de Python más libusb y pyusb; consulte Cambios incompatibles.

Aspectos destacados

  • Capa de comunicación reescrita. El código de depuración serie/USB se reconstruyó en torno a un protocolo estructurado de comando/respuesta con longitudes de respuesta por comando y retardos de espera de inicio/fin, para operaciones de conexión, ejecución de scripts, búfer de fotogramas (frame buffer) y bootloader más fiables.

  • Actualizador automático dentro del IDE. El IDE ahora comprueba openmv.io en busca de una versión más reciente y ofrece un botón Download, y por separado descarga e instala paquetes de recursos actualizados (ejemplos, firmware, documentación) y luego solicita reiniciar.

  • Actualización de firmware con un clic. La versión de firmware de la barra de estado es ahora un botón en el que se puede hacer clic y que compara la cámara conectada con el firmware incluido y ofrece una actualización con un clic cuando hay disponible una versión más reciente.

  • Grabación de firmware por DFU en todas las plataformas. El firmware ahora puede grabarse por DFU en Windows, macOS, Linux x86 y Linux x86_64, y el selector de firmware acepta archivos .dfu además de .bin.

  • Recurso DFU automático. Cuando no se puede acceder al bootloader serie durante una actualización de firmware, el IDE ahora ofrece actualizar a través del bootloader DFU de la cámara, guiándole para añadir un puente BOOT/RST.

Nuevas características

  • Actualizador dentro del IDE. Comprueba openmv.io en busca de una versión más reciente del IDE y ofrece un botón Download que abre openmv.io/download, y descarga, descomprime e instala paquetes de recursos openmv-ide-resources-X.Y.Z.zip directamente en el IDE antes de solicitar el reinicio (8a1f92bb1, 194acd828, b0be97e3e).

  • Botón de versión de firmware en el que se puede hacer clic. La etiqueta de versión de la barra de estado pasó a ser un QToolButton conectado a un flujo updateCam() que lee el firmware/firmware.txt incluido, lo compara con la cámara conectada y ofrece una Firmware Update con borrado opcional del sistema de archivos interno cuando hay una versión más reciente (b2ac8defe).

  • Compatibilidad con archivos DFU. El diálogo de bootloader/grabación de firmware ahora acepta archivos .dfu además de .bin y fuerza un borrado completo del sistema de archivos interno al grabar un .dfu. El filtro del selector de firmware se amplió a Firmware Binary (*.bin *.dfu) y el flujo de borrado forzado de .dfu se introdujo en 4ad2be5f9, con la casilla de borrado deshabilitada y siempre marcada que se conmuta automáticamente según la extensión del archivo elegido añadida en b2ac8defe (4ad2be5f9, b2ac8defe).

  • Recurso DFU automático ante fallo del bootloader. Cuando una actualización de firmware .bin no puede iniciar el bootloader serie, el IDE ahora informa Unable to connect to the bootloader! y luego ofrece actualizar usando el bootloader DFU de la cámara, advirtiendo que DFU borra el sistema de archivos de la memoria flash interna y guiándole para añadir un puente BOOT/RST y volver a conectar antes de ejecutar DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Ejemplo de HoG. Se añadió un ejemplo de visualización de Histograma de Gradientes Orientados (09-Feature-Detection/hog.py) usando img.find_hog() (b03a707f7).

Otros cambios y mejoras

  • Se reemplazó el antiguo código improvisado de velocidad en baudios/paquetes por las clases OpenMVPluginSerialPortCommand/Result, los códigos de operación __USBDBG_* y __BOOTLDR_* y los ayudantes command()/commandResult() en lugar de write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • La instalación del controlador de puerto serie de Windows ahora es silenciosa/desatendida, cambiando los scripts de controlador openmv.cmd/pybcdc.cmd a instaladores basados en dpinst en lugar del InfDefaultInstall interactivo, y se añadió y corrigió el instalador del Redistribuible de Visual C++ (vcr.cmd, que ejecuta vcredist_x86.exe y vcredist_x64.exe de forma silenciosa) (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Correcciones de errores

  • Se corrigió que la grabación de firmware y la comunicación fallaran dentro de máquinas virtuales, y se relajaron varios tiempos de espera de comandos y el sondeo del búfer de fotogramas/búfer de transmisión para que la conexión y la ejecución sean más robustas. El diálogo de reprogramación ahora indica que «may take up to 5 minutes» y el tiempo de espera del proceso DFU se aumentó de 240s a 300s en 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Se corrigió la comparación de actualización disponible de firmware/IDE para que una versión menor o de parche más reciente ya no se active falsamente cuando un campo superior es igual, y se requirió que el diálogo del bootloader tuviera un archivo seleccionado válido antes de grabar (4ad2be5f9).

  • Se cerraron los manejadores de archivos (lista de placas, archivos de firmware/versión) después de leerlos y se corrigió el relleno de fragmentos de grabación de firmware para rellenar hasta FLASH_WRITE_CHUNK_SIZE, evitando manejadores filtrados y fragmentos finales mal rellenados durante las actualizaciones de firmware (4ad2be5f9).

  • Se corrigieron el menú Help de OpenMV y los paneles de salida: la entrada About OpenMV Cam ya no entra en conflicto con el rol About de la plataforma (AboutRoleApplicationSpecificRole), y los paneles de salida ya no capturan los atajos Alt/Cmd + número (a0694eac7).

  • Al abrir enlaces web externos de OpenMV (foros, descarga, soporte) ahora se muestra un diálogo de error «Failed to open» cuando no se puede iniciar la URL, en lugar de no hacer nada de forma silenciosa (b0be97e3e).

Compatibilidad de plataformas y herramientas

  • Base de Qt Creator: 4.0.2.

  • Firmware de cámara incluido: actualizado a 2.0.0, con nuevos firmware.bin/openmv.bin y los recién añadidos firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf para OMV2 y OMV7.

  • Grabación DFU en Windows añadida usando un DfuSeCommand.exe de ST incluido, el paquete de controlador USB ST DfuSe (DfuSe v3.0.4.0 en Win7/Win8, v3.0.5.0 en Win8.1) y un instalador de controlador dfuse.cmd (4ad2be5f9).

  • La grabación DFU en macOS y Linux pasó de binarios dfu-util precompilados a un grabador pydfu.py incluido, mostrando el IDE los comandos de instalación de libusb/pyusb necesarios. ac248c0ec añadió brevemente los binarios dfu-util/dfu-prefix/dfu-suffix de Linux x86_64, pero 324f243f9 los eliminó todos en favor de pydfu.py. No se incluyen binarios dfu-util en la versión final; static.pro incluye el directorio de datos pydfu para todos los hosts que no son Windows, mientras que Windows usa el flujo DfuSe incluido (ac248c0ec, 324f243f9, 7837a07da).

  • Las reglas udev de Linux se actualizaron para usar coincidencia SUBSYSTEM (cámara VID 1209/PID abd1 tty y STM DFU 0483/df11) de modo que los enlaces simbólicos del dispositivo y de DFU funcionen en Linux de 32 bits, y se protegieron las solicitudes de red que siguen redirecciones para versiones más antiguas de Qt (194acd828).

Cambios incompatibles

Se eliminaron los binarios independientes dfu-util incluidos para macOS y Linux y se reemplazaron por un grabador Python pydfu.py. En macOS y Linux, la grabación de firmware por DFU ahora requiere una instalación única de Python más libusb y pyusb (el IDE muestra los comandos exactos de MacPorts/HomeBrew/apt-get). Windows sigue usando el flujo basado en DfuSe incluido. No hay rupturas en la API de scripting, y la base de Qt Creator 4.0.2 no ha cambiado.