v2.4.0

v2.4.0 jest oparty na Qt Creator 4.0.2 i koncentruje się na nowym bootloaderze V3 (zapytanie o układ pamięci QSPI flash podczas wczytywania oprogramowania układowego oraz kasowanie podczas pełnego kasowania wbudowanej pamięci flash danych), bieżącym raportowaniu sensora i płytki na pasku stanu oraz nowym 32-bitowym protokole debugowania USB zgodnym z dołączonym oprogramowaniem układowym. Dodaje także przewodnik po diodach LED przy pierwszym uruchomieniu oraz duży zestaw nowych przykładów TensorFlow, Modbus i WiFi. Ponieważ protokół debugowania uległ zmianie, kamery muszą działać z nowym dołączonym oprogramowaniem układowym, aby się połączyć.

Najważniejsze zmiany

  • Obsługa bootloadera V3 odpytuje układ zewnętrznej pamięci QSPI flash płytki podczas wczytywania oprogramowania układowego i kasuje ją podczas pełnego kasowania wbudowanej pamięci flash danych (d953df62f).

  • Raportowanie sensora i płytki przy połączeniu odpytuje moduł sensora podłączonej kamery i pokazuje go na pasku stanu (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) wraz z nową etykietą typu płytki (0ffa82958).

  • Kopiowanie modeli TensorFlow pozwala kopiować na kamerę modele .tflite, a nie tylko pliki sieci neuronowych .network (ad1aa98f0).

  • Erase Onboard Data Flash to nowe polecenie w menu Tools, które po potwierdzeniu kasuje wyłącznie wbudowaną pamięć flash systemu plików kamery, bez ponownego wgrywania oprogramowania układowego (d953df62f, 98686ac46).

  • Przewodnik po diodach LED przy pierwszym uruchomieniu to nowe okno dialogowe OpenMV Cam LED Colors, które objaśnia stany wbudowanych diod LED i można je trwale wyłączyć (c2d00422f).

Nowe funkcje

  • Bootloader V3 odpytuje układ pamięci QSPI flash podczas wczytywania oprogramowania układowego i kasuje zewnętrzną pamięć QSPI flash tylko podczas pełnego kasowania wbudowanej pamięci flash danych; connectClicked zawsze uruchamia bootloaderQSPIFLayout na płytkach V3, ale bootloaderQSPIFErase uruchamia tylko wtedy, gdy ustawiono forceFlashFSErase (polecenia zapisu/memtest QSPI są zaimplementowane w warstwie IO, ale nie są wykorzystywane przez loader) (d953df62f).

  • Stan sensora i płytki przy połączeniu odpytuje moduł sensora kamery i wyświetla go (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) na pasku stanu, wraz z nową etykietą typu płytki, korzystając z nowej mapy id-na-nazwę sensors.txt (0ffa82958).

  • Przewodnik po diodach LED przy pierwszym uruchomieniu dodaje nowe okno dialogowe OpenMV Cam LED Colors, które pojawia się po krótkim opóźnieniu, gdy przy pierwszym uruchomieniu otwartym dokumentem jest helloworld_1.py, objaśniając stany wbudowanych diod LED (migająca zielona = działa bootloader, niebieska = działa main.py, biała = panika przy awarii sprzętu); pole wyboru „Don’t show this message again.” trwale zapamiętuje wyłączenie za pomocą ustawienia DONT_SHOW_LED_STATES_AGAIN (c2d00422f).

  • Open OpenMV Cam Drive folder to nowa pozycja menu Tools, która otwiera zamontowany dysk kamery w systemowej przeglądarce plików (a49f54305).

  • Erase Onboard Data Flash to nowe polecenie w menu Tools, które po potwierdzeniu kasuje wyłącznie wbudowaną pamięć flash systemu plików, bez ponownego wgrywania oprogramowania układowego (d953df62f, 98686ac46).

  • Kopiowanie modeli TensorFlow pozwala oknu dialogowemu kopiowania modeli kopiować na kamerę modele .tflite oprócz plików sieci neuronowych .network; filtr okna dialogowego zyskał także pozycje Label Files (*.txt) oraz All Files (ad1aa98f0, 0ffa82958, c0dbdd9e5).

  • Przełącznik wersji protokołu debugowania dzieli polecenia szeregowe GetAttribute, SetAttribute, FBEnable oraz JPEGEnable podczas komunikacji z oprogramowaniem układowym 3.5.3+ w celu zwiększenia niezawodności (83b9ca18f).

  • Nowe dołączone przykłady dodają skrypty TensorFlow Lite mobilenet i wykrywania osób metodą przesuwnego okna oraz przykład MNIST STM32Cube.AI (nn_stm32cubeai.py), nowy folder 32-modbus (modbus_rtu_slave.py, modbus_apriltag.py), uzupełnienia dla nakładki WiFi (http_client_ssl, static_ip, mqtt_pub/mqtt_sub), Arduino UART/SPI-slave oraz CAN (e26b90d79, 42ba8f5c4).

