v4.0.1

v4.0.1 es una modernización desde cero que rebasa OpenMV IDE desde su antigua base Qt Creator 4.0.2 a Qt Creator 10.0.1. Toda la pila de complementos de OpenMV (visor del frame buffer, serie/protocolo, terminal, histograma, editores de umbral y de puntos clave, herramientas de vídeo y envoltorios para el flasheo de firmware) se vuelve a aplicar sobre la nueva base, junto con un pulido par de temas Flat Light/Flat Dark, resaltado de Python con conocimiento de OpenMV, un cuadro de diálogo unificado para cargar firmware y amplio soporte de detección de dispositivos en ARM64 Linux y macOS. El cambio de base a Qt Creator es una gran modernización interna, pero no rompe los proyectos de usuario; sí cambiaron algunos comportamientos predeterminados y definiciones de placas (véase Cambios que rompen la compatibilidad).

Aspectos destacados

  • Rebase a Qt Creator 10.0.1. El IDE pasa de Qt Creator 4.0.2 a 10.0.1: la versión upstream de Qt Creator se reduce a sus elementos básicos de compilación (98b95fd3b) y todo el complemento de OpenMV se vuelve a añadir sobre la nueva base (0e8047372).

  • Temas Flat Light y Flat Dark. Se incluye un pulido par de temas claro/oscuro con estilos personalizados de resaltado de sintaxis del editor que combinan; el selector de Tema vuelve a exponerse en los ajustes Generales limitado solo a esos dos, y el tema predeterminado es ahora flat-dark (21348924b, 13c3849e8).

  • Terminal serie raw-REPL. El terminal ahora ejecuta, interrumpe, recarga y pega scripts a través de una máquina de estados de raw-REPL (CTRL-A/CTRL-D) de MicroPython adecuada, manejando de forma fiable scripts más grandes (a7241079c).

  • Edición de Python con conocimiento de OpenMV. Los módulos, clases, funciones, métodos y argumentos de OpenMV se resaltan sintácticamente a partir de la documentación incluida, con autocompletado más inteligente y un autoindentador que reconoce corchetes y dos puntos (801eab8a8, 8e9f967e7, 9fdff9c6d).

  • Cuadro de diálogo unificado para cargar firmware. El flasheo ahora muestra un único cuadro de diálogo contextual (Erasing Disk / Flashing Firmware / Flashing Bootloader) con una barra de progreso y un registro Show/Hide Details plegable que recuerda su estado (5b51356f8).

  • Soporte para OpenMV Cam RT1062. Se añaden el firmware, los cargadores DFU/flash, la enumeración SDP/blhost y un paso de programación de quemado de eFuse para la nueva placa de clase i.MX RT1060 (a6595f5f7), a la que luego se le asigna una variante de placa distinta con Secure Bootloader (SBL) (d2b11c6c8).

Nuevas características

  • Banderas de automatización. Las banderas -auto_update (release / development / ruta), -auto_erase y -auto_run permiten que el IDE cargue/borre el firmware y luego ejecute el script abierto al conectarse; tras una reconexión del bootloader, el IDE espera hasta 10 s a que la cámara se vuelva a enumerar antes de continuar (b54affe79, f4e03d978).

  • Bandera ``-disable_stop`` y un conmutador de menú stop on connect/disconnect permiten a los usuarios deshabilitar la detención del script al conectarse o desconectarse (02724ca7d).

  • El conmutador Stop Script on Connect/Disconnect (activado por defecto) desacopla la conexión/desconexión de la detención del script en ejecución; Auto Reconnect ahora está desactivado por defecto (a0e78057f).

  • Solicitud de tipo de placa. Cuando una placa conectada informa de una arquitectura que no está en la asignación de firmware, el IDE ahora pide al usuario que elija el tipo de placa (recordando la última elección) en lugar de abortar con un error «Unsupported board architecture!» (b7165eb3d).

  • El resaltado de sintaxis de Python para OpenMV colorea los módulos, clases, datos, funciones, métodos y argumentos conocidos de OpenMV usando listas de palabras clave generadas a partir de la documentación incluida (801eab8a8, b4d481bf5).

  • ~300 definiciones de lenguajes de KSyntaxHighlighting se incluyen con el editor, de modo que los archivos fuente en muchos lenguajes se resaltan sin configuración adicional (39674a4dc).

  • Los scripts de ejemplo de OpenMV incluidos (Hello World, captura, grabación de vídeo, flujo óptico, cámaras de eventos, obturador global, FLIR Lepton y más) ahora se incorporan al control de versiones y se distribuyen con el IDE (938ac6bbe).

  • El editor binario/hexadecimal está habilitado para que los usuarios puedan abrir e inspeccionar archivos binarios, con su barra de herramientas recortada para encajar en la interfaz de OpenMV (675bda966).

  • Comparación de documentos en memoria. Los archivos nuevos y los ejemplos de solo lectura ahora reciben un archivo temporal de respaldo para que los documentos sin guardar puedan compararse, y el cuadro de diálogo de comparación de archivos externos recuerda la última carpeta utilizada (5281e5f6c, 2934d5216).

  • El complemento de editor con pestañas se vuelve a añadir, dando al IDE una barra de documentos con pestañas; el código del complemento de minimapa se volvió a añadir pero se dejó deshabilitado en la compilación para esta versión (0e8047372).

  • El flasheo de respaldo con DfuSe y pydfu se restaura para dispositivos DFU a los que no se puede apuntar por número de serie, con manejo automático de borrado sin diálogo durante la conexión (e42a5be7d).

  • Quemado de eFuse en i.MX RT. La programación de firmware ahora quema un eFuse (efuse-program-once) para las placas de clase RT1060 (8053bb578, a6595f5f7).

  • Una página del asistente de Instalaciones Root en Linux permite al usuario optar por participar o no en la instalación elevada de bibliotecas por apt y la instalación de reglas udev, en lugar de ejecutarlas siempre (6bac80984).

