v4.0.1

A v4.0.1 é uma modernização de raiz que rebasa o OpenMV IDE a partir da sua base histórica Qt Creator 4.0.2 para o Qt Creator 10.0.1. A pilha completa de plugins OpenMV (visualizador de buffer de fotograma, série/protocolo, terminal, histograma, editores de limiares e pontos-chave, ferramentas de vídeo e invólucros de gravação de firmware) é reaplicada sobre a nova base, juntamente com um par de temas polidos Flat Light/Flat Dark, realce de sintaxe Python com consciência OpenMV, um diálogo unificado de carregamento de firmware, e suporte alargado de deteção de dispositivos ARM64 no Linux e macOS. A mudança de base do Qt Creator é uma modernização interna de grande escala, mas não quebra projetos de utilizador; alguns comportamentos predefinidos e definições de placa foram alterados (consulte Alterações com impacto).

Destaques

  • Rebase para Qt Creator 10.0.1. O IDE migra do Qt Creator 4.0.2 para o 10.0.1: o Qt Creator upstream é reduzido ao mínimo de compilação (98b95fd3b) e o plugin OpenMV completo é readicionado sobre a nova base (0e8047372).

  • Temas Flat Light e Flat Dark. Um par de temas claro/escuro polidos é fornecido com estilos de realce de sintaxe do editor personalizados; o seletor de Tema é novamente exposto nas definições Gerais, restrito apenas a esses dois, e o tema predefinido é agora flat-dark (21348924b, 13c3849e8).

  • Terminal série Raw-REPL. O terminal agora executa, interrompe, recarrega e cola scripts através de uma máquina de estados Raw-REPL MicroPython adequada (CTRL-A/CTRL-D), tratando de forma fiável scripts maiores (a7241079c).

  • Edição Python com consciência OpenMV. Módulos, classes, funções, métodos e argumentos OpenMV são realçados sintaticamente a partir da documentação incluída, com auto-completação mais inteligente e um indentador automático com consciência de parênteses e dois-pontos (801eab8a8, 8e9f967e7, 9fdff9c6d).

  • Diálogo unificado de carregamento de firmware. A gravação agora apresenta um único diálogo contextual (A apagar disco / A gravar firmware / A gravar bootloader) com uma barra de progresso e um registo Mostrar/Ocultar Detalhes expansível que memoriza o estado (5b51356f8).

  • Suporte OpenMV Cam RT1062. Firmware, carregadores DFU/flash, enumeração SDP/blhost e um passo de programação por queima de eFuse foram adicionados para a nova placa da família i.MX RT1060 (a6595f5f7), à qual foi posteriormente atribuída uma variante de placa Secure Bootloader (SBL) distinta (d2b11c6c8).

Novas funcionalidades

  • Flags de automatização. As flags -auto_update (release / development / caminho), -auto_erase e -auto_run permitem que o IDE grave/apague o firmware e depois execute o script aberto ao ligar; após uma reconexão do bootloader, o IDE aguarda até 10 segundos para que a câmara volte a ser enumerada antes de continuar (b54affe79, f4e03d978).

  • Flag ``-disable_stop`` e um interruptor de menu stop on connect/disconnect permitem que os utilizadores desativem a paragem do script ao ligar ou desligar (02724ca7d).

  • Interruptor Stop Script on Connect/Disconnect (ativado por predefinição) desacopla a ligação/desligação da paragem do script em execução; a Reconexão Automática está agora desativada por predefinição (a0e78057f).

  • Prompt de tipo de placa. Quando uma placa ligada reporta uma arquitetura não incluída no mapeamento de firmware, o IDE solicita agora ao utilizador que selecione o tipo de placa (memorizando a última escolha) em vez de abortar com o erro «Unsupported board architecture!» (b7165eb3d).

  • Realce de sintaxe Python OpenMV colore módulos, classes, dados, funções, métodos e argumentos OpenMV conhecidos usando listas de palavras-chave preenchidas a partir da documentação incluída (801eab8a8, b4d481bf5).

  • ~300 definições de linguagem KSyntaxHighlighting são fornecidas com o editor, pelo que os ficheiros fonte em muitas linguagens são realçados imediatamente (39674a4dc).

  • Scripts de exemplo OpenMV incluídos (Hello World, captura de imagem, gravação de vídeo, fluxo ótico, câmaras de eventos, obturador global, FLIR Lepton e mais) estão agora comprometidos e fornecidos com o IDE (938ac6bbe).

  • Editor binário/hexadecimal está ativado para que os utilizadores possam abrir e inspecionar ficheiros binários, com a barra de ferramentas reduzida para se adaptar à UI do OpenMV (675bda966).

  • Comparação de documentos em memória. Os novos ficheiros e os exemplos só de leitura obtêm agora um ficheiro temporário de suporte para que os documentos não guardados possam ser comparados, e o diálogo de comparação de ficheiros externos memoriza a última pasta utilizada (5281e5f6c, 2934d5216).

  • Plugin de editor com separadores é readicionado, dando ao IDE uma barra de documentos com separadores; o código-fonte do plugin de minimapa foi readicionado, mas deixado desativado na compilação desta versão (0e8047372).

  • Gravação DfuSe e pydfu de fallback é restaurada para dispositivos DFU que não podem ser direcionados por número de série, com tratamento automático de apagamento sem diálogo durante a ligação (e42a5be7d).

  • Queima de eFuse i.MX RT. A programação de firmware agora queima um eFuse (efuse-program-once) para as placas da família RT1060 (8053bb578, a6595f5f7).

  • Página do assistente de instalação de raiz no Linux permite ao utilizador optar por entrar ou sair da instalação elevada de bibliotecas apt e da instalação de regras udev, em vez de as executar sempre (6bac80984).

