v1.3.0

v1.3.0 przebudowuje warstwę komunikacji z kamerą w oparciu o ustrukturyzowany protokół żądanie/odpowiedź oraz dodaje automatyczną aktualizację w samym IDE, zarówno dla IDE, jak i dołączonych do niego zasobów. Wydanie zbudowano na Qt Creator 4.0.2 i dołączono do niego oprogramowanie układowe kamery OpenMV 2.0.0. Na systemach macOS i Linux flashowanie oprogramowania układowego przez DFU wymaga teraz jednorazowej instalacji języka Python oraz bibliotek libusb i pyusb; zobacz Zmiany niekompatybilne wstecznie.

Najważniejsze zmiany

  • Przebudowana warstwa komunikacji. Kod debugowania szeregowego/USB został przebudowany w oparciu o ustrukturyzowany protokół żądanie/odpowiedź z długościami odpowiedzi dla poszczególnych poleceń oraz opóźnieniami oczekiwania na początku i końcu, co zapewnia bardziej niezawodne łączenie, uruchamianie skryptów oraz operacje na buforze ramki i bootloaderze.

  • Automatyczny aktualizator w IDE. IDE sprawdza teraz w serwisie openmv.io dostępność nowszej wersji i oferuje przycisk Download, a oddzielnie pobiera i instaluje zaktualizowane pakiety zasobów (przykłady, oprogramowanie układowe, dokumentację), po czym prosi o ponowne uruchomienie.

  • Aktualizacja oprogramowania układowego jednym kliknięciem. Wersja oprogramowania układowego na pasku stanu jest teraz przyciskiem, który porównuje podłączoną kamerę z dołączonym oprogramowaniem układowym i oferuje aktualizację jednym kliknięciem, gdy dostępna jest nowsza wersja.

  • Flashowanie oprogramowania układowego przez DFU na każdej platformie. Oprogramowanie układowe można teraz flashować przez DFU w systemach Windows, macOS, Linux x86 i Linux x86_64, a okno wyboru oprogramowania układowego akceptuje pliki .dfu oprócz .bin.

  • Automatyczne przejście awaryjne na DFU. Gdy nie można nawiązać połączenia z szeregowym bootloaderem podczas aktualizacji oprogramowania układowego, IDE oferuje teraz aktualizację za pośrednictwem bootloadera DFU kamery, przeprowadzając użytkownika przez dodanie zworki BOOT/RST.

Nowe funkcje

  • Aktualizator w IDE. Sprawdza w serwisie openmv.io dostępność nowszej wersji IDE i oferuje przycisk Download, który otwiera openmv.io/download, a także pobiera, rozpakowuje i instaluje pakiety zasobów openmv-ide-resources-X.Y.Z.zip bezpośrednio do IDE przed wyświetleniem monitu o ponowne uruchomienie (8a1f92bb1, 194acd828, b0be97e3e).

  • Klikalny przycisk wersji oprogramowania układowego. Etykieta wersji na pasku stanu stała się elementem QToolButton połączonym z przepływem updateCam(), który odczytuje dołączony plik firmware/firmware.txt, porównuje go z podłączoną kamerą i oferuje Firmware Update z opcjonalnym wyczyszczeniem wewnętrznego systemu plików, gdy dostępna jest nowsza wersja (b2ac8defe).

  • Obsługa plików DFU. Okno dialogowe bootloadera/flashowania oprogramowania układowego akceptuje teraz pliki .dfu oprócz .bin i wymusza pełne wyczyszczenie wewnętrznego systemu plików podczas flashowania pliku .dfu. Filtr wyboru oprogramowania układowego został rozszerzony do Firmware Binary (*.bin *.dfu), a przepływ wymuszonego czyszczenia dla .dfu wprowadzono w 4ad2be5f9, wraz z zawsze zaznaczonym, wyłączonym polem wyboru czyszczenia, które automatycznie przełącza się na podstawie rozszerzenia wybranego pliku, dodanym w b2ac8defe (4ad2be5f9, b2ac8defe).

  • Automatyczne przejście awaryjne na DFU przy awarii bootloadera. Gdy aktualizacja oprogramowania układowego .bin nie może uruchomić szeregowego bootloadera, IDE zgłasza teraz Unable to connect to the bootloader!, a następnie oferuje aktualizację z użyciem bootloadera DFU kamery, ostrzegając, że DFU czyści wewnętrzny system plików pamięci flash, oraz przeprowadzając użytkownika przez dodanie zworki BOOT/RST i ponowne podłączenie, zanim uruchomi DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Przykład HoG. Dodano przykład wizualizacji histogramu zorientowanych gradientów (09-Feature-Detection/hog.py) z użyciem img.find_hog() (b03a707f7).

