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.ioen 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
.dfuademá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.ioen busca de una versión más reciente del IDE y ofrece un botón Download que abreopenmv.io/download, y descarga, descomprime e instala paquetes de recursosopenmv-ide-resources-X.Y.Z.zipdirectamente 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
QToolButtonconectado a un flujoupdateCam()que lee elfirmware/firmware.txtincluido, 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
.dfuademás de.biny fuerza un borrado completo del sistema de archivos interno al grabar un.dfu. El filtro del selector de firmware se amplió aFirmware Binary (*.bin *.dfu)y el flujo de borrado forzado de.dfuse introdujo en4ad2be5f9, con la casilla de borrado deshabilitada y siempre marcada que se conmuta automáticamente según la extensión del archivo elegido añadida enb2ac8defe(4ad2be5f9, b2ac8defe).Recurso DFU automático ante fallo del bootloader. Cuando una actualización de firmware
.binno puede iniciar el bootloader serie, el IDE ahora informaUnable 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 puenteBOOT/RSTy volver a conectar antes de ejecutarDfuSeCommand.exe(Windows) (4ad2be5f9).Ejemplo de HoG. Se añadió un ejemplo de visualización de Histograma de Gradientes Orientados (
09-Feature-Detection/hog.py) usandoimg.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 ayudantescommand()/commandResult()en lugar dewrite()/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.cmda instaladores basados endpinsten lugar delInfDefaultInstallinteractivo, y se añadió y corrigió el instalador del Redistribuible de Visual C++ (vcr.cmd, que ejecutavcredist_x86.exeyvcredist_x64.exede 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ú
Helpde OpenMV y los paneles de salida: la entrada About OpenMV Cam ya no entra en conflicto con el rol About de la plataforma (AboutRole→ApplicationSpecificRole), y los paneles de salida ya no capturan los atajosAlt/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.biny los recién añadidosfirmware.dfu/bootloader.dfu/firmware.elf/bootloader.elfpara OMV2 y OMV7.Grabación DFU en Windows añadida usando un
DfuSeCommand.exede 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 controladordfuse.cmd(4ad2be5f9).La grabación DFU en macOS y Linux pasó de binarios
dfu-utilprecompilados a un grabadorpydfu.pyincluido, mostrando el IDE los comandos de instalación de libusb/pyusb necesarios.ac248c0ecañadió brevemente los binariosdfu-util/dfu-prefix/dfu-suffixde Linux x86_64, pero324f243f9los eliminó todos en favor depydfu.py. No se incluyen binariosdfu-utilen la versión final;static.proincluye el directorio de datospydfupara 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.