Outras alterações e melhorias

  • Pesquisa de porta série em segundo plano. A enumeração de portas foi movida para fora da thread da UI para um worker dedicado ScanSerialPortsThread, de modo a que o IDE permaneça responsivo durante a pesquisa (7be4dab26).

  • Deteção de dispositivos mais abrangente. A pesquisa de portas foi refatorada num auxiliar reutilizável filterPorts() que incorpora dispositivos picotool e DFU i.MX e reclassifica portas série de bootloader Arduino conhecidas (PIDs NRF/RPI antigos e de carregador) como dispositivos DFU (25a5d30fd).

  • Mais fallbacks de terminal. Ao lançar as ferramentas de reprodução de vídeo incluídas (Play Video File / Play RTSP Stream) no Linux, o IDE recorre agora a lxterminal, konsole e xfce4-terminal, além de xterm e gnome-terminal (df54007e0).

  • Reporte de chaves de placa. O registo de câmara analisa agora uma resposta «Remaining N» para informar o utilizador sobre quantas chaves de placa restam, e adiciona uma mensagem de erro distinta «Invalid Board Key for Board Type» (5759e73eb).

  • Transferências alojadas no GitHub. As verificações de versão e as transferências de recursos utilizam agora raw.githubusercontent.com/openmv/openmv-ide-version e as versões de openmv/openmv-ide em vez de upload.openmv.io (994109c28).

  • HTTPS em todo o lado. Todos os pedidos web OpenMV (verificações de versão, registo de ID SWD, transferências de recursos e firmware) utilizam agora https:// (54347cad0).

  • Automatização da configuração do Linux. O instalador deteta bibliotecas e regras udev em falta e, se necessário, gera um setup.sh executável com os comandos exatos de instalação apt-get/pip e regras udev (e um README a dizer ao utilizador para o executar) (c6dc705e6).

  • Tolerância a placas lentas. O terminal série aumenta o tempo de espera por leitura de 1 ms para 10 ms e emite um reconhecimento «OK» quando um script termina (c935e4489).

  • Progresso de gravação mais suave. As barras de progresso do carregador de firmware passam agora de indeterminado para 0-100% imediatamente, em vez de aguardar o primeiro incremento de percentagem, em dfu-util, bossac, picotool e gravação i.MX (19d947308, 86d021f92).

  • Recuperação de bootloader antigo é readicionada através de um modo de bootloader não rápido que envia comandos de apagamento/escrita sem o preenchimento de sincronização de consulta do modo rápido (c20112c07).

  • Consolas de ferramentas mais limpas. Os terminais de gravação de firmware (bossac, dfu-util, picotool, imx, ferramentas de vídeo) são agora executados como processos de consola autónomos com saída de comandos mais bem formatada (8053bb578).

  • Polimento da auto-completação. A completação distingue classes, métodos e funções com sugestões de argumentos separadas, usa ícones de modelo de código adequados e respeita o âmbito público/protegido/privado pelo prefixo de sublinhado; o processador de completação de palavras-chave também ignora o espaço em branco inicial antes do cursor na completação invocada explicitamente (manualmente) (8e9f967e7, 68b26b5fc).

  • Diálogos consolidados. Os diálogos ad-hoc «Don’t show this again» do OpenMV – incluindo o diálogo de informação de arranque OpenMV Cam LED Colors e os prompts de atualização de firmware e de exemplos – são unificados em diálogos CheckableMessageBox «Do Not Ask/Show Again»; foi adicionado um botão «Reset Do Not Ask/Show Again Dialogs» às definições Gerais, e os marcadores de dobragem de código estão desativados por predefinição (9fdff9c6d).

  • Identidade visual com consciência de tema. Ecrãs de carregamento em modo escuro, logótipos de chip ST e NXP em modo escuro/claro na caixa Acerca de, cores de tooltip em modo escuro, e cores de ícone de auto-completação corretas foram adicionados (d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).

  • Limpeza do visualizador de imagens. As ações de partilha, fundo, contorno e «definir como predefinição» estão ocultas, foi adicionada uma ação de ajuste ao ecrã e o redimensionamento de imagens animadas foi corrigido (b37c55e25).

  • Limpeza do menu de contexto. «Show in File System View», «Open Terminal», «File Properties» e as entradas «Add/Delete UTF-8 BOM on Save» estão ocultas (5d862c78e).

  • Terminal série escuro. O terminal autónomo utiliza um tema escuro adequado com barras de deslocamento estilizadas, ícones de barra de ferramentas atualizados e recarregamento correto de ícones de barra de deslocamento em alto-DPI entre ecrãs (5c3af6880).

  • Limpeza de Localizar/Pesquisar. O painel de resultados obtém um tema escuro, o seletor de motor de pesquisa está oculto, as etiquetas são simplificadas, e Localizar em Ficheiros tem por predefinição a pasta Documentos/OpenMV (20a806550).

  • Identidade da aplicação. O IDE apresenta agora o ícone OpenMV correto no ambiente de trabalho, na barra de título e na barra de tarefas (com tratamento de alto-DPI no Windows), e o id do IDE foi alterado para openmvide (8ad1eed1f).

  • Ecrã de carregamento em alto-DPI apresenta uma imagem de ecrã de carregamento 2x em ecrãs Retina/escala a 200% (626ff673e).

  • Reparação da barra de ações. A barra de ações lateral esquerda (Novo Ficheiro, Abrir, Guardar, Anular, Refazer, Cortar, Copiar, Colar) foi reparada e recebeu ícones OpenMV personalizados (b8479b5d0).

  • Logótipos no diálogo Acerca de. Tanto o logótipo do parceiro Arduino como o do Edge Impulse estão agora visíveis (o Edge Impulse estava anteriormente oculto) com variantes 2x em alto-DPI, e as ilustrações de ecrã de carregamento incluídas foram atualizadas (splash-small-2 / splash-large-2) (5facd8d9a).

  • Select Word Under Cursor está ativado; os comandos Go to Block Start/End (Ctrl+[ / Ctrl+]) e Select Block Up/Down foram brevemente reativados (36ed5b1a8) mas deixados desativados na versão (626ff673e).

  • Entrada de ambiente de trabalho Linux obtém uma categoria Electronics, um comentário de descrição e palavras-chave de pesquisa (embedded electronics, microcontroller, micropython, computer/machine vision) (470e5702e).

  • Migração de recursos. Os recursos do utilizador foram movidos para uma localização com versão (a pasta qtcreator antiga é removida no arranque), e os avisos inócuos de tipo de letra DirectWrite no Windows são suprimidos (a04af5351, 70765dc2a).

  • Opções internas ocultas. As opções Core internas -color e -theme estão ocultas da saída de ajuda, e o modo de apresentação foi reativado (434c7b4cc).

  • Personalizações de núcleo reaplicadas à barra de ações elegante/widget de separadores, gestor de mensagens/janela de saída, ações de proxy, realçador de sintaxe e editor de texto (0e8047372).

  • QCustomPlot 2.1.1. A biblioteca de representação gráfica incluída foi atualizada para compatibilidade com Qt 6.4 e tratamento correto de DPI de ecrã que muda dinamicamente (8801415fe).

  • Melhorias cosméticas da UI nos ícones de seta das barras de deslocamento, na barra de estado, nos botões de fechar da barra de separadores de documentos e na largura do deslizador do editor; o indicador «Display File Line Ending» do editor está agora desativado por predefinição (e0c4d2325, 6a26f4430, e130988fb).

