v1.3.0

A v1.3.0 reescreve a camada de comunicação com a câmera em torno de um protocolo estruturado de comando/resposta e adiciona atualização automática no próprio IDE, tanto para o IDE quanto para seus recursos empacotados. Ela é construída sobre o Qt Creator 4.0.2 e inclui o firmware 2.0.0 da câmera OpenMV. No macOS e no Linux, a gravação de firmware por DFU agora exige uma instalação única do Python mais libusb e pyusb; consulte Mudanças incompatíveis.

Destaques

  • Camada de comunicação reescrita. O código de depuração serial/USB foi reconstruído em torno de um protocolo estruturado de comando/resposta com tamanhos de resposta por comando e atrasos de espera de início/fim, para tornar mais confiáveis as operações de conexão, execução de script, frame buffer e bootloader.

  • Atualizador automático no IDE. O IDE agora verifica em openmv.io se há uma versão mais nova e oferece um botão Download, além de baixar e instalar separadamente pacotes de recursos atualizados (exemplos, firmware, documentação) e, em seguida, solicitar a reinicialização.

  • Atualização de firmware em um clique. A versão do firmware na barra de status agora é um botão clicável que compara a câmera conectada com o firmware empacotado e oferece uma atualização em um clique quando há uma versão mais nova disponível.

  • Gravação de firmware por DFU em todas as plataformas. O firmware agora pode ser gravado via DFU no Windows, macOS, Linux x86 e Linux x86_64, e o seletor de firmware aceita arquivos .dfu além de .bin.

  • Recurso automático de DFU. Quando o bootloader serial não pode ser alcançado durante uma atualização de firmware, o IDE agora oferece atualizar pelo bootloader DFU da câmera, orientando você na adição de um jumper BOOT/RST.

Novos recursos

  • Atualizador no IDE. Verifica em openmv.io se há uma versão mais nova do IDE e oferece um botão Download que abre openmv.io/download, além de baixar, descompactar e instalar pacotes de recursos openmv-ide-resources-X.Y.Z.zip diretamente no IDE antes de solicitar a reinicialização (8a1f92bb1, 194acd828, b0be97e3e).

  • Botão clicável de versão de firmware. O rótulo de versão na barra de status passou a ser um QToolButton conectado a um fluxo updateCam() que lê o firmware/firmware.txt empacotado, compara-o com a câmera conectada e oferece uma Firmware Update com apagamento opcional do sistema de arquivos interno quando há uma versão mais nova (b2ac8defe).

  • Suporte a arquivos DFU. A caixa de diálogo de gravação de bootloader/firmware agora aceita arquivos .dfu além de .bin e força um apagamento completo do sistema de arquivos interno ao gravar um .dfu. O filtro do seletor de firmware foi ampliado para Firmware Binary (*.bin *.dfu) e o fluxo de apagamento forçado para .dfu foi introduzido em 4ad2be5f9, com a caixa de seleção de apagamento desabilitada e sempre marcada que alterna automaticamente conforme a extensão do arquivo escolhido, adicionada em b2ac8defe (4ad2be5f9, b2ac8defe).

  • Recurso automático de DFU em caso de falha do bootloader. Quando uma atualização de firmware .bin não consegue iniciar o bootloader serial, o IDE agora informa Unable to connect to the bootloader! e então oferece atualizar usando o bootloader DFU da câmera, avisando que o DFU apaga o sistema de arquivos da flash interna e orientando você na adição de um fio jumper BOOT/RST e na reconexão antes de executar DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Exemplo de HoG. Adicionado um exemplo de visualização de Histograma de Gradientes Orientados (09-Feature-Detection/hog.py) usando img.find_hog() (b03a707f7).

