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;
connectClickedzawsze uruchamiabootloaderQSPIFLayoutna płytkach V3, alebootloaderQSPIFEraseuruchamia tylko wtedy, gdy ustawionoforceFlashFSErase(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 jesthelloworld_1.py, objaśniając stany wbudowanych diod LED (migająca zielona = działa bootloader, niebieska = działamain.py, biała = panika przy awarii sprzętu); pole wyboru „Don’t show this message again.” trwale zapamiętuje wyłączenie za pomocą ustawieniaDONT_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
.tfliteoprócz plików sieci neuronowych.network; filtr okna dialogowego zyskał także pozycjeLabel Files (*.txt)orazAll Files(ad1aa98f0, 0ffa82958, c0dbdd9e5).Przełącznik wersji protokołu debugowania dzieli polecenia szeregowe
GetAttribute,SetAttribute,FBEnableorazJPEGEnablepodczas 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 folder32-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
intdo 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 poleceniemumount, 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 instalacjipydfu) 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
OPENMV4RnaOPENMV4P(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ć.