Correções de erros

  • Corrigida a deteção de VID/PID no Linux através da leitura de /sys/class/tty/<port>/device/uevent para o VID/PID real do dispositivo, contornando o retorno dos identificadores do hub USB por parte do QSerialPortInfo, de modo a que as câmaras por detrás de hubs sejam detetadas corretamente (28220b351).

  • Corrigida a gravação de firmware do bootloader no Mac, flexibilizando as asserções de tamanho de endpoint e acrescentando apenas o pacote de consulta de sincronização quando uma escrita é exatamente do tamanho de um endpoint USB (86d021f92).

  • Corrigidas as ferramentas de reprodução de vídeo no Linux: Play Video File / Play RTSP Stream estão agora ocultos em Linux de 32 bits e ARM (sem ffplay incluído), com fallback para gnome-terminal quando o xterm não está disponível, e o binário ffmpeg do macOS foi restaurado a partir de um marcador de posição (d342649cc, d896f4225).

  • Aumentados os atrasos de início/fim de reinício do bootloader de 0 para 5, de modo a evitar a sobreposição de comandos de apagamento e escrita durante as atualizações de firmware (fabc168b6).

  • Recuperação do bootloader simplificada: forçar o bootloader a reparar uma câmara bloqueada ignora prompts redundantes, e após um reinício do bootloader DFU o IDE tenta automaticamente a atualização novamente em vez de pedir ao utilizador para reconectar (12b924088).

  • Permitida a interrupção a meio da transação dos comandos de despejo do buffer de fotograma/TX-buffer em série (4a4afae1b).

  • Removida a solução alternativa de abandono em caso de bloqueio de leitura da porta série, que podia preencher respostas com bytes zero, melhorando a fiabilidade da transferência USB rápida (0ee1d8e91).

  • Corrigida a depuração WiFi e a reconexão automática: as portas WiFi atualizam o seu registo de hora da última ocorrência na redescoberta; vários erros de iterador-após-apagamento na retirada de portas WiFi e na deteção DFU/bootloader foram corrigidos; e a reconexão automática aguarda agora que o IDE não esteja ocupado antes de reconectar (cf0b67dc6).

  • Corrigido o conversor de vídeo para MJPEG para analisar a taxa de fotogramas a partir da saída do codificador e escrever o delta correto em milissegundos por fotograma, de modo a que os vídeos convertidos sejam reproduzidos à velocidade correta (4a7ad2057).

  • Corrigida a falha no lançamento da gravação de firmware e das ferramentas de linha de comandos incluídas, forçando o backend QProcess e corrigindo a proteção do ciclo de eventos do processo bloqueante (200fe9f3c).

  • Corrigidos os ícones de expansão/colapso de ramificações da árvore do editor de conjuntos de dados para serem apresentados corretamente em ecrãs HiDPI, recarregando a folha de estilos dos ícones na alteração do rácio de pixel de dispositivo (a0e78057f).

  • As atualizações de pacotes/recursos agora reiniciam automaticamente o OpenMV IDE em vez de simplesmente fechar após a instalação (178ee1b8e).

  • Corrigido o realce de resultados de Localizar/pesquisar e as ações de resultado de pesquisa/abertura de ficheiros recorrem agora ao primeiro editor visível quando não existe editor atual (48c402dfc).

  • Corrigido o diálogo do carregador de firmware para que o texto de aviso seja limpo e a janela seja redimensionada corretamente quando uma operação de gravação termina (c505c6ade).

  • Corrigidos vários erros de UI no macOS: a barra de separadores já não gera erros de carregamento de ícones repetidamente e é apresentada corretamente ao abrir um ficheiro (9be8c58de, 5322cf968).

  • Corrigido o estilo da barra de estado/painel de saída e o alinhamento da linha de base no macOS e Linux (4fc4545de, d29b2baa0, a440d5cd8).

  • Corrigida a impressão de código-fonte para que o cabeçalho do título da página tenha margens superiores e laterais adequadas, em vez de tocar na borda da página (786d6012c).