Outras mudanças e melhorias

  • Substituiu o antigo código improvisado de taxa de transmissão (baud rate)/pacotes por classes OpenMVPluginSerialPortCommand/Result, opcodes __USBDBG_* e __BOOTLDR_* e auxiliares command()/commandResult() no lugar de write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • A instalação do driver de porta serial no Windows agora é silenciosa/sem intervenção, alternando os scripts de driver openmv.cmd/pybcdc.cmd para instaladores baseados em dpinst em vez do interativo InfDefaultInstall, e o instalador do Visual C++ Redistributable (vcr.cmd, executando vcredist_x86.exe e vcredist_x64.exe silenciosamente) foi adicionado e corrigido (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Correções de bugs

  • Corrigiu a quebra da gravação de firmware e da comunicação dentro de máquinas virtuais, e afrouxou vários tempos limite de comandos e o polling de frame buffer/buffer de transmissão para tornar a conexão e a execução mais robustas. A caixa de diálogo de reprogramação agora informa que “pode levar até 5 minutos” e o tempo limite do processo DFU foi aumentado de 240s para 300s em 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Corrigiu a comparação de atualização disponível de firmware/IDE para que uma versão de correção ou secundária mais nova não seja mais falsamente acionada quando um campo superior é igual, e exigiu que a caixa de diálogo do bootloader tivesse um arquivo selecionado válido antes da gravação (4ad2be5f9).

  • Fechou os identificadores de arquivo (lista de placas, arquivos de firmware/versão) após a leitura e corrigiu o preenchimento dos blocos de gravação de firmware para preencher até FLASH_WRITE_CHUNK_SIZE, evitando identificadores vazados e blocos finais mal preenchidos durante atualizações de firmware (4ad2be5f9).

  • Corrigiu o menu Help do OpenMV e os painéis de saída: a entrada About OpenMV Cam não colide mais com o papel About da plataforma (AboutRoleApplicationSpecificRole), e os painéis de saída não capturam mais os atalhos Alt/Cmd + número (a0694eac7).

  • Abrir links web externos do OpenMV (fóruns, download, suporte) agora exibe uma caixa de diálogo de erro “Failed to open” quando a URL não pode ser aberta, em vez de simplesmente não fazer nada (b0be97e3e).

Suporte de plataforma e ferramentas

  • Base do Qt Creator: 4.0.2.

  • Firmware empacotado da câmera: atualizado para 2.0.0, com novos firmware.bin/openmv.bin e os recém-adicionados firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf para OMV2 e OMV7.

  • Gravação por DFU no Windows adicionada usando um DfuSeCommand.exe da ST empacotado, o pacote de driver USB ST DfuSe (DfuSe v3.0.4.0 no Win7/Win8, v3.0.5.0 no Win8.1) e um instalador de driver dfuse.cmd (4ad2be5f9).

  • Gravação por DFU no macOS e no Linux migrou de binários dfu-util pré-compilados para um gravador pydfu.py empacotado, com o IDE exibindo os comandos de instalação necessários do libusb/pyusb. O ac248c0ec adicionou brevemente os binários dfu-util/dfu-prefix/dfu-suffix para Linux x86_64, mas o 324f243f9 removeu todos eles em favor do pydfu.py. Nenhum binário dfu-util é incluído na versão final; o static.pro empacota o diretório de dados pydfu para todos os hosts não Windows, enquanto o Windows usa o fluxo DfuSe empacotado (ac248c0ec, 324f243f9, 7837a07da).

  • Regras udev do Linux atualizadas para usar correspondência por SUBSYSTEM (cam VID 1209/PID abd1 tty e STM DFU 0483/df11) para que os links simbólicos do dispositivo e do DFU funcionem no Linux de 32 bits, e as requisições de rede com seguimento de redirecionamento foram protegidas para versões mais antigas do Qt (194acd828).

Mudanças incompatíveis

Os binários autônomos dfu-util empacotados para macOS e Linux foram removidos e substituídos por um gravador Python pydfu.py. No macOS e no Linux, a gravação de firmware por DFU agora exige uma instalação única do Python mais libusb e pyusb (o IDE exibe os comandos exatos do MacPorts/HomeBrew/apt-get). O Windows continua usando o fluxo empacotado baseado em DfuSe. Não há quebras na API de scripting, e a base do Qt Creator 4.0.2 permanece inalterada.