Otros cambios y mejoras

  • Escaneo de puertos serie en segundo plano. La enumeración de puertos se trasladó fuera del hilo de la interfaz a un worker dedicado ScanSerialPortsThread, de modo que el IDE se mantiene receptivo durante el escaneo (7be4dab26).

  • Detección de dispositivos más amplia. El escaneo de puertos se refactorizó en un ayudante reutilizable filterPorts() que incorpora dispositivos picotool e i.MX DFU y reclasifica los puertos serie conocidos del bootloader de Arduino (PIDs antiguos de NRF/RPI y de cargador) como dispositivos DFU (25a5d30fd).

  • Más respaldos de terminal. Al lanzar las herramientas de reproducción de vídeo incluidas (Play Video File / Play RTSP Stream) en Linux, el IDE ahora recurre a lxterminal, konsole y xfce4-terminal además de xterm y gnome-terminal (df54007e0).

  • Informe de claves de placa. El registro de cámaras ahora analiza una respuesta «Remaining N» para indicar al usuario cuántas claves de placa quedan, y añade un mensaje de error distinto «Invalid Board Key for Board Type» (5759e73eb).

  • Descargas alojadas en GitHub. Las comprobaciones de versión y las descargas de recursos ahora usan raw.githubusercontent.com/openmv/openmv-ide-version y las versiones de openmv/openmv-ide en lugar de upload.openmv.io (994109c28).

  • HTTPS en todas partes. Todas las solicitudes web de OpenMV (comprobaciones de versión, registro de ID SWD, descargas de recursos y de firmware) ahora usan https:// (54347cad0).

  • Automatización de la configuración en Linux. El instalador detecta bibliotecas y reglas udev que faltan y, si es necesario, genera un setup.sh ejecutable con los comandos exactos de instalación de apt-get/pip y reglas udev (y un README que indica al usuario que lo ejecute) (c6dc705e6).

  • Tolerancia a placas lentas. El terminal serie aumenta su espera por lectura de 1 ms a 10 ms y emite un acuse «OK» cuando finaliza un script (c935e4489).

  • Progreso de flasheo más fluido. Las barras de progreso del cargador de firmware ahora cambian de indeterminadas a 0-100 % de inmediato, en lugar de tras el primer tick de porcentaje, en dfu-util, bossac, picotool y el flasheo de i.MX (19d947308, 86d021f92).

  • La recuperación de bootloaders antiguos se vuelve a añadir mediante un modo de bootloader no rápido que envía comandos de borrado/escritura sin el relleno de sincronización por consulta del modo rápido (c20112c07).

  • Consolas de herramientas más limpias. Los terminales de flasheo de firmware (bossac, dfu-util, picotool, imx, herramientas de vídeo) ahora se ejecutan como procesos de consola independientes con una salida de comandos mejor formateada (8053bb578).

  • Pulido del autocompletado. El completado distingue clases, métodos y funciones con sugerencias de argumentos separadas, usa iconos adecuados del modelo de código y respeta el ámbito público/protegido/privado por el prefijo de guion bajo; el procesador de completado de palabras clave también omite los espacios en blanco iniciales antes del cursor en el completado invocado explícitamente (de forma manual) (8e9f967e7, 68b26b5fc).

  • Diálogos consolidados. Los diálogos improvisados de OpenMV «Don’t show this again» –incluido el diálogo informativo de inicio OpenMV Cam LED Colors y los avisos de actualización de firmware y de ejemplos– se unifican en diálogos CheckableMessageBox «Do Not Ask/Show Again», se añadió un botón «Reset Do Not Ask/Show Again Dialogs» a los ajustes Generales, y los marcadores de plegado de código están deshabilitados por defecto (9fdff9c6d).

  • Identidad de marca según el tema. Se añadieron pantallas de bienvenida en modo oscuro, logotipos de chips ST y NXP en versión oscura/clara en el cuadro Acerca de, colores de tooltip en modo oscuro y colores adecuados para los iconos de autocompletado (d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).

  • Limpieza del visor de imágenes. Las acciones de compartir, fondo, contorno y «establecer como predeterminado» están ocultas, se añadió una acción de ajustar a la pantalla y se corrigió el dimensionado de imágenes animadas (b37c55e25).

  • Limpieza del menú contextual. Las entradas «Show in File System View», «Open Terminal», «File Properties» y «Add/Delete UTF-8 BOM on Save» están ocultas (5d862c78e).

  • Terminal serie oscuro. El terminal independiente usa un tema oscuro adecuado con barras de desplazamiento estilizadas, iconos de barra de herramientas actualizados y una recarga correcta del icono de la barra de desplazamiento en alta DPI entre pantallas (5c3af6880).

  • Limpieza de Buscar/Búsqueda. El panel de resultados gana un tema oscuro, el selector de motor de búsqueda está oculto, las etiquetas se simplifican y Find-in-Files apunta por defecto a la carpeta Documents/OpenMV (20a806550).

  • Identidad de la aplicación. El IDE ahora muestra el icono correcto de OpenMV en el escritorio, la barra de título y la barra de tareas (con manejo de alta DPI en Windows), y el id del IDE se cambió a openmvide (8ad1eed1f).

  • Pantalla de bienvenida de alta DPI muestra una imagen de bienvenida a 2x en pantallas Retina/escala al 200 % (626ff673e).

  • Reparación de la barra de acciones. La barra de acciones de la izquierda (New File, Open, Save, Undo, Redo, Cut, Copy, Paste) se reparó y se le dieron iconos personalizados de OpenMV (b8479b5d0).

  • Logotipos del cuadro de diálogo Acerca de. Ahora se muestran tanto el logotipo de socio de Arduino como el de Edge Impulse (Edge Impulse estaba oculto anteriormente) con variantes 2x de alta DPI, y se actualizó la imagen de bienvenida incluida (splash-small-2 / splash-large-2) (5facd8d9a).

  • Select Word Under Cursor está habilitado; los comandos Go to Block Start/End (Ctrl+[ / Ctrl+]) y Select Block Up/Down se rehabilitaron brevemente (36ed5b1a8) pero se dejaron deshabilitados en la versión (626ff673e).

  • La entrada de escritorio de Linux gana una categoría Electronics, un Comment descriptivo y Keywords de búsqueda (embedded electronics, microcontroller, micropython, computer/machine vision) (470e5702e).

  • Migración de recursos. Los recursos del usuario se trasladaron a una ubicación versionada (la antigua carpeta qtcreator se elimina al iniciar), y se suprimen las inofensivas advertencias de tipo de letra de DirectWrite en Windows (a04af5351, 70765dc2a).

  • Opciones internas ocultas. Las opciones internas -color y -theme de Core están ocultas en la salida de ayuda, y el modo de presentación se rehabilitó (434c7b4cc).

  • Personalizaciones del núcleo reaplicadas a la elegante barra de acciones/widget de pestañas, al gestor de mensajes/ventana de salida, a las acciones proxy, al resaltador de sintaxis y al editor de texto (0e8047372).

  • QCustomPlot 2.1.1. La biblioteca de gráficas incluida se actualizó para compatibilidad con Qt 6.4 y para el manejo correcto de los cambios dinámicos de DPI de la pantalla (8801415fe).

  • Limpiezas cosméticas de la interfaz en los iconos de flecha de la barra de desplazamiento, la barra de estado, los botones de cierre de la barra de pestañas de documentos y el ancho del desplazador del editor; el indicador «Display File Line Ending» del editor ahora está desactivado por defecto (e0c4d2325, 6a26f4430, e130988fb).

