v4.7.0

v4.7.0 es una versión importante centrada en la NPU y en ROMFS, construida sobre Qt Creator 14.0.2. Introduce un flujo de trabajo de sistema de archivos ROM en el dispositivo con compiladores de modelos ARM Ethos-U (Vela) y ST Edge AI integrados, añade la programación de fábrica basada en STM32CubeProgrammer para la OpenMV N6 e incluye el firmware OpenMV 4.7.0 en todas las placas. Tenga en cuenta que actualizar cualquier cámara desde un firmware anterior a 4.7.0 fuerza ahora un borrado del sistema de archivos FAT y un restablecimiento de ROMFS, lo que elimina los archivos almacenados en la memoria flash interna del dispositivo; consulte Cambios incompatibles más abajo.

Aspectos destacados

  • El flujo de trabajo del sistema de archivos ROM le permite crear, editar, grabar y restablecer un sistema de archivos de solo lectura en el dispositivo para que los modelos de ML puedan almacenarse en la cámara, integrado en los gestores de arranque DFU, IMX, Bossac, Picotool y Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)

  • Los compiladores de modelos ARM Ethos-U Vela y ST Edge AI están ahora integrados, de modo que los modelos .tflite/.onnx se compilan automáticamente para la NPU cuando se cargan en placas Ethos-U55 (OpenMV AE3) o Neural-ART (OpenMV N6). (411f708ea, 3064411ad)

  • STM32CubeProgrammer se incluye ahora para habilitar la programación de fábrica del gestor de arranque (bootloader) de la OpenMV N6 (STM32N657) mediante un FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)

  • El navegador del Model Zoo incorpora una casilla «Filter models by board type» gestionada por una nueva tabla models/index.csv que oculta los modelos incompatibles con la placa conectada. (80adb2079)

  • Alineación de ROMFS por extensión: el editor de imágenes ROMFS ordena ahora los archivos alfabéticamente y los empaqueta usando reglas de alineación de bytes de settings.json (p. ej. los modelos .tflite alineados a 16 bytes). (e87b2bf06)

  • Firmware incluido actualizado a 4.7.0 en todas las placas OpenMV y Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)

Nuevas funciones

  • El submenú del sistema de archivos ROM (New / Open / Edit ROMFS on OpenMV Cam / Reset ROMFS on OpenMV Cam) reemplaza la antigua acción única Edit ROM File System. (0bc275a0a, 958f732b5)

  • Apertura del navegador del Model Zoo con estado persistente del modelo seleccionado y una vista previa al cambiar la selección, incluyendo las bibliotecas de modelos integradas de STMicroelectronics, Qualcomm, DeGirum, Edge Impulse y Google. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)

  • El elemento de menú Convert Model for NPU bajo Machine Vision Tools compila un modelo TensorFlow Lite (.tflite) u ONNX (.onnx) para el acelerador NPU de la placa (Vela para .tflite de Ethos-U, ST Edge AI para los .tflite/.onnx de la Neural-ART de la N6) y guarda el modelo convertido en disco o en la cámara. (3913f5b8b)

  • La herramienta Copy/Convert Python File copia un script de Python a la cámara o al disco y, opcionalmente, lo compila de forma cruzada a código de bytes .mpy de MicroPython mediante mpy-cross; reside en un nuevo submenú MicroPython Tools bajo Tools. (e9d7fa143, 47188c0e3)

  • Se añadieron botones de alternancia Wrap Text al terminal serie de OpenMV y al panel de salida General Messages; ambos ajustan su salida por palabras y conservan el ajuste entre sesiones. (8c052845a, 51d3e1ad6)

  • La compilación cruzada de ROMFS con mpy-cross con indicadores de arquitectura por placa (armv7emsp/armv7emdp) permite congelar scripts de MicroPython en imágenes ROMFS. (8c71548df)

  • El diálogo del gestor de arranque (bootloader) del firmware acepta ahora archivos ROMFS *.img junto con *.bin y *.dfu, valida las extensiones por gestor de arranque y deshabilita la casilla existente Reset ROMFS file system al cargar un archivo *.img. (79f348b36)

  • Las actualizaciones desde versiones anteriores a 4.7.0 fuerzan ahora la activación de las casillas de borrado de FAT y de restablecimiento/actualización de ROMFS, y advierten de que la actualización requiere borrar el sistema de archivos FAT. (f6f3355b0)