Plataformas e ferramentas suportadas

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

  • OpenMV IDE: 4.0.0 -> 4.0.1.

  • OpenMV Cam RT1062 (i.MX RT1060): o firmware inicial RT1062, o carregador flash, as imagens assinadas, a entrada imx.txt e as chaves de configuração blhost de bootloader seguro/eFuse foram adicionados na pasta de firmware OPENMV5 (a6595f5f7); a placa foi depois consolidada numa única pasta OPENMV_RT1060, e foi adicionada uma variante de placa Secure Bootloader (SBL) distinta (OpenMV_Cam_RT1062_SBL) (d2b11c6c8, 5baf28c6e).

  • Cadeia de ferramentas de gravação incluída (blhost, bossac, dfu-util, dfuse + controladores STM32, picotool, sdphost, ffmpeg, controladores FTDI/Arduino) foi novamente incluída para Windows/macOS/Linux, com os binários Linux marcados como executáveis (fbfa4903a, bfb6b32e2, 9551c64da).

  • DFU ARM64 Linux: um dfu-util aarch64 incluído mais deteção arm64 na listagem de dispositivos e na transferência de firmware permite a gravação DFU em anfitriões como o Raspberry Pi (16bc6fe0f, 470e5702e).

  • Deteção de dispositivos i.MX funciona agora no Linux (através de lsusb) e macOS (através de ioreg), permitindo o carregamento de firmware i.MX RT nessas plataformas (e03ccbe71, 7cf505d09).

  • Controlo de plataforma: a utilização de i.MX está restrita a Windows/macOS/Linux-x86_64, com um erro crítico noutras plataformas, e a gravação Portenta/Nicla em Linux ARM/ARM64 apresenta um aviso «DFU Util may not be stable on this platform» (9513f6475).

  • OpenGL no Windows: a renderização por software foi restaurada incluindo opengl32sw, Qt6OpenGL e suporte OpenGL de Qt6Gui no pacote implementado (aaaa1928f).

  • Pastas/ids de placas Arduino renomeados. As pastas de firmware e os ids de placa boards.txt da Portenta, Nicla Vision e Nano 33 BLE Sense foram renomeados para ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION e ARDUINO_NANO_33_BLE_SENSE (a70d6562a); a pasta/id de placa do Nano 33 BLE Sense foi subsequentemente convertida para minúsculas em arduino_nano_33_ble_sense para corresponder ao nome de placa reportado pelo dispositivo (22750d8c7, a801a81de).

  • Carregadores flash do bootloader OPENMV_RT1060 (blhost_flash_loader.bin, sdphost_flash_loader.bin) foram atualizados (5baf28c6e).

  • QCustomPlot: 2.1.1 (biblioteca de representação gráfica incluída) (8801415fe).

  • Imagens de firmware em disco foram novamente incluídas para todas as placas OpenMV/Arduino suportadas (OPENMV1-4P, OPENMV4_PRO, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_PORTENTA_H7, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060, CYW4343, mais firmware WiFi WINC1500), com firmware e, quando aplicável, imagens de bootloader/uvc (fbfa4903a).

