v1.3.0

v1.3.0 herschrijft de communicatielaag met de camera rond een gestructureerd commando/antwoord-protocol en voegt automatische updates binnen de IDE toe voor zowel de IDE als de meegeleverde bronnen. Het is gebouwd op Qt Creator 4.0.2 en bevat OpenMV camerafirmware 2.0.0. Op macOS en Linux vereist het flashen van firmware via DFU nu een eenmalige installatie van Python plus libusb en pyusb; zie Ingrijpende wijzigingen.

Hoogtepunten

  • Herschreven communicatielaag. De serial/USB-debug-code is herbouwd rond een gestructureerd commando/antwoord-protocol met antwoordlengtes per commando en wachtvertragingen aan begin en einde, voor betrouwbaardere verbindings-, script-uitvoer-, framebuffer- en bootloaderbewerkingen.

  • Automatische updater in de IDE. De IDE controleert nu openmv.io op een nieuwere versie en biedt een Download-knop, en downloadt en installeert daarnaast bijgewerkte bronpakketten (voorbeelden, firmware, documentatie) en vraagt vervolgens om opnieuw op te starten.

  • Firmware-update met één klik. De firmwareversie in de statusbalk is nu een aanklikbare knop die de aangesloten camera vergelijkt met de meegeleverde firmware en een update met één klik aanbiedt wanneer er een nieuwere versie beschikbaar is.

  • DFU-firmware flashen op elk platform. Firmware kan nu via DFU worden geflasht op Windows, macOS, Linux x86 en Linux x86_64, en de firmwarekiezer accepteert naast .bin ook .dfu-bestanden.

  • Automatische DFU-terugval. Wanneer de seriële bootloader tijdens een firmware-update niet bereikbaar is, biedt de IDE nu aan om in plaats daarvan via de DFU-bootloader van de camera te upgraden, waarbij je wordt begeleid bij het plaatsen van een BOOT/RST-jumper.

Nieuwe functies

  • Updater in de IDE. Controleert openmv.io op een nieuwere IDE-versie en biedt een Download-knop die openmv.io/download opent, en downloadt, pakt uit en installeert openmv-ide-resources-X.Y.Z.zip-bronpakketten rechtstreeks in de IDE voordat om opnieuw opstarten wordt gevraagd (8a1f92bb1, 194acd828, b0be97e3e).

  • Aanklikbare firmwareversie-knop. Het versielabel in de statusbalk werd een QToolButton gekoppeld aan een updateCam()-flow die de meegeleverde firmware/firmware.txt leest, deze vergelijkt met de aangesloten camera, en een Firmware Update aanbiedt met optioneel wissen van het interne bestandssysteem wanneer er een nieuwere is (b2ac8defe).

  • Ondersteuning voor DFU-bestanden. Het bootloader/firmware-flash-dialoogvenster accepteert nu naast .bin ook .dfu-bestanden en forceert een volledige wissing van het interne bestandssysteem bij het flashen van een .dfu. Het filter van de firmwarekiezer werd verbreed naar Firmware Binary (*.bin *.dfu) en de geforceerde wis-flow voor .dfu werd geïntroduceerd in 4ad2be5f9, met het altijd aangevinkte uitgeschakelde wis-keuzevakje dat automatisch schakelt op basis van de gekozen bestandsextensie, toegevoegd in b2ac8defe (4ad2be5f9, b2ac8defe).

  • Automatische DFU-terugval bij bootloaderfout. Wanneer een .bin-firmware-update de seriële bootloader niet kan starten, meldt de IDE nu Unable to connect to the bootloader! en biedt vervolgens aan om in plaats daarvan te upgraden via de DFU-bootloader van de camera, met de waarschuwing dat DFU het interne flashgeheugen-bestandssysteem wist, en begeleidt je bij het plaatsen van een BOOT/RST-jumperdraad en het opnieuw verbinden voordat DfuSeCommand.exe (Windows) wordt uitgevoerd (4ad2be5f9).

  • HoG-voorbeeld. Een visualisatievoorbeeld voor Histogram of Oriented Gradients toegevoegd (09-Feature-Detection/hog.py) dat img.find_hog() gebruikt (b03a707f7).