Otros cambios y mejoras

  • Se reorganizó el model zoo de Qualcomm incluido en carpetas basadas en tareas (image_classification, object_detection, pose_estimation, semantic_segmentation, depth_estimation), se eliminaron modelos grandes no compatibles (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) y se añadieron resnet18 y densenet_121 (con mayor compatibilidad de placas), además de facemap_3dmm y FFNet_40S (solo AE3/N6). (300ce2fc2)

  • Se añadió un nuevo proveedor de modelos Edge Impulse (modelo de detección de rostros FOMO) y nuevos modelos de Google (micro_speech, mnist_lstm, person_detection) al model zoo incluido, y se añadió una acción View/Edit al menú contextual del editor de ROMFS. (80adb2079)

  • Se depuraron los enlaces del model zoo: se añadió el modelo face_attrib_net de Qualcomm (AE3/N6), se eliminó la entrada rota de YOLO-NAS y se corrigieron los filtros de compatibilidad de placas de varios modelos de detección de objetos de STMicroelectronics. (fd639bda0)

  • Se añadieron más etiquetas de modelos, se cambió la configuración del acelerador NPU de un modelo de stai a stedgeai y se amplió el filtro de compatibilidad de placas de st_yolo_x (ahora también OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 y NICLA_VISION además de AE3/N6). (1515631ce)

  • Añadir un modelo .tflite a ROMFS omite ahora la compilación de Vela/Ethos-U si el modelo ya está compilado para Ethos-U (simplemente se copia), y la acción del diálogo se renombró de Add Model a Model Zoo. (9c0b178fa)

  • La compilación de ST Edge AI omite la conversión de los modelos que ya están en formato NBIN. (3064411ad)

  • El diálogo del compilador Vela analiza el uso de SRAM reportado por el modelo frente al tamaño de heap configurado de cada placa y muestra un porcentaje con advertencias o errores cuando el modelo supera el 90 % o el 100 % del heap disponible. (7140fc2aa)

  • El compilador Vela reporta ahora un error claro de «not supported on this platform» en lugar de fallar de forma silenciosa, y arrastrar un modelo al model zoo ya no requiere que Vela esté presente. (c736dd54d, 0ad7fd705)

  • El compilador Ethos-U de Vela se ejecuta ahora mediante el entorno de ejecución de Python embebido incluido (python -m ethosu.vela) en lugar de un binario independiente. (52f9b8820)

  • Los diálogos de compilación de modelos de larga duración de ST Edge AI y Vela muestran ahora un aviso «This command takes a while to execute. Please be patient.». (fc9ac2ab5)

  • Abrir ejemplos o nuevos scripts en sensores PAG7936 (N6/AE3) y PS5520 aumenta ahora automáticamente sensor.set_framesize(QVGA) a VGA para los sensores de mayor resolución. (dfc27dd25)

  • Se añadió la corrección automática de scripts de ejemplo para las cámaras térmicas FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 y la cámara de eventos Prophesee GENX320. (1f54ad01b)

  • Los recursos descargables del IDE (firmware/modelos/documentación) se instalan ahora en un directorio de datos de aplicación compartido para todos los usuarios mediante una nueva API ICore::allUsersResourcePath(), con el manifiesto de versión de recursos almacenado en un archivo OpenMVIDE.json un nivel por encima de la carpeta de recursos de todos los usuarios. (be308ace2, 7c7dddb87)

  • Durante las actualizaciones de firmware del paquete de sistema de Alif, el IDE solicita ahora al usuario que apague y vuelva a encender (desconectar y reconectar) la cámara antes de continuar. (162d128f9, 756611696)

  • Se rediseñó el flujo de descarga del gestor de arranque/firmware de Alif (Ensemble) para que sea compatible con ROMFS: genera el App TOC tras escribir el gestor de arranque, copia las imágenes bin/sign en una subcarpeta images/ y graba firmware_pad.toc. (f623c9231)

  • Se simplificaron los nombres de visualización de las placas en el selector de firmware eliminando los redundantes sufijos del chip entre paréntesis y las etiquetas «Legacy» (p. ej. «OpenMV Cam H7 (STM32H743)» pasa a ser «OpenMV Cam H7»). (334b04dbd)

  • Se renombraron dos acciones del menú Tools para mayor claridad: Run Bootloader (Load Firmware) es ahora Load Custom Firmware, y Erase Onboard Data Flash es ahora Erase Internal FAT File System (el diálogo de confirmación se refiere ahora al sistema de archivos FAT interno de la cámara). (0bc275a0a)

  • Se restauraron los atajos de teclado Ctrl+Shift+L (Load Custom Firmware) y Ctrl+Shift+E (Erase Internal FAT File System), y se devolvió el elemento Preferences al menú Edit. (dabb6f7d9, b5daf59a6)

  • Se deshabilitó la detección automática del compilador C/C++ y de la cadena de herramientas al inicio, ya que el IDE está orientado a MicroPython. (f42fcc8f2)

  • Se añadió el logotipo del socio Alif Semiconductor (claro/oscuro) a la sección de socios del diálogo About. (4878781bb)

  • La lectura del firmware de la placa conectada puede ahora vaciar los datos obsoletos del puerto serie antes de emitir el comando, mejorando la fiabilidad de las consultas de firmware/versión. (c15a46f5b)

  • Se mejoró la fiabilidad de la conexión ROMFS forzando una reconexión/actualización en las operaciones de lectura, escritura y restablecimiento de ROMFS. (f9bc83007)

