14.1. Sviluppo del firmware

Queste pagine sono per gli sviluppatori di firmware – chi vuole modificare il codice C che gira sull’OpenMV Cam, non solo scrivere script MicroPython. Coprono l’intero ciclo: configurazione di un editor, installazione della toolchain di build, compilazione del firmware per ogni scheda supportata, flashing della tua build su una camera e debug su hardware reale con una sonda J-Link e il debug source-level a passo singolo in VS Code.

Alla fine dovresti essere in grado di prendere una macchina pulita, compilare il firmware, installarlo su una camera, impostare un breakpoint nel sorgente C ed eseguire il processore a passo singolo.

Nota

Il firmware OpenMV è un fork di MicroPython con l’aggiunta della libreria di visione artificiale OpenMV, dei driver e dei port per le schede. Il sorgente si trova su github.com/openmv/openmv. I moduli Python image / ml / csi che usi negli script sono codice C in questo repository.

14.1.1. Come funziona la build

Due aspetti vale la pena comprendere prima di iniziare, perché spiegano ogni istruzione successiva:

  • La build è guidata dall’SDK. Non installi tu stesso il compilatore ARM, CMake, Python o gli strumenti ST. Il repository fissa una versione esatta dell’SDK OpenMV (il file SDK_VERSION1.6.0 al momento della scrittura), e make sdk scarica e decomprime quell’SDK in ~/openmv-sdk-<version>/. La build poi antepone al PATH le directory di gcc, llvm, cmake, python e degli strumenti ST dell’SDK. Questo significa che tutti compilano con la stessa identica toolchain, e la configurazione dell’host è minima.

  • Non esiste una build nativa per Windows. La toolchain e gli script di build hanno come target solo Linux (x86-64) e macOS (arm64). Su Windows compili all’interno di WSL (Windows Subsystem for Linux), che è un vero ambiente Linux – quindi una volta installato WSL, gli utenti Windows seguono esattamente le istruzioni per Linux. Sono possibili anche una build basata su Docker e una VM Linux.

La sequenza ad alto livello su qualsiasi sistema supportato è sempre:

  1. Installa un editor (VS Code).

  2. Procurati una shell di tipo Linux (Linux nativo, macOS o WSL su Windows).

  3. Clona il repository e i suoi sottomoduli.

  4. make sdk – installazione della toolchain una tantum.

  5. make -C lib/micropython/mpy-cross – compila il compilatore di bytecode.

  6. make TARGET=<board> – compila il firmware.

  7. Esegui il flashing (OpenMV IDE o dfu-util).

  8. Facoltativamente, collega un J-Link ed eseguine il debug.

Le pagine seguenti illustrano ogni passaggio in ordine.