v4.7.0

v4.7.0 to duże wydanie skupione na NPU i ROMFS, zbudowane na Qt Creator 14.0.2. Wprowadza ono działający na urządzeniu przepływ pracy z systemem plików ROM, z zintegrowanymi kompilatorami modeli ARM Ethos-U (Vela) oraz ST Edge AI, dodaje programowanie fabryczne oparte na STM32CubeProgrammer dla OpenMV N6 oraz dołącza oprogramowanie układowe OpenMV 4.7.0 dla każdej płytki. Należy pamiętać, że aktualizacja dowolnej kamery z oprogramowania układowego starszego niż 4.7.0 wymusza teraz wymazanie systemu plików FAT oraz reset ROMFS, co usuwa pliki zapisane w wewnętrznej pamięci flash urządzenia; zobacz Breaking changes poniżej.

Najważniejsze zmiany

  • Przepływ pracy z systemem plików ROM pozwala tworzyć, edytować, wgrywać do pamięci flash i resetować działający na urządzeniu system plików tylko do odczytu, dzięki czemu modele ML mogą być przechowywane na kamerze; zintegrowany z bootloaderami DFU, IMX, Bossac, Picotool oraz Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)

  • Kompilatory modeli ARM Ethos-U Vela oraz ST Edge AI są teraz zintegrowane, dzięki czemu modele .tflite/.onnx są automatycznie kompilowane do NPU po załadowaniu na płytki Ethos-U55 (OpenMV AE3) lub Neural-ART (OpenMV N6). (411f708ea, 3064411ad)

  • STM32CubeProgrammer jest teraz dołączony, aby umożliwić fabryczne programowanie bootloadera OpenMV N6 (STM32N657) za pomocą pliku FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)

  • Przeglądarka Model Zoo zyskuje pole wyboru „Filter models by board type” sterowane nową tabelą models/index.csv, która ukrywa modele niezgodne z podłączoną płytką. (80adb2079)

  • Wyrównanie ROMFS dla poszczególnych rozszerzeń: edytor obrazu ROMFS sortuje teraz pliki alfabetycznie i pakuje je przy użyciu reguł wyrównania bajtowego z settings.json (np. modele .tflite wyrównane do 16 bajtów). (e87b2bf06)

  • Dołączone oprogramowanie układowe zaktualizowane do 4.7.0 na wszystkich płytkach OpenMV i Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)

Nowe funkcje

  • Podmenu systemu plików ROM (New / Open / Edit ROMFS on OpenMV Cam / Reset ROMFS on OpenMV Cam) zastępuje dawną pojedynczą akcję Edit ROM File System. (0bc275a0a, 958f732b5)

  • Przeglądarka Open Model Zoo z trwałym stanem wybranego modelu oraz podglądem przy zmianie wyboru, w tym dołączone biblioteki modeli STMicroelectronics, Qualcomm, DeGirum, Edge Impulse oraz Google. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)

  • Pozycja menu Convert Model for NPU w Machine Vision Tools kompiluje model TensorFlow Lite (.tflite) lub ONNX (.onnx) dla akceleratora NPU płytki (Vela dla Ethos-U .tflite, ST Edge AI dla N6 Neural-ART .tflite/.onnx) i zapisuje przekonwertowany model na dysku lub na kamerze. (3913f5b8b)

  • Narzędzie Copy/Convert Python File kopiuje skrypt Python na kamerę lub na dysk i opcjonalnie kompiluje go krzyżowo do kodu bajtowego MicroPython .mpy za pomocą mpy-cross; znajduje się ono w nowym podmenu MicroPython Tools w menu Tools. (e9d7fa143, 47188c0e3)

  • Przyciski przełączające Wrap Text zostały dodane do terminala szeregowego OpenMV oraz do panelu wyjściowego General Messages; oba zawijają wyjście według słów i zachowują to ustawienie między sesjami. (8c052845a, 51d3e1ad6)

  • Kompilacja krzyżowa ROMFS przez mpy-cross z flagami architektury dla poszczególnych płytek (armv7emsp/armv7emdp) pozwala zamrażać skrypty MicroPython w obrazach ROMFS. (8c71548df)

  • Okno dialogowe bootloadera oprogramowania układowego akceptuje teraz pliki ROMFS *.img obok *.bin i *.dfu, sprawdza rozszerzenia dla poszczególnych bootloaderów oraz wyłącza istniejące pole wyboru Reset ROMFS file system podczas ładowania pliku *.img. (79f348b36)

  • Aktualizacje z wersji starszych niż 4.7.0 wymuszają teraz włączenie pól wyboru wymazania FAT oraz resetu/aktualizacji ROMFS i ostrzegają, że aktualizacja wymaga wymazania systemu plików FAT. (f6f3355b0)