Correcciones de errores

  • Se corrigieron los diálogos de guardado de modelos/scripts y la adición de archivos/modelos a ROMFS para que usen el sufijo de archivo simple en lugar del sufijo completo, evitando extensiones corruptas al renombrar archivos con puntos en sus nombres. (52c6820d2)

  • Se corrigió un desbordamiento de la barra de progreso de carga DFU en transferencias grandes calculando el porcentaje con aritmética de 64 bits. (4b91ff2ba)

  • Se corrigió la grabación de firmware/gestores de arranque OpenMV antiguos protegiendo los pasos de borrado y programación de la memoria flash frente a rangos de sectores de flash no válidos (no positivos) y mostrando un error explícito en lugar de fallar, y se corrigió la protección de acceso a ROMFS durante la actualización de firmware antiguo. (ae2cc15b4, 235dbdb10)

  • Se corrigió la detección de placas por puerto serie para que el filtro inverso de número de serie solo se aplique durante la validación del puerto (no durante la conexión), y se añadieron filtros inversos para la placa i.MX de modo que se excluyan los números de serie del modo gestor de arranque. (ae2cc15b4)

  • Se corrigió la persistencia del tipo de placa para que un mapeo de placa guardado previamente ya no se sobrescriba al realizar una selección manual del tipo de placa. (c42d36001)

  • La reparación del gestor de arranque resuelve ahora el nombre de visualización de una placa oculta a su cadena de arquitectura, de modo que la reconexión/reparación de firmware mapee la placa correcta. (a1de7a09c)

  • La detección de placas coincide ahora con las cadenas de arquitectura de la placa sin distinguir mayúsculas de minúsculas. (7a2e0e93f)

  • Se corrigió el fallo al montar el disco del dispositivo en desconexiones/reconexiones rápidas haciendo persistente el hilo de escaneo de unidades y reintentando los escaneos hasta tres veces, y se hizo que el escaneo de unidades se ejecute de forma fiable en el hilo de escaneo. (455dbe967, 58c0e5456)

  • Se corrigió el fallo de ejecución del compilador de modelos (ST Edge AI y Vela) en Macs Intel permitiendo la ruta de la herramienta ARM64 al ejecutarse bajo Rosetta. (32e309e86)

  • Se corrigieron problemas de caché de la herramienta de Python y del servidor de lenguaje enrutando todos los __pycache__ de Python incluidos a un directorio de recursos compartido y precalentando la pycache de blhost de i.MX antes de la conexión limitada en tiempo al gestor de arranque, de modo que la grabación ya no agota el tiempo de espera. (f64f3330f)

  • Se corrigió la ruta de la cabecera de MicroPython usada por el servidor de lenguaje de Python (para autocompletado) para que se resuelva desde la ruta de recursos de todos los usuarios, y se hizo más robusta la búsqueda de la ruta de recursos de todos los usuarios cuando el filtrado por nombre de usuario no encuentra nada. (5f2648565, fc1938818)

  • Se corrigieron los enlaces rotos de la documentación de ST Edge AI en el diálogo de opciones del compilador convirtiendo las rutas de archivo locales en URL file:// adecuadas. (3ac136444)

  • Se corrigió la autoindentación del editor de Python para que las líneas ya no se desindenten incorrectamente después de una línea (eléctrica) que termina en dos puntos, p. ej. tras cabeceras if/for/def. (6555f44ba)

  • Se corrigió la alineación de los registros de directorio de ROMFS para que los desplazamientos de carpeta tengan en cuenta el tamaño del registro del nombre del directorio, y se aumentó el retardo entre archivos al desempaquetar/crear archivos de ROMFS y del model zoo para garantizar marcas de tiempo de creación distintas. (9bf7e1d9e, d968a6e46)

  • Se corrigió un desbordamiento de enteros en la conversión de mean a depthwise-conv del optimizador de grafos de Vela calculando el multiplicador de salida en 64 bits, y se corrigió el nombre base usado en el título/salida del diálogo del compilador Vela. (d217a46e9, 8376490eb)

  • Se corrigió la restauración de las carpetas expandidas y del modelo seleccionado del navegador del model zoo al reabrirlo, y se cambió el diálogo a asignación en heap para evitar problemas de tiempo de vida de la GUI. (84a63ef4c)

  • Se corrigió la ruta de guardar como del Model Zoo para que el directorio recordado se almacene como una carpeta en lugar de como un nombre de archivo completo. (be877f7af)

  • Se conservó la ruta de recursos de usuario heredada en lugar de eliminarla al inicio, evitando un error «close any programs viewing OpenMV IDE data» cuando la carpeta antigua está bloqueada. (775656775)

  • Se corrigieron los scripts del instalador de controladores de Windows y los archivos de catálogo/inf para que los controladores OpenMV DFU, dfuse, FTDI, Arduino, pybcdc y VCR se instalen de forma fiable y reporten correctamente los códigos de éxito, se reforzaron los scripts de instalación del controlador DFU dfuse/vcr y se volvieron a firmar los catálogos del controlador OpenMV DFU incluidos. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)

  • Se corrigió el instalador de Linux para que instale pyusb mediante el paquete python3-usb de la distribución y añada build-essential en lugar de ejecutar pip install pyusb, y para que detecte el sistema operativo mediante /etc/os-release. (c471ddc42, 4014a0ba5)

  • El instalador de Windows habilita ahora el soporte de rutas largas para que los archivos profundamente anidados de ST Edge AI se instalen correctamente. (0b3ca6945)