Inne zmiany i ulepszenia

  • Zaktualizowano protokół debugowania USB do nowego oprogramowania układowego: odczyty atrybutów używają nowego 32-bitowego polecenia ATTR_READ_2 (0xCA), a ładunki atrybutu, wartości oraz włączania bufora ramki są wysyłane jako 32-bitowe wartości long zamiast 16-bitowych słów (55d7cfe70).

  • Zmieniono nazwę Save open script to OpenMV Cam na Save open script to OpenMV Cam (as main.py), aby jasno wskazać, że zapisuje ona main.py (a49f54305).

  • Zmieniono nazwę Run Bootloader na Run Bootloader (Load Firmware), aby jasno wskazać jej przeznaczenie (ad1aa98f0).

  • Menu przykładów są teraz sortowane według numerycznego przedrostka folderu/pliku, a wiodące cyfry NN- są usuwane z wyświetlanych nazw (ad1aa98f0).

  • Terminale wyjścia i szeregowy renderują teraz tabulatory jako spacje, korzystając z konfigurowalnej szerokości tabulatora terminala szeregowego z ustawień edytora tekstu zamiast zakodowanej na stałe szerokości 8 (98686ac46).

  • Wykrywanie dysków w systemie Linux akceptuje teraz również systemy plików montowane przez fuseblk (na przykład woluminy exFAT/NTFS) przy kojarzeniu dysku kamery (c0dbdd9e5).

  • Zaktualizowano dołączony zestaw dokumentacji HTML MicroPython (dokumentacja bibliotek, samouczki esp8266/esp32, generowane strony i obrazy) wyświetlany w pomocy IDE (e69d71f7c, 90b5c6eb5, 97b0f645a).

Poprawki błędów

  • Naprawiono przepełnienie numeryczne w statystykach histogramu (średnia, kwartyle, mediana, odchylenie standardowe), poszerzając akumulatory z int do 64 bitów, co zapobiega błędnym statystykom przy dużych obrazach (55d7cfe70).

  • Przerobiono rozłączanie/wysuwanie w systemie Linux: usunięto niewiarygodne opróżnianie syncfs/closedir, a dysk jest teraz odmontowywany zwykłym poleceniem umount, bez okna postępu (b86d5c62c, c0dbdd9e5, 30d4a7d2d).

  • Dysk USB płytki jest teraz kojarzony tylko wtedy, gdy oprogramowanie układowe jest wystarczająco nowe lub obecny jest plik znacznika .openmv_disk, co zapobiega przejmowaniu przez IDE niewłaściwego dysku wymiennego (e464eaed4).

  • Naprawiono logikę ponownego łączenia, tak aby wywołanie operacji bootloadera/kasowania podczas połączenia teraz najpierw czysto się rozłącza, a następnie ponawia próbę, unikając zablokowanego stanu pracy (d953df62f).

  • Przepisano mechanizm usuwania komentarzy/białych znaków używany przy wysyłaniu skryptów do kamery jako maszynę stanów uwzględniającą ciągi znaków, dzięki czemu znaki # wewnątrz ciągów nie są już mylnie traktowane jako komentarze, a końcowe białe znaki oraz docstringi są obsługiwane (24dff1b2f).

  • Naprawiono obsługę ciągów tłumaczeń dla kilku komunikatów okien dialogowych połączenia/terminala, tak aby osadzone polecenia powłoki (sudo adduser, kroki instalacji pydfu) nie były już częścią tekstu podlegającego tłumaczeniu i renderowały się poprawnie (b5705a57e).

Obsługa platform i narzędzi

  • Baza Qt Creator: 4.0.2.

  • Zmieniono nazwę płytki/oprogramowania układowego OpenMV Cam H7 Plus z OPENMV4R na OPENMV4P (OMV4P_H7_32768_SDRAM) i dołączono jej oprogramowanie układowe pod nową nazwą (c0dbdd9e5).

  • Poprawiono wyświetlaną nazwę płytki H7 Plus, tak aby używała podkreśleń zamiast spacji (OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM)) (75764132c).

  • Dołączone oprogramowanie układowe było aktualizowane w trakcie wydania, kończąc na wersji 3.5.2 dla OPENMV2/3/4/4P (ostateczna aktualizacja w 15c07498c; wcześniejsze skumulowane aktualizacje w 42ba8f5c4 do 3.4.2, a99c2e3e1 do 3.4.3, e26b90d79 do 3.5.0 oraz 97b0f645a do 3.5.1).

  • Wersje dołączonego oprogramowania układowego: OPENMV2 (Cam M4) 1.4.11, OPENMV3 (Cam M7) 1.4.11, OPENMV4 (Cam H7) 1.2.15, OPENMV4P (Cam H7 Plus) 1.2.15.

  • Wersja OpenMV IDE podniesiona z 2.2.1 do 2.4.0.

Zmiany powodujące niezgodność

Protokół odczytu atrybutów debugowania USB został przełączony ze starego 16-bitowego polecenia ATTR_READ (0x8A) na nowe 32-bitowe polecenie ATTR_READ_2 (0xCA), a ładunki atrybutu, wartości oraz włączania są teraz wysyłane jako 32-bitowe wartości long; IDE odpytuje także ID sensora kamery przy połączeniu. Wymaga to oprogramowania układowego, które implementuje nowy protokół. Dołączone oprogramowanie układowe 1.2.15 / 1.4.11 je zapewnia, więc starsze kamery muszą zostać przeflashowane nowym oprogramowaniem układowym, aby się połączyć.