Inne zmiany i ulepszenia

  • Zreorganizowano dołączony zbiór modeli Qualcomm na foldery oparte na zadaniach (image_classification, object_detection, pose_estimation, semantic_segmentation, depth_estimation), usunięto nieobsługiwane duże modele (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) oraz dodano resnet18 i densenet_121 (z szerszą zgodnością płytek), a także facemap_3dmm i FFNet_40S (tylko AE3/N6). (300ce2fc2)

  • Dodano nowego dostawcę modeli Edge Impulse (model wykrywania twarzy FOMO) oraz nowe modele Google (micro_speech, mnist_lstm, person_detection) do dołączonego zbioru modeli, a także dodano akcję View/Edit do menu kontekstowego edytora ROMFS. (80adb2079)

  • Uporządkowano łącza do zbioru modeli: dodano model Qualcomm face_attrib_net (AE3/N6), usunięto niedziałający wpis YOLO-NAS oraz poprawiono filtry zgodności płytek dla kilku modeli wykrywania obiektów STMicroelectronics. (fd639bda0)

  • Dodano więcej etykiet modeli, zmieniono konfigurację akceleratora NPU jednego z modeli z stai na stedgeai oraz poszerzono filtr zgodności płytek st_yolo_x (teraz również OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 i NICLA_VISION oprócz AE3/N6). (1515631ce)

  • Dodanie modelu .tflite do ROMFS pomija teraz kompilację Vela/Ethos-U, jeśli model jest już skompilowany dla Ethos-U (jest jedynie kopiowany), a akcja okna dialogowego została przemianowana z Add Model na Model Zoo. (9c0b178fa)

  • Kompilacja ST Edge AI pomija konwersję dla modeli już w formacie NBIN. (3064411ad)

  • Okno dialogowe kompilatora Vela analizuje zgłaszane przez model zużycie SRAM względem skonfigurowanego rozmiaru sterty każdej płytki i wyświetla procent z ostrzeżeniami/błędami, gdy model przekracza 90% lub 100% dostępnej sterty. (7140fc2aa)

  • Kompilator Vela zgłasza teraz czytelny błąd „not supported on this platform” zamiast cicho zawodzić, a przeciągnięcie modelu do zbioru modeli nie wymaga już obecności Vela. (c736dd54d, 0ad7fd705)

  • Kompilator Vela Ethos-U działa teraz poprzez dołączone wbudowane środowisko uruchomieniowe Python (python -m ethosu.vela) zamiast samodzielnego pliku binarnego. (52f9b8820)

  • Długo działające okna dialogowe kompilacji modeli ST Edge AI i Vela wyświetlają teraz komunikat „This command takes a while to execute. Please be patient.”. (fc9ac2ab5)

  • Otwieranie przykładów lub nowych skryptów na sensorach PAG7936 (N6/AE3) i PS5520 automatycznie podnosi teraz sensor.set_framesize(QVGA) do VGA dla sensorów o wyższej rozdzielczości. (dfc27dd25)

  • Dodano automatyczne poprawianie przykładowych skryptów dla kamer termowizyjnych FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 oraz kamery zdarzeniowej Prophesee GENX320. (1f54ad01b)

  • Pobieralne zasoby IDE (oprogramowanie układowe/modele/dokumentacja) instalują się teraz we wspólnym katalogu danych aplikacji dla wszystkich użytkowników poprzez nowe API ICore::allUsersResourcePath(), a manifest wersji zasobów jest przechowywany w pliku OpenMVIDE.json jeden poziom powyżej folderu zasobów dla wszystkich użytkowników. (be308ace2, 7c7dddb87)

  • Podczas aktualizacji oprogramowania układowego pakietu systemowego Alif IDE prosi teraz użytkownika o wykonanie cyklu zasilania (odłączenie i ponowne podłączenie) kamery przed kontynuacją. (162d128f9, 756611696)

  • Przebudowano przepływ pobierania bootloadera/oprogramowania układowego Alif (Ensemble), aby był zgodny z ROMFS: generuje on App TOC po zapisaniu bootloadera, kopiuje obrazy bin/sign do podfolderu images/ i wgrywa firmware_pad.toc. (f623c9231)

  • Uproszczono nazwy wyświetlane płytek w selektorze oprogramowania układowego poprzez usunięcie zbędnych przyrostków z nazwą układu w nawiasach oraz znaczników „Legacy” (np. „OpenMV Cam H7 (STM32H743)” staje się „OpenMV Cam H7”). (334b04dbd)

  • Przemianowano dwie akcje w menu Tools dla większej jasności: Run Bootloader (Load Firmware) to teraz Load Custom Firmware, a Erase Onboard Data Flash to teraz Erase Internal FAT File System (okno potwierdzenia odnosi się teraz do wewnętrznego systemu plików FAT kamery). (0bc275a0a)

  • Przywrócono skróty klawiaturowe Ctrl+Shift+L (Load Custom Firmware) oraz Ctrl+Shift+E (Erase Internal FAT File System) i przeniesiono z powrotem pozycję Preferences do menu Edit. (dabb6f7d9, b5daf59a6)

  • Wyłączono automatyczne wykrywanie kompilatora C/C++ oraz łańcucha narzędzi przy uruchomieniu, ponieważ IDE jest przeznaczone dla MicroPython. (f42fcc8f2)

  • Dodano logo partnera Alif Semiconductor (jasne/ciemne) do sekcji partnerów okna dialogowego About. (4878781bb)

  • Odczyt oprogramowania układowego podłączonej płytki może teraz opróżnić nieaktualne dane portu szeregowego przed wydaniem polecenia, poprawiając niezawodność zapytań o oprogramowanie układowe/wersję. (c15a46f5b)

  • Poprawiono niezawodność połączenia ROMFS poprzez wymuszenie ponownego połączenia/odświeżenia przy operacjach odczytu, zapisu i resetu ROMFS. (f9bc83007)

