v1.3.0

A versão v1.3.0 reescreve a camada de comunicação com a câmara em torno de um protocolo estruturado de comandos/respostas e adiciona atualização automática integrada no IDE tanto para o próprio IDE como para os recursos incluídos. É baseada no Qt Creator 4.0.2 e inclui o firmware 2.0.0 da câmara OpenMV. No macOS e Linux, a gravação de firmware via DFU exige agora uma instalação única de Python mais libusb e pyusb; consulte as Alterações incompatíveis.

Destaques

  • Camada de comunicação reescrita. O código serial/USB-debug foi reconstruído em torno de um protocolo estruturado de comandos/respostas com comprimentos de resposta por comando e atrasos de espera de início/fim, para operações de ligação, execução de scripts, buffer de fotograma e bootloader mais fiáveis.

  • Atualizador automático no IDE. O IDE verifica agora em openmv.io se existe uma versão mais recente e apresenta um botão Download; além disso, descarrega e instala pacotes de recursos atualizados (exemplos, firmware, documentação) e solicita o reinício.

  • Atualização de firmware com um clique. A versão do firmware na barra de estado é agora um botão clicável que compara a câmara ligada com o firmware incluído e oferece uma atualização com um clique quando existe uma versão mais recente disponível.

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

  • Fallback automático para DFU. Quando o bootloader série não pode ser alcançado durante uma atualização de firmware, o IDE oferece agora a atualização através do bootloader DFU da câmara, guiando o utilizador na adição de um fio de jumper BOOT/RST.

Novas funcionalidades

  • Atualizador no IDE. Verifica em openmv.io se existe uma versão mais recente do IDE e apresenta um botão Download que abre openmv.io/download; descarrega, descomprime e instala pacotes de recursos openmv-ide-resources-X.Y.Z.zip diretamente no IDE antes de solicitar o reinício (8a1f92bb1, 194acd828, b0be97e3e).

  • Botão clicável para a versão do firmware. A etiqueta de versão na barra de estado passou a ser um QToolButton ligado a um fluxo updateCam() que lê o ficheiro firmware/firmware.txt incluído, compara-o com a câmara ligada e oferece uma Atualização de Firmware com apagamento opcional do sistema de ficheiros interno quando existe uma versão mais recente (b2ac8defe).

  • Suporte para ficheiros DFU. O diálogo de bootloader/gravação de firmware aceita agora ficheiros .dfu para além de .bin e força um apagamento completo do sistema de ficheiros interno ao gravar um .dfu. O filtro do seletor de firmware foi alargado 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 sempre ativada e desativada que alterna automaticamente com a extensão do ficheiro escolhido adicionada em b2ac8defe (4ad2be5f9, b2ac8defe).

  • Fallback automático para DFU em caso de falha do bootloader. Quando uma atualização de firmware .bin não consegue iniciar o bootloader série, o IDE reporta agora Unable to connect to the bootloader! e oferece a atualização através do bootloader DFU da câmara, avisando que o DFU apaga o sistema de ficheiros flash interno e guiando o utilizador na adição de um fio de jumper BOOT/RST e na reconexão antes de executar DfuSeCommand.exe (Windows) (4ad2be5f9).

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

Outras alterações e melhorias

  • O antigo código ad-hoc de taxa de baud/pacotes foi substituído pelas classes OpenMVPluginSerialPortCommand/Result, opcodes __USBDBG_* e __BOOTLDR_* e helpers command()/commandResult() em substituição de write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • A instalação do controlador de porta série do Windows é agora silenciosa/automática, os scripts de controladores openmv.cmd/pybcdc.cmd passaram para instaladores baseados em dpinst em vez do interativo InfDefaultInstall, e o instalador do Visual C++ Redistributable (vcr.cmd, a executar vcredist_x86.exe e vcredist_x64.exe silenciosamente) foi adicionado e corrigido (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Correções de erros

  • Corrigida a quebra de gravação de firmware e comunicação dentro de máquinas virtuais, e alargados vários tempos limite de comandos e o polling do buffer de fotograma/buffer de transmissão para que a ligação e a execução sejam mais robustas. O diálogo de reprogramação indica agora que «pode demorar até 5 minutos» e o tempo limite do processo DFU foi aumentado de 240s para 300s em 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Corrigida a comparação de disponibilidade de atualização do firmware/IDE para que uma versão secundária ou de patch mais recente não acione falsamente a comparação quando um campo superior é igual, e exigido que o diálogo do bootloader tenha um ficheiro selecionado válido antes de gravar (4ad2be5f9).

  • Fechados os identificadores de ficheiros (lista de placas, ficheiros de firmware/versão) após leitura e corrigido o preenchimento do bloco de gravação do firmware para preencher até FLASH_WRITE_CHUNK_SIZE, evitando identificadores com fuga e blocos finais mal preenchidos durante as atualizações de firmware (4ad2be5f9).

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

  • A abertura de ligações externas do OpenMV (fóruns, download, suporte) reporta agora um diálogo de erro «Failed to open» quando o URL não pode ser aberto, em vez de não fazer nada silenciosamente (b0be97e3e).

Suporte de plataforma e ferramentas

  • Base Qt Creator: 4.0.2.

  • Firmware de câmara incluído: atualizado para 2.0.0, com novos firmware.bin/openmv.bin e novos firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf para OMV2 e OMV7.

  • Gravação DFU no Windows adicionada usando um DfuSeCommand.exe ST incluído, o pacote de controladores USB DfuSe ST (DfuSe v3.0.4.0 em Win7/Win8, v3.0.5.0 em Win8.1) e um instalador de controladores dfuse.cmd (4ad2be5f9).

  • Gravação DFU no macOS e Linux migrada de binários dfu-util pré-compilados para um gravador pydfu.py incluído, com o IDE a mostrar os comandos de instalação necessários de libusb/pyusb. ac248c0ec adicionou brevemente binários dfu-util/dfu-prefix/dfu-suffix para Linux x86_64, mas 324f243f9 removeu-os todos em favor de pydfu.py. Não são incluídos binários dfu-util na versão final; static.pro inclui o diretório de dados pydfu para todos os anfitriões não-Windows, enquanto o Windows utiliza o fluxo DfuSe incluído (ac248c0ec, 324f243f9, 7837a07da).

  • Regras udev do Linux atualizadas para usar correspondência por SUBSYSTEM (VID 1209/PID abd1 tty da câmara e DFU STM 0483/df11) para que as ligações simbólicas do dispositivo e DFU funcionem em Linux 32 bits, e os pedidos de rede com seguimento de redirecionamentos foram protegidos para Qt mais antigo (194acd828).

Alterações incompatíveis

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