Soporte de plataformas y herramientas

  • Base de Qt Creator: 14.0.2.

  • Firmware OpenMV incluido: actualizado a 4.7.0 en todas las placas OpenMV y Arduino (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); el firmware se recompiló con soporte de ROMFS (romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)

  • ROMFS de OpenMV N6: aumentado de 16 MB a 24 MB, con la imagen romfs movida a la configuración alternativa 3 de DFU. (d0bbb1fe7, d7d3120b3)

  • ROMFS de OpenMV AE3: aumentado de 16 MB a 24 MB, con reglas de alineación de 16/32 bytes añadidas para los archivos de modelo .bin incluidos en todas las placas. (746da8914)

  • STM32CubeProgrammer (STM32_Programmer_CLI) incluido para macOS, Linux y Windows con la base de datos completa de dispositivos STM32 y los cargadores externos para la programación de fábrica de la N6; la instalación se redujo eliminando archivos de cargadores externos y de base de datos por MCU no utilizados para disminuir su tamaño. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)

  • Compilador ST Edge AI (stedgeai) 2.1.0 incluido (Windows) para la NPU Neural-ART de la N6. (3064411ad)

  • Compilador ARM Ethos-U Vela 4.2.0 (con numpy 2.2.4) incluido para Linux x86-64, macOS (Apple silicon) y Windows. El paquete de Windows se añadió primero con Vela 4.1.0 / numpy 2.2.3 y luego se actualizó a la versión final 4.2.0 / numpy 2.2.4. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)

  • mpy-cross 1.25.0.post2 incluido (macOS/Windows). (8c71548df, 3ab42d58a)

  • Alif Security Toolkit: actualizado a v1.104.0 (binarios setools firmados y PDF de la Guía del usuario v1.104.0) para las placas basadas en Alif Ensemble. (43260719c, 75a58e61b)

  • Se añadieron configuraciones de NPU OPENMV_AE3 (Alif Ensemble) orientadas a los aceleradores ethos-u55-256 y ethos-u55-128 con configuraciones de sistema RTSS HP/HE SRAM/MRAM/OSPI. (1f5fc546d, 411f708ea)

  • Se añadieron diagramas de pinout para las cámaras OpenMV N6 y AE3 (sensor PAG7936) al selector de pinout, y un nuevo ejemplo de cámara de eventos en escala de grises Genx320 que demuestra la configuración del filtro anti-parpadeo. (60184bbc5, 6d04b1b50)

  • Se actualizó la coincidencia de PID USB de la Arduino Nicla Vision para reconocer un nuevo PID de aplicación (0x055F) junto al original (0x045F). (91ce4007c)

  • Se actualizaron los parámetros de grabación del gestor de arranque seguro de NXP/blhost para usar una dirección/longitud de FCB explícita y un tamaño de disco MBR, alineándose con el kit de herramientas spsdk más reciente. (16b66c3e2)

  • El instalador de Windows incluye ahora un controlador dedicado del gestor de arranque DFU de STM32 y los redistribuibles de Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)

  • Se eliminó del IDE el model zoo de DeGirum YOLOv5/YOLOv8 incluido. (26710be1c)