Poprawki błędów

  • Naprawiono okna dialogowe zapisu modeli/skryptów oraz dodawania plików/modeli do ROMFS, aby używały prostego przyrostka pliku zamiast pełnego przyrostka, zapobiegając zniekształceniu rozszerzeń przy zmianie nazw plików zawierających kropki. (52c6820d2)

  • Naprawiono przepełnienie paska postępu wysyłania DFU przy dużych transferach poprzez obliczanie procentu z użyciem arytmetyki 64-bitowej. (4b91ff2ba)

  • Naprawiono wgrywanie starszego oprogramowania układowego/bootloaderów OpenMV poprzez zabezpieczenie kroków wymazywania i programowania pamięci flash przed nieprawidłowymi (niedodatnimi) zakresami sektorów flash oraz wyświetlanie wyraźnego błędu zamiast awarii, a także naprawiono zabezpieczenie dostępu do ROMFS podczas aktualizacji starego oprogramowania układowego. (ae2cc15b4, 235dbdb10)

  • Naprawiono wykrywanie płytki po porcie szeregowym, tak aby odwrotny filtr numeru seryjnego był stosowany tylko podczas walidacji portu (a nie podczas połączenia), oraz dodano odwrotne filtry dla płytki i.MX, aby wykluczyć numery seryjne w trybie bootloadera. (ae2cc15b4)

  • Naprawiono trwałość typu płytki, tak aby wcześniej zapisane mapowanie płytki nie było już nadpisywane przy ręcznym wyborze typu płytki. (c42d36001)

  • Naprawa bootloadera rozwiązuje teraz nazwę wyświetlaną ukrytej płytki na jej łańcuch architektury, dzięki czemu ponowne połączenie/naprawa oprogramowania układowego mapuje właściwą płytkę. (a1de7a09c)

  • Wykrywanie płytki dopasowuje teraz łańcuchy architektury płytki bez rozróżniania wielkości liter. (7a2e0e93f)

  • Naprawiono brak montowania dysku urządzenia przy szybkim odłączeniu/ponownym podłączeniu poprzez utrwalenie wątku skanowania dysków i ponawianie skanowania dysków do trzech razy, a także zapewniono niezawodne wykonywanie skanowania dysków na wątku skanowania. (455dbe967, 58c0e5456)

  • Naprawiono brak działania kompilatora modeli (ST Edge AI i Vela) na komputerach Mac z procesorem Intel poprzez zezwolenie na ścieżkę narzędzia ARM64 podczas działania w Rosetta. (32e309e86)

  • Naprawiono problemy z pamięcią podręczną narzędzi Python i serwera językowego poprzez kierowanie całego dołączonego __pycache__ Pythona do wspólnego katalogu zasobów oraz wstępne rozgrzewanie pamięci podręcznej blhost i.MX przed ograniczonym czasowo połączeniem bootloadera, dzięki czemu wgrywanie nie przekracza już limitu czasu. (f64f3330f)

  • Naprawiono ścieżkę nagłówka MicroPython używaną przez serwer językowy Pythona (do autouzupełniania), aby rozwiązywała się ze ścieżki zasobów dla wszystkich użytkowników, oraz uczyniono wyszukiwanie ścieżki zasobów dla wszystkich użytkowników bardziej odpornym, gdy filtrowanie po nazwie użytkownika nic nie znajduje. (5f2648565, fc1938818)

  • Naprawiono niedziałające łącza do dokumentacji ST Edge AI w oknie dialogowym opcji kompilatora poprzez konwersję lokalnych ścieżek plików na poprawne adresy URL file://. (3ac136444)

  • Naprawiono automatyczne wcięcia w edytorze Python, tak aby linie nie były już błędnie wycofywane po linii kończącej się dwukropkiem (electric), np. po nagłówkach if/for/def. (6555f44ba)

  • Naprawiono wyrównanie rekordu katalogu ROMFS, tak aby przesunięcia folderów uwzględniały rozmiar rekordu nazwy katalogu, oraz zwiększono opóźnienie między plikami przy rozpakowywaniu/tworzeniu plików ROMFS i zbioru modeli, aby zapewnić odrębne znaczniki czasu utworzenia. (9bf7e1d9e, d968a6e46)

  • Naprawiono przepełnienie liczb całkowitych w konwersji mean-to-depthwise-conv optymalizatora grafu Vela poprzez obliczanie mnożnika wyjściowego w 64 bitach oraz naprawiono nazwę bazową używaną w tytule/wyjściu okna dialogowego kompilatora Vela. (d217a46e9, 8376490eb)

  • Naprawiono przywracanie rozwiniętych folderów i wybranego modelu w przeglądarce zbioru modeli po ponownym otwarciu oraz przełączono okno dialogowe na alokację na stercie, aby uniknąć problemów z czasem życia GUI. (84a63ef4c)

  • Naprawiono ścieżkę zapisu jako w Model Zoo, tak aby zapamiętany katalog był przechowywany jako folder, a nie jako pełna nazwa pliku. (be877f7af)

  • Zachowano starszą ścieżkę zasobów użytkownika zamiast usuwania jej przy uruchomieniu, unikając błędu „close any programs viewing OpenMV IDE data”, gdy stary folder jest zablokowany. (775656775)

  • Naprawiono skrypty instalatora sterowników Windows oraz pliki catalog/inf, tak aby sterowniki OpenMV DFU, dfuse, FTDI, Arduino, pybcdc i VCR instalowały się niezawodnie i poprawnie zgłaszały kody powodzenia, wzmocniono skrypty instalacyjne sterowników DFU dfuse/vcr oraz ponownie podpisano dołączone katalogi sterowników OpenMV DFU. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)

  • Naprawiono instalator Linux, aby instalował pyusb poprzez pakiet dystrybucji python3-usb i dodawał build-essential zamiast uruchamiać pip install pyusb oraz aby wykrywał system operacyjny za pomocą /etc/os-release. (c471ddc42, 4014a0ba5)

  • Instalator Windows włącza teraz obsługę długich ścieżek, dzięki czemu głęboko zagnieżdżone pliki ST Edge AI instalują się poprawnie. (0b3ca6945)