Pozostałe zmiany i ulepszenia

  • Zastąpiono stary, doraźny kod szybkości transmisji/pakietów klasami OpenMVPluginSerialPortCommand/Result, opkodami __USBDBG_* i __BOOTLDR_* oraz funkcjami pomocniczymi command()/commandResult() zamiast write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • Instalacja sterownika portu szeregowego w systemie Windows odbywa się teraz cicho i bez nadzoru, przez przełączenie skryptów sterowników openmv.cmd/pybcdc.cmd na instalatory oparte na dpinst zamiast interaktywnego InfDefaultInstall, a instalator pakietu Visual C++ Redistributable (vcr.cmd, uruchamiający cicho vcredist_x86.exe i vcredist_x64.exe) został dodany i poprawiony (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Poprawki błędów

  • Naprawiono awarie flashowania oprogramowania układowego i komunikacji wewnątrz maszyn wirtualnych oraz poluzowano różne limity czasu poleceń i odpytywanie buforów ramki/tx, dzięki czemu łączenie i uruchamianie są bardziej niezawodne. Okno dialogowe reprogramowania zawiera teraz informację, że „może to zająć do 5 minut”, a limit czasu procesu DFU został podniesiony z 240 s do 300 s w 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Naprawiono porównanie dostępności aktualizacji oprogramowania układowego/IDE, tak aby nowsza wersja podrzędna lub poprawkowa nie wyzwalała już fałszywie aktualizacji, gdy wyższe pole jest równe, oraz wymuszono, aby okno dialogowe bootloadera miało prawidłowo wybrany plik przed flashowaniem (4ad2be5f9).

  • Zamknięto uchwyty plików (listy płytek, plików oprogramowania układowego/wersji) po odczycie i poprawiono dopełnianie fragmentów flashowania oprogramowania układowego do FLASH_WRITE_CHUNK_SIZE, zapobiegając wyciekom uchwytów i błędnie dopełnianym końcowym fragmentom podczas aktualizacji oprogramowania układowego (4ad2be5f9).

  • Naprawiono menu Help OpenMV i panele wyjścia: pozycja About OpenMV Cam nie koliduje już z systemową rolą About (AboutRoleApplicationSpecificRole), a panele wyjścia nie przechwytują już skrótów Alt/Cmd + cyfra (a0694eac7).

  • Otwieranie zewnętrznych łączy internetowych OpenMV (fora, pobieranie, wsparcie) zgłasza teraz okno dialogowe błędu „Failed to open”, gdy nie można otworzyć adresu URL, zamiast po cichu nie robić nic (b0be97e3e).

Obsługa platform i narzędzi

  • Baza Qt Creator: 4.0.2.

  • Dołączone oprogramowanie układowe kamery: zaktualizowane do 2.0.0, z nowymi plikami firmware.bin/openmv.bin oraz nowo dodanymi firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf dla OMV2 i OMV7.

  • Flashowanie DFU w systemie Windows dodane z użyciem dołączonego ST DfuSeCommand.exe, pakietu sterownika USB ST DfuSe (DfuSe v3.0.4.0 w Win7/Win8, v3.0.5.0 w Win8.1) oraz instalatora sterownika dfuse.cmd (4ad2be5f9).

  • Flashowanie DFU w systemach macOS i Linux przeniesione z gotowych binariów dfu-util na dołączony program flashujący pydfu.py, przy czym IDE wyświetla wymagane polecenia instalacji libusb/pyusb. ac248c0ec krótko dodał binaria dfu-util/dfu-prefix/dfu-suffix dla Linux x86_64, ale 324f243f9 następnie usunął je wszystkie na rzecz pydfu.py. W ostatecznym wydaniu nie ma żadnych binariów dfu-util; static.pro dołącza katalog danych pydfu dla wszystkich hostów innych niż Windows, podczas gdy Windows używa dołączonego przepływu DfuSe (ac248c0ec, 324f243f9, 7837a07da).

  • Reguły udev systemu Linux zaktualizowane, aby używać dopasowywania SUBSYSTEM (cam VID 1209/PID abd1 tty oraz STM DFU 0483/df11), dzięki czemu dowiązania symboliczne urządzenia i DFU działają na 32-bitowym systemie Linux, a żądania sieciowe podążające za przekierowaniami zostały zabezpieczone dla starszych wersji Qt (194acd828).

Zmiany niekompatybilne wstecznie

Dołączone samodzielne binaria dfu-util dla macOS i Linux zostały usunięte i zastąpione programem flashującym pydfu.py w języku Python. Na systemach macOS i Linux flashowanie oprogramowania układowego przez DFU wymaga teraz jednorazowej instalacji języka Python oraz bibliotek libusb i pyusb (IDE wyświetla dokładne polecenia MacPorts/HomeBrew/apt-get). Windows nadal korzysta z dołączonego przepływu opartego na DfuSe. Nie ma żadnych zmian niekompatybilnych w API skryptowym, a baza Qt Creator 4.0.2 pozostaje bez zmian.