Alterações com impacto

Estas são alterações de fluxo de trabalho e comportamento visíveis pelo utilizador; o rebase para Qt Creator 10.0.1 em si não quebra projetos nem scripts de utilizador.

  • Definições de placa i.MX RT1060 alteradas. As entradas EVKBMIMXRT1060 e OPENMV5 foram substituídas por uma única placa OPENMV_RT1060 (OpenMV Cam RT1062, mais uma variante SBL), e as pastas de firmware antigas foram removidas (d2b11c6c8).

  • O tempo limite predefinido de comando-resposta é 10000 ms (era 5000 ms em 4.0.0); o texto de ajuda de -override_read_timeout foi atualizado em conformidade (4a4afae1b).

  • Comportamento de ligação/desligação alterado. A Reconexão Automática está agora desativada por predefinição, e ligar ou desligar já não para o script em execução por predefinição, a menos que o novo interruptor «Stop Script on Connect/Disconnect» esteja ativado (o que acontece por predefinição) (a0e78057f).

  • O fluxo de atualização reinicia o IDE. As atualizações de pacotes/recursos reiniciam agora automaticamente o OpenMV IDE em vez de fechar após a instalação (178ee1b8e).

  • Ids de placas Arduino renomeados. Os ids de placa boards.txt e as pastas de firmware da Portenta, Nicla Vision e Nano 33 BLE Sense foram renomeados para ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION e ARDUINO_NANO_33_BLE_SENSE (este último posteriormente convertido para minúsculas em arduino_nano_33_ble_sense) (a70d6562a, 22750d8c7, a801a81de).