14.1.1.1. Configurazione dell’ambiente di sviluppo¶
Sull’host servono tre cose prima di poter compilare: un editor (si consiglia VS Code perché il debugger vi si integra), una shell in stile Linux (WSL su Windows, nativa su Linux/macOS) e il repository OpenMV con l’SDK fissato estratto.
14.1.1.1.1. VS Code¶
Qualsiasi editor va bene per lo sviluppo del firmware – la build è semplicemente make, e anche il debugger su hardware si esegue dalla riga di comando. Visual Studio Code è semplicemente il percorso più facile: la configurazione di Debug del firmware si integra con la sua estensione Cortex-Debug, quindi con VS Code installato il resto di queste pagine funziona senza configurazioni aggiuntive, sia per compilare che per fare debug.
14.1.1.1.1.1. Installazione di VS Code¶
Windows – scarica l’installer da code.visualstudio.com ed eseguilo. Installa VS Code su Windows, non all’interno di WSL; si integra con WSL tramite l’estensione WSL, eseguendo la sua interfaccia su Windows mentre il compilatore, i file e il debugger risiedono in Linux.
macOS – scarica lo
.zipda code.visualstudio.com, decomprimilo e trascina Visual Studio Code.app in/Applications. Oppurebrew install --cask visual-studio-code.Linux – installa il
.deb/.rpmda code.visualstudio.com (ad es.sudo apt install ./code_*.deb), oppure usa lo Snap/Flatpak della distribuzione.
Estensioni da installare (dal pannello Estensioni, Ctrl+Shift+X):
C/C++ (
ms-vscode.cpptools) – navigazione del codice sorgente C e IntelliSense.Cortex-Debug (
marus25.cortex-debug) – debug on-chip tramite GDB e un server J-Link / OpenOCD. Richiesta per Debug del firmware.WSL (
ms-vscode-remote.remote-wsl) – solo Windows. Consente a VS Code di aprire una cartella all’interno della tua distribuzione WSL così che editor, terminale, IntelliSense e Cortex-Debug operino tutti in Linux. Installa le estensioni C/C++ e Cortex-Debug nell’host WSL una volta connesso (VS Code lo richiede).
14.1.1.1.2. Shell dell’host¶
Serve un ambiente Linux (x86-64) o macOS (arm64) con git e alcuni strumenti di base. Scegli la sezione per il tuo sistema operativo.
14.1.1.1.2.1. Windows: installazione di WSL¶
WSL esegue un vero userland Ubuntu su Windows. Una volta installato, ogni istruzione successiva in questa guida è identica a Linux nativo.
Apri PowerShell come Amministratore (clic destro su Start -> Terminale (Admin)).
Installa WSL con la distribuzione Ubuntu predefinita:
wsl --installQuesto abilita le funzionalità Windows richieste, installa il kernel WSL 2 e installa Ubuntu. Riavvia se richiesto.
Dopo il riavvio, Ubuntu si avvia e ti chiede di creare un nome utente e una password UNIX. Questo account è indipendente dal tuo account Windows.
Aggiorna la distribuzione:
sudo apt update && sudo apt upgrade -yVerifica di essere su WSL 2 (richiesto – WSL 1 non è supportato per questo workflow). In PowerShell:
wsl --list --verboseLa colonna
VERSIONdeve indicare2. Se indica1, convertila:wsl --set-version Ubuntu 2
Suggerimento
Lavora all’interno del filesystem Linux (~/ in WSL), non sotto /mnt/c/. Compilare sull’unità montata di Windows è notevolmente più lento e può causare problemi di permessi sui file e di fine riga. Clona il repository nella tua home directory WSL.
Per aprire il progetto in seguito: avvia Ubuntu dal menu Start per una shell, oppure da VS Code su Windows premi Ctrl+Shift+P -> WSL: Connect to WSL, quindi File -> Open Folder e seleziona il repo clonato nel filesystem Linux.
14.1.1.1.2.2. Prerequisiti Linux / WSL¶
L’SDK fornisce il compilatore, quindi servono solo pochi pacchetti sull’host:
sudo apt-get update
sudo apt-get install git build-essential
14.1.1.1.2.3. Prerequisiti macOS¶
La compilazione nativa è supportata solo su macOS con Apple-silicon (arm64). Usando Homebrew
brew install bash make coreutils
(I Mac Intel non sono un host di build nativo supportato – usa la build Docker da Compilazione del firmware o una VM Linux.)
14.1.1.1.3. Ottenere il sorgente¶
Clona il repository con tutti i submodule (MicroPython, CMSIS, driver dei fornitori, ecc.):
git clone --recursive https://github.com/openmv/openmv.git
cd openmv
Un clone ricorsivo completo è di grandi dimensioni. Per un clone shallow più veloce:
git clone --depth=1 https://github.com/openmv/openmv.git
cd openmv
git submodule update --init --depth=1 --no-single-branch
git -C lib/micropython/ submodule update --init --depth=1
Nota
Quando compili una scheda specifica puoi invece lasciare che make scarichi solo i submodule di quella scheda:
make TARGET=<board> submodules
Il comando git submodule update esplicito mostrato sopra copre già tutto, quindi questo passaggio è facoltativo.
14.1.1.1.4. Installazione dell’SDK OpenMV¶
Dalla radice del repository, esegui l’installazione una tantum dell’SDK:
make sdk
Questo scarica openmv-sdk-<version>-<os>-<arch>.tar.xz da download.openmv.io, ne verifica il checksum SHA-256 e lo estrae in ~/openmv-sdk-<version>/ (la versione è fissata dal file SDK_VERSION del repo). È idempotente – rieseguirlo non fa nulla se la versione corretta è già installata, e la build normale si interrompe con «OpenMV SDK not found. Run “make sdk” to install it.» se manca o è la versione sbagliata.
L’SDK include tutto ciò di cui la build e il debugger hanno bisogno, aggiunto automaticamente al PATH dal Makefile:
Componente |
Scopo |
|---|---|
Toolchain ARM GNU ( |
Compilatore, linker, |
LLVM/clang |
Usato per oggetti selezionati su alcune porte |
CMake, GNU Make |
Orchestrazione della build per le librerie dei fornitori |
Python (rilocabile) |
Script di build, helper |
STM32CubeProgrammer ( |
Flashing SWD e il flusso di recupero dell’STM32N6 |
ST Edge AI |
Compilatore di reti neurali per la NPU dell’STM32N6 |
|
Flashing USB DFU |
|
Il lanciatore del server GDB del target |
Avvertimento
L’OpenMV N6 e l’OpenMV AE3 utilizzano core Cortex-M55 e richiedono GCC 14.3 o più recente. La build lo impone per quei target e si interrompe con un errore «Upgrade to GCC 14.3+ for proper CM55 support» se viene trovato un arm-none-eabi-gcc più vecchio prima di quello dell’SDK nel PATH. La toolchain dell’SDK inclusa soddisfa già questo requisito; l’errore indica che una toolchain diversa e più vecchia la sta oscurando.