Corrección de errores

  • Se corrigió la detección de VID/PID en Linux leyendo /sys/class/tty/<port>/device/uevent para obtener el VID/PID real del dispositivo, sorteando que QSerialPortInfo devolvía los identificadores del hub USB, de modo que las cámaras detrás de hubs se detectan correctamente (28220b351).

  • Se corrigió el flasheo de firmware del bootloader en Mac relajando las aserciones de tamaño de endpoint y añadiendo el paquete de consulta de sincronización solo cuando una escritura tiene exactamente el tamaño de un endpoint USB (86d021f92).

  • Se corrigieron las herramientas de reproducción de vídeo en Linux: Play Video File / Play RTSP Stream ahora están ocultas en Linux de 32 bits y ARM (sin ffplay incluido), con un respaldo a gnome-terminal cuando xterm no está disponible, y se restauró el binario de ffmpeg de macOS desde un marcador de posición (d342649cc, d896f4225).

  • Se aumentaron los retardos de inicio/fin del reinicio del bootloader de 0 a 5 para evitar que los comandos de borrado y escritura se solapen durante las actualizaciones de firmware (fabc168b6).

  • Se simplificó la recuperación del bootloader: forzar el bootloader para reparar una cámara inutilizada omite avisos redundantes, y tras un reinicio del bootloader DFU el IDE reintenta la actualización automáticamente en lugar de pedir al usuario que reconecte (12b924088).

  • Se permitió que los comandos de volcado del frame buffer/búfer de TX por serie puedan abortarse a mitad de la transacción (4a4afae1b).

  • Se eliminó el workaround de abandono por bloqueo de lectura del puerto serie que podía rellenar las respuestas con bytes cero, mejorando la fiabilidad de las transferencias USB rápidas (0ee1d8e91).

  • Se corrigió la depuración por WiFi y la reconexión automática: los puertos WiFi actualizan su marca de tiempo de última vez visto al redescubrirse, se corrigieron varios errores de iterador tras borrado en la retirada de puertos WiFi y en la detección DFU/bootloader, y la reconexión automática ahora espera hasta que el IDE no esté ocupado antes de reconectar (cf0b67dc6).

  • Se corrigió el conversor de vídeo a MJPEG para analizar la tasa de fotogramas a partir de la salida del codificador y escribir el delta correcto en milisegundos por fotograma, de modo que los vídeos convertidos se reproduzcan a la velocidad correcta (4a7ad2057).

  • Se corrigió el fallo de lanzamiento del flasheo de firmware y de las herramientas de línea de comandos incluidas forzando el backend de QProcess y corrigiendo la protección del bucle de eventos del proceso bloqueante (200fe9f3c).

  • Se corrigieron los iconos de ramas de expandir/contraer del árbol del editor de conjuntos de datos para que se rendericen correctamente en pantallas HiDPI recargando la hoja de estilos de iconos al cambiar la relación de píxeles del dispositivo (a0e78057f).

  • Las actualizaciones de paquetes/recursos ahora reinician automáticamente OpenMV IDE en lugar de simplemente cerrarse tras la instalación (178ee1b8e).

  • Se corrigió el resaltado de resultados de Buscar/búsqueda y se hizo que las acciones de resultado de búsqueda/apertura de archivos recurran al primer editor visible cuando no hay editor actual (48c402dfc).

  • Se corrigió el cuadro de diálogo del cargador de firmware para que su texto de advertencia se borre y la ventana cambie de tamaño correctamente cuando se completa una operación de flasheo (c505c6ade).

  • Se corrigieron varios errores de la interfaz en macOS: la barra de pestañas ya no genera errores de carga de iconos y se muestra correctamente al abrir un archivo (9be8c58de, 5322cf968).

  • Se corrigió el estilo y la alineación de línea base de la barra de estado / panel de salida en macOS y Linux (4fc4545de, d29b2baa0, a440d5cd8).

  • Se corrigió la impresión de código fuente para que el encabezado del título de la página tenga márgenes superior y laterales adecuados en lugar de tocar el borde de la página (786d6012c).