Overige wijzigingen en verbeteringen

  • De oude ad-hoc baudrate/pakketcode vervangen door OpenMVPluginSerialPortCommand/Result-klassen, __USBDBG_*- en __BOOTLDR_*-opcodes en command()/commandResult()-helpers in plaats van write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • De installatie van het seriële-poortstuurprogramma op Windows is nu stil/onbeheerd, waarbij de stuurprogrammascripts openmv.cmd/pybcdc.cmd zijn omgezet naar dpinst-gebaseerde installatieprogramma’s in plaats van het interactieve InfDefaultInstall, en het installatieprogramma voor de Visual C++ Redistributable (vcr.cmd, dat vcredist_x86.exe en vcredist_x64.exe stil uitvoert) werd toegevoegd en gerepareerd (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Bugfixes

  • Het flashen en communiceren van firmware binnen virtuele machines, dat eerder vastliep, is gerepareerd, en diverse commando-timeouts en frame-buffer/tx-buffer-polling zijn versoepeld zodat verbinden en uitvoeren robuuster zijn. Het herprogrammeerdialoogvenster vermeldt nu dat het “may take up to 5 minutes” en de DFU-proces-timeout werd verhoogd van 240s naar 300s in 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • De vergelijking voor beschikbare firmware-/IDE-updates is gerepareerd zodat een nieuwere minor- of patchversie niet langer ten onrechte wordt geactiveerd wanneer een hoger veld gelijk is, en het bootloader-dialoogvenster vereist nu een geldig geselecteerd bestand vóór het flashen (4ad2be5f9).

  • Bestandshandles (kaartenlijst, firmware-/versiebestanden) worden nu gesloten na het lezen en de vulling van de firmware-flash-chunks is gecorrigeerd zodat tot FLASH_WRITE_CHUNK_SIZE wordt opgevuld, wat gelekte handles en verkeerd opgevulde laatste chunks tijdens firmware-updates voorkomt (4ad2be5f9).

  • Het OpenMV Help-menu en de uitvoerpanelen gerepareerd: het item About OpenMV Cam botst niet langer met de platform-About-rol (AboutRoleApplicationSpecificRole), en de uitvoerpanelen kapen niet langer Alt/Cmd + cijfer-sneltoetsen (a0694eac7).

  • Het openen van externe OpenMV-weblinks (forums, download, ondersteuning) toont nu een “Failed to open”-foutdialoogvenster wanneer de URL niet kan worden geopend, in plaats van stilletjes niets te doen (b0be97e3e).

Platform- en toolondersteuning

  • Qt Creator-basis: 4.0.2.

  • Meegeleverde camerafirmware: bijgewerkt naar 2.0.0, met nieuwe firmware.bin/openmv.bin en nieuw toegevoegde firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf voor OMV2 en OMV7.

  • Windows DFU-flashen toegevoegd met een meegeleverde ST DfuSeCommand.exe, het ST DfuSe USB-stuurprogrammapakket (DfuSe v3.0.4.0 op Win7/Win8, v3.0.5.0 op Win8.1) en een dfuse.cmd-stuurprogramma-installatieprogramma (4ad2be5f9).

  • macOS- en Linux DFU-flashen verplaatst van vooraf gebouwde dfu-util-binaries naar een meegeleverde pydfu.py-flasher, waarbij de IDE de vereiste libusb/pyusb-installatiecommando’s toont. ac248c0ec voegde kortstondig Linux x86_64 dfu-util/dfu-prefix/dfu-suffix-binaries toe, maar 324f243f9 verwijderde ze vervolgens allemaal ten gunste van pydfu.py. In de uiteindelijke release worden geen dfu-util-binaries meegeleverd; static.pro bundelt de pydfu-datamap voor alle niet-Windows-hosts, terwijl Windows de meegeleverde DfuSe-flow gebruikt (ac248c0ec, 324f243f9, 7837a07da).

  • Linux udev-regels bijgewerkt om SUBSYSTEM-matching te gebruiken (cam VID 1209/PID abd1 tty en STM DFU 0483/df11) zodat de apparaat- en DFU-symlinks werken op 32-bits Linux, en netwerkverzoeken die redirects volgen werden afgeschermd voor oudere Qt (194acd828).

Ingrijpende wijzigingen

De meegeleverde standalone dfu-util-binaries voor macOS en Linux zijn verwijderd en vervangen door een Python pydfu.py-flasher. Op macOS en Linux vereist het flashen van firmware via DFU nu een eenmalige installatie van Python plus libusb en pyusb (de IDE toont de exacte MacPorts/HomeBrew/apt-get-commando’s). Windows blijft de meegeleverde DfuSe-gebaseerde flow gebruiken. Er zijn geen breuken in de scripting-API en de Qt Creator 4.0.2-basis is ongewijzigd.