Cambios incompatibles

Rupturas de flujo de trabajo y comportamiento visibles para el usuario en v4.7.0. No hay ninguna ruptura de la API de scripting, pero tenga en cuenta lo siguiente:

  • Sistema de archivos FAT borrado al actualizar desde versiones anteriores a 4.7.0. Actualizar cualquier OpenMV Cam desde un firmware anterior a 4.7.0 fuerza ahora el borrado del sistema de archivos FAT y el restablecimiento/actualización del ROMFS durante la actualización del firmware (las casillas del diálogo se fuerzan a activadas y no pueden deshabilitarse), por lo que los archivos de usuario almacenados en la memoria flash interna del dispositivo se eliminarán al actualizar. (f6f3355b0)

  • Binarios del firmware UVC y del gestor de arranque de la Portenta H7 eliminados. Se eliminaron las imágenes precompiladas del firmware de webcam UVC (uvc.bin/dfu/elf) para todas las placas, y se eliminaron del paquete los binarios del gestor de arranque de la Arduino Portenta H7; estas imágenes precompiladas ya no pueden grabarse desde el IDE. (c44e33d70)

  • Reubicación del directorio de recursos. Los recursos descargables del IDE (firmware, model zoo, documentación) se instalan ahora en un directorio de datos de aplicación compartido para todos los usuarios en lugar de en la ruta de recursos por usuario, y el manifiesto de versión se movió de QSettings a un archivo OpenMVIDE.json almacenado un nivel por encima de la carpeta de recursos de todos los usuarios (con réplica compatible hacia atrás en QSettings). Se activa una nueva descarga de recursos en la primera ejecución tras la actualización. (be308ace2, 7c7dddb87)