Soporte de plataformas y herramientas

  • Base de Qt Creator: 10.0.1 (rebasada desde 4.0.2).

  • OpenMV IDE: 4.0.0 -> 4.0.1.

  • OpenMV Cam RT1062 (i.MX RT1060): el firmware inicial de RT1062, el cargador de flash, las imágenes firmadas, la entrada imx.txt y las claves de configuración de blhost para secure-bootloader/eFuse se añadieron en la carpeta de firmware OPENMV5 (a6595f5f7); la placa se consolidó luego en una única carpeta OPENMV_RT1060, y se añadió una variante de placa distinta con Secure Bootloader (SBL) (OpenMV_Cam_RT1062_SBL) (d2b11c6c8, 5baf28c6e).

  • La cadena de herramientas de flasheo incluida (blhost, bossac, dfu-util, dfuse + controladores STM32, picotool, sdphost, ffmpeg, controladores FTDI/Arduino) se volvió a empaquetar para Windows/macOS/Linux, con los binarios de Linux marcados como ejecutables (fbfa4903a, bfb6b32e2, 9551c64da).

  • DFU en ARM64 Linux: un dfu-util aarch64 incluido más la detección arm64 en el listado de dispositivos y en la descarga de firmware habilita el flasheo DFU en hosts como la Raspberry Pi (16bc6fe0f, 470e5702e).

  • La detección de dispositivos i.MX ahora funciona en Linux (analizando lsusb) y macOS (escaneando ioreg), habilitando la carga de firmware i.MX RT en esas plataformas (e03ccbe71, 7cf505d09).

  • Restricción por plataforma: el uso de i.MX está restringido a Windows/macOS/Linux-x86_64 con un error crítico en otros casos, y el flasheo de Portenta/Nicla en ARM/ARM64 Linux muestra una advertencia «DFU Util may not be stable on this platform» (9513f6475).

  • OpenGL en Windows: se restauró el renderizado por software incluyendo opengl32sw, Qt6OpenGL y el soporte OpenGL de Qt6Gui en el paquete desplegado (aaaa1928f).

  • Carpetas/ids de placas Arduino renombradas. Las carpetas de firmware y los ids de placa de boards.txt de Portenta, Nicla Vision y Nano 33 BLE Sense se renombraron a ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION y ARDUINO_NANO_33_BLE_SENSE (a70d6562a); la carpeta/id de placa de Nano 33 BLE Sense se pasó posteriormente a minúsculas como arduino_nano_33_ble_sense para coincidir con el nombre de placa informado por el dispositivo (22750d8c7, a801a81de).

  • Los cargadores de flash del bootloader OPENMV_RT1060 (blhost_flash_loader.bin, sdphost_flash_loader.bin) se actualizaron (5baf28c6e).

  • QCustomPlot: 2.1.1 (biblioteca de gráficas incluida) (8801415fe).

  • Las imágenes de firmware en disco se volvieron a empaquetar para todas las placas OpenMV/Arduino compatibles (OPENMV1-4P, OPENMV4_PRO, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_PORTENTA_H7, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060, CYW4343, más el firmware WiFi WINC1500), con imágenes de firmware y, cuando corresponde, de bootloader/uvc (fbfa4903a).