Obsługa platform i narzędzi

  • Baza Qt Creator: 14.0.2.

  • Dołączone oprogramowanie układowe OpenMV: zaktualizowane do 4.7.0 na wszystkich płytkach OpenMV i Arduino (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); oprogramowanie układowe zostało przebudowane z obsługą ROMFS (romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)

  • OpenMV N6 ROMFS: zwiększony z 16MB do 24MB, a obraz romfs przeniesiono do alt-setting 3 DFU. (d0bbb1fe7, d7d3120b3)

  • OpenMV AE3 ROMFS: zwiększony z 16MB do 24MB, z dodanymi regułami wyrównania 16/32 bajtów dla dołączonych plików modeli .bin na wszystkich płytkach. (746da8914)

  • STM32CubeProgrammer (STM32_Programmer_CLI) dołączony dla macOS, Linux i Windows z pełną bazą urządzeń STM32 oraz zewnętrznymi loaderami do programowania fabrycznego N6; instalacja została odchudzona z nieużywanych zewnętrznych loaderów i plików bazy danych dla poszczególnych MCU, aby zmniejszyć rozmiar. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)

  • Kompilator ST Edge AI (stedgeai) 2.1.0 dołączony (Windows) dla NPU N6 Neural-ART. (3064411ad)

  • Kompilator ARM Ethos-U Vela 4.2.0 (z numpy 2.2.4) dołączony dla Linux x86-64, macOS (Apple silicon) i Windows. Pakiet Windows został najpierw dodany w wersji Vela 4.1.0 / numpy 2.2.3, a później podniesiony do końcowej wersji 4.2.0 / numpy 2.2.4. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)

  • mpy-cross 1.25.0.post2 dołączony (macOS/Windows). (8c71548df, 3ab42d58a)

  • Alif Security Toolkit: zaktualizowany do v1.104.0 (podpisane pliki binarne setools oraz dokument PDF User Guide v1.104.0) dla płytek opartych na Alif Ensemble. (43260719c, 75a58e61b)

  • Dodano konfiguracje NPU OPENMV_AE3 (Alif Ensemble) ukierunkowane na akceleratory ethos-u55-256 i ethos-u55-128 z konfiguracjami systemowymi RTSS HP/HE SRAM/MRAM/OSPI. (1f5fc546d, 411f708ea)

  • Dodano schematy wyprowadzeń dla kamer OpenMV N6 i AE3 (sensor PAG7936) do selektora wyprowadzeń oraz nowy przykład kamery zdarzeniowej Genx320 w skali szarości demonstrujący konfigurację filtra antymigotaniowego. (60184bbc5, 6d04b1b50)

  • Zaktualizowano dopasowywanie USB PID dla Arduino Nicla Vision, aby rozpoznawać nowy PID aplikacji (0x055F) obok oryginalnego (0x045F). (91ce4007c)

  • Zaktualizowano parametry wgrywania bezpiecznego bootloadera NXP/blhost, aby używały jawnego adresu/długości FCB oraz rozmiaru dysku MBR, zgodnie z najnowszym zestawem narzędzi spsdk. (16b66c3e2)

  • Instalator Windows dołącza teraz dedykowany sterownik bootloadera STM32 DFU oraz redystrybucyjne pakiety Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)

  • Usunięto dołączony zbiór modeli DeGirum YOLOv5/YOLOv8 z IDE. (26710be1c)

