14.1. Rozwój oprogramowania układowego

Te strony są przeznaczone dla deweloperów oprogramowania układowego – osób, które chcą zmieniać kod C uruchamiany na OpenMV Cam, a nie tylko pisać skrypty MicroPython. Obejmują one cały cykl: konfigurację edytora, instalację łańcucha narzędzi do kompilacji, kompilowanie oprogramowania układowego dla każdej obsługiwanej płytki, wgrywanie skompilowanej wersji na kamerę i debugowanie jej na rzeczywistym sprzęcie za pomocą sondy J-Link oraz krokowego debugowania na poziomie kodu źródłowego w VS Code.

Pod koniec powinieneś być w stanie wziąć czystą maszynę, skompilować oprogramowanie układowe, umieścić je na kamerze, ustawić punkt przerwania w kodzie źródłowym C i wykonywać krok po kroku instrukcje procesora.

Informacja

Oprogramowanie układowe OpenMV jest forkiem MicroPython z dodaną biblioteką wizji maszynowej OpenMV, sterownikami i portami płytek. Źródła znajdują się pod adresem github.com/openmv/openmv. Moduły Python image / ml / csi, których używasz w skryptach, to kod C w tym repozytorium.

14.1.1. Jak działa kompilacja

Przed rozpoczęciem warto zrozumieć dwie rzeczy, ponieważ wyjaśniają one każdą poniższą instrukcję:

  • Kompilacja jest sterowana przez SDK. Nie instalujesz samodzielnie kompilatora ARM, CMake, Pythona ani narzędzi ST. Repozytorium przypina dokładną wersję OpenMV SDK (plik SDK_VERSION1.6.0 w chwili pisania), a make sdk pobiera i rozpakowuje to SDK do ~/openmv-sdk-<version>/. Kompilacja następnie dodaje katalogi gcc, llvm, cmake, python i narzędzi ST z SDK na początek zmiennej PATH. Oznacza to, że wszyscy kompilują z dokładnie tym samym łańcuchem narzędzi, a konfiguracja hosta jest minimalna.

  • Nie ma natywnej kompilacji dla systemu Windows. Łańcuch narzędzi i skrypty kompilacji są przeznaczone wyłącznie dla systemów Linux (x86-64) i macOS (arm64). W systemie Windows kompilujesz wewnątrz WSL (Windows Subsystem for Linux), który jest prawdziwym środowiskiem Linux – więc po zainstalowaniu WSL użytkownicy systemu Windows dokładnie wykonują instrukcje dla systemu Linux. Możliwa jest również kompilacja oparta na Dockerze oraz maszyna wirtualna z systemem Linux.

Ogólna sekwencja na każdym obsługiwanym systemie jest zawsze następująca:

  1. Zainstaluj edytor (VS Code).

  2. Przygotuj powłokę przypominającą Linux (natywny Linux, macOS lub WSL w systemie Windows).

  3. Sklonuj repozytorium i jego submoduły.

  4. make sdk – jednorazowa instalacja łańcucha narzędzi.

  5. make -C lib/micropython/mpy-cross – skompiluj kompilator kodu bajtowego.

  6. make TARGET=<board> – skompiluj oprogramowanie układowe.

  7. Wgraj je (OpenMV IDE lub dfu-util).

  8. Opcjonalnie podłącz J-Link i przeprowadź debugowanie.

Poniższe strony przeprowadzają przez każdy krok po kolei.