Cambios que rompen la compatibilidad

Estos son cambios de flujo de trabajo y de comportamiento visibles para el usuario; el rebase a Qt Creator 10.0.1 en sí mismo no rompe los proyectos ni los scripts de usuario.

  • Cambiaron las definiciones de placa i.MX RT1060. Las entradas EVKBMIMXRT1060 y OPENMV5 se reemplazaron por una única placa OPENMV_RT1060 (OpenMV Cam RT1062, más una variante SBL), y se eliminaron las antiguas carpetas de firmware (d2b11c6c8).

  • El tiempo de espera predeterminado de respuesta a comandos es de 10000 ms (era de 5000 ms en 4.0.0); el texto de ayuda de -override_read_timeout se actualizó para coincidir (4a4afae1b).

  • Cambió el comportamiento de conexión/desconexión. Auto Reconnect ahora está desactivado por defecto, y conectarse o desconectarse ya no detiene el script en ejecución por defecto, a menos que el nuevo conmutador «Stop Script on Connect/Disconnect» esté habilitado (que está activado por defecto) (a0e78057f).

  • El flujo de actualización reinicia el IDE. Las actualizaciones de paquetes/recursos ahora reinician OpenMV IDE automáticamente en lugar de cerrarse tras la instalación (178ee1b8e).

  • Ids de placas Arduino renombrados. Los ids de placa de boards.txt y las carpetas de firmware de Portenta, Nicla Vision y Nano 33 BLE Sense se renombraron a ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION y ARDUINO_NANO_33_BLE_SENSE (este último pasado luego a minúsculas como arduino_nano_33_ble_sense) (a70d6562a, 22750d8c7, a801a81de).