14.1.1.1. Configurarea mediului de dezvoltare¶
Aveți nevoie de trei lucruri pe gazdă înainte de a putea compila: un editor (VS Code este recomandat deoarece depanatorul se integrează în el), un shell de tip Linux (WSL pe Windows, nativ pe Linux/macOS) și depozitul OpenMV cu SDK-ul fixat extras.
14.1.1.1.1. VS Code¶
Orice editor funcționează pentru dezvoltarea firmware-ului – compilarea este doar make, iar depanatorul pe hardware rulează și din linia de comandă. Visual Studio Code este pur și simplu calea cea mai ușoară: configurarea din Depanarea firmware-ului se integrează în extensia sa Cortex-Debug, deci cu VS Code instalat restul acestor pagini funcționează direct, atât pentru compilare, cât și pentru depanare.
14.1.1.1.1.1. Instalarea VS Code¶
Windows – descărcați programul de instalare de pe code.visualstudio.com și rulați-l. Instalați VS Code pe Windows, nu în interiorul WSL; acesta se integrează cu WSL prin extensia WSL, rulându-și interfața pe Windows, în timp ce compilatorul, fișierele și depanatorul se află în Linux.
macOS – descărcați arhiva
.zipde pe code.visualstudio.com, dezarhivați-o și trageți Visual Studio Code.app în/Applications. Saubrew install --cask visual-studio-code.Linux – instalați
.deb/.rpmde pe code.visualstudio.com (de ex.sudo apt install ./code_*.deb), sau folosiți Snap/Flatpak-ul distribuției.
Extensii de instalat (din panoul Extensions, Ctrl+Shift+X):
C/C++ (
ms-vscode.cpptools) – navigare în sursele C și IntelliSense.Cortex-Debug (
marus25.cortex-debug) – depanare pe cip prin GDB și un server J-Link / OpenOCD. Necesară pentru Depanarea firmware-ului.WSL (
ms-vscode-remote.remote-wsl) – doar Windows. Permite VS Code să deschidă un folder în interiorul distribuției voastre WSL, astfel încât editorul, terminalul, IntelliSense și Cortex-Debug să funcționeze toate în Linux. Instalați extensiile C/C++ și Cortex-Debug în gazda WSL odată conectat (VS Code vă solicită acest lucru).
14.1.1.1.2. Shell-ul gazdă¶
Aveți nevoie de un mediu Linux (x86-64) sau macOS (arm64) cu git și câteva unelte de bază. Alegeți secțiunea corespunzătoare sistemului vostru de operare.
14.1.1.1.2.1. Windows: instalarea WSL¶
WSL rulează un veritabil mediu de utilizator Ubuntu pe Windows. După ce este instalat, fiecare instrucțiune ulterioară din acest ghid este identică cu cea pentru Linux nativ.
Deschideți PowerShell ca Administrator (clic dreapta pe Start -> Terminal (Admin)).
Instalați WSL cu distribuția implicită Ubuntu:
wsl --installAceasta activează funcțiile Windows necesare, instalează nucleul WSL 2 și instalează Ubuntu. Reporniți dacă vi se cere.
După repornire, Ubuntu pornește și vă cere să creați un nume de utilizator și o parolă UNIX. Acest cont este independent de contul vostru Windows.
Actualizați distribuția:
sudo apt update && sudo apt upgrade -yConfirmați că folosiți WSL 2 (necesar – WSL 1 nu este acceptat pentru acest flux de lucru). În PowerShell:
wsl --list --verboseColoana
VERSIONtrebuie să afișeze2. Dacă afișează1, convertiți-o:wsl --set-version Ubuntu 2
Sfat
Lucrați în interiorul sistemului de fișiere Linux (~/ în WSL), nu sub /mnt/c/. Compilarea pe unitatea montată din Windows este dramatic mai lentă și poate cauza probleme de permisiuni la fișiere și de terminații de linie. Clonați depozitul în directorul vostru home din WSL.
Pentru a deschide proiectul mai târziu: lansați Ubuntu din meniul Start pentru un shell, sau din VS Code pe Windows apăsați Ctrl+Shift+P -> WSL: Connect to WSL, apoi File -> Open Folder și alegeți depozitul clonat din sistemul de fișiere Linux.
14.1.1.1.2.2. Cerințe preliminare Linux / WSL¶
SDK-ul oferă compilatorul, deci sunt necesare doar câteva pachete pe gazdă:
sudo apt-get update
sudo apt-get install git build-essential
14.1.1.1.2.3. Cerințe preliminare macOS¶
Compilarea nativă este acceptată doar pe macOS cu Apple-silicon (arm64). Folosind Homebrew
brew install bash make coreutils
(Mac-urile Intel nu sunt o gazdă de compilare nativă acceptată – folosiți compilarea Docker din Construirea firmware-ului sau o mașină virtuală Linux.)
14.1.1.1.3. Obținerea sursei¶
Clonați depozitul cu toate submodulele (MicroPython, CMSIS, drivere de la furnizori etc.):
git clone --recursive https://github.com/openmv/openmv.git
cd openmv
O clonare recursivă completă este voluminoasă. Pentru o clonare mai rapidă, superficială:
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
Notă
Când compilați o anumită placă, puteți lăsa în schimb make să preia doar submodulele acelei plăci:
make TARGET=<board> submodules
Comanda explicită git submodule update prezentată mai sus acoperă deja totul, deci acest pas este opțional.
14.1.1.1.4. Instalarea OpenMV SDK¶
Din rădăcina depozitului, rulați instalarea unică a SDK-ului:
make sdk
Aceasta descarcă openmv-sdk-<version>-<os>-<arch>.tar.xz de pe download.openmv.io, îi verifică suma de control SHA-256 și o extrage în ~/openmv-sdk-<version>/ (versiunea este fixată de fișierul SDK_VERSION al depozitului). Este idempotentă – rularea repetată nu face nimic dacă versiunea corectă este deja instalată, iar compilarea obișnuită se oprește cu „OpenMV SDK not found. Run «make sdk» to install it.” dacă lipsește sau este versiunea greșită.
SDK-ul include tot ce au nevoie compilarea și depanatorul, toate adăugate automat la PATH de către Makefile:
Componentă |
Scop |
|---|---|
Lanțul de unelte ARM GNU ( |
Compilator, linker, |
LLVM/clang |
Folosit pentru obiecte selectate pe unele porturi |
CMake, GNU Make |
Orchestrarea compilării pentru bibliotecile furnizorilor |
Python (relocatabil) |
Scripturi de compilare, utilitare |
STM32CubeProgrammer ( |
Scriere SWD și fluxul de recuperare STM32N6 |
ST Edge AI |
Compilator de rețele neuronale pentru NPU-ul STM32N6 |
|
Scriere prin USB DFU |
|
Lansatorul serverului GDB al țintei |
Atenționare
OpenMV N6 și OpenMV AE3 folosesc nuclee Cortex-M55 și necesită GCC 14.3 sau mai nou. Compilarea impune acest lucru pentru aceste ținte și se oprește cu eroarea „Upgrade to GCC 14.3+ for proper CM55 support” dacă este găsit un arm-none-eabi-gcc mai vechi înaintea celui din SDK pe PATH. Lanțul de unelte din SDK-ul inclus satisface deja această cerință; eroarea înseamnă că un alt lanț de unelte, mai vechi, îl umbrește.