Breaking changes

Widoczne dla użytkownika zmiany przepływu pracy i zachowania w v4.7.0. Nie ma żadnego przełomu w API skryptowym, ale należy zwrócić uwagę na poniższe:

  • System plików FAT wymazany przy aktualizacji z wersji starszej niż 4.7.0. Aktualizacja dowolnej kamery OpenMV Cam z oprogramowania układowego starszego niż 4.7.0 wymusza teraz wymazanie systemu plików FAT oraz reset/aktualizację ROMFS podczas aktualizacji oprogramowania układowego (pola wyboru okna dialogowego są wymuszone i nie można ich wyłączyć), więc pliki użytkownika przechowywane w wewnętrznej pamięci flash urządzenia zostaną usunięte podczas aktualizacji. (f6f3355b0)

  • Usunięto pliki binarne oprogramowania układowego UVC i bootloadera Portenta H7. Prekompilowane obrazy oprogramowania układowego kamery internetowej UVC (uvc.bin/dfu/elf) zostały usunięte dla wszystkich płytek, a pliki binarne bootloadera Arduino Portenta H7 zostały usunięte z pakietu; te prekompilowane obrazy nie mogą już być wgrywane z IDE. (c44e33d70)

  • Przeniesienie katalogu zasobów. Pobieralne zasoby IDE (oprogramowanie układowe, zbiór modeli, dokumentacja) instalują się teraz we wspólnym katalogu danych aplikacji dla wszystkich użytkowników zamiast w ścieżce zasobów dla poszczególnych użytkowników, a manifest wersji przeniesiono z QSettings do pliku OpenMVIDE.json przechowywanego jeden poziom powyżej folderu zasobów dla wszystkich użytkowników (z wstecznie zgodnym dublowaniem w QSettings). Ponowne pobranie zasobów jest wyzwalane przy pierwszym uruchomieniu po aktualizacji. (be308ace2, 7c7dddb87)