14.1.1.2. Bygga den fasta programvaran¶
Med miljön från Konfigurera utvecklingsmiljön på plats är det två make-kommandon plus ett TARGET-val att bygga en avbildning av den fasta programvaran.
14.1.1.2.1. Kompilering¶
Bygg först mpy-cross, värdverktyget som kompilerar de infrysta .py-modulerna till bytekod (gör detta en gång, och igen varje gång du uppdaterar MicroPython):
make -j$(nproc) -C lib/micropython/mpy-cross
Bygg sedan den fasta programvaran för ett kort, där <TARGET> är ett av namnen från tabellen nedan:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc) bygger parallellt över alla CPU-kärnor (på macOS, använd -j$(sysctl -n hw.ncpu)). TARGET är obligatoriskt – make utan mål avbryts med ”Invalid or no TARGET specified”.
Ett komplett första bygge, från början till slut:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Stödda kort¶
TARGET-värdena är katalognamnen under boards/. Kamerorna och deras kisel:
Kamera |
|
MCU |
Port |
Kärna |
|---|---|---|---|---|
OpenMV Cam M4 |
|
STM32F427 |
stm32 |
Cortex-M4 |
OpenMV Cam M7 |
|
STM32F765 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 |
|
STM32H743 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 Plus |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Pure Thermal |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Cam N6 |
|
STM32N657 |
stm32 |
Cortex-M55 |
OpenMV Cam RT1062 |
|
MIMXRT1062 |
mimxrt |
Cortex-M7 |
OpenMV AE3 |
|
Alif Ensemble (dual M55) |
alif |
Cortex-M55 |
Arduino Portenta H7 |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Giga |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nicla Vision |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nano 33 BLE Sense |
|
nRF52840 |
nrf |
Cortex-M4 |
Arduino Nano RP2040 Connect |
|
RP2040 |
rp2 |
Cortex-M0+ |
Bygg exakt det TARGET som passar din hårdvara – t.ex. OPENMV4 för OpenMV Cam H7, OPENMV4P för H7 Plus, OPENMV_N6 för N6.
14.1.1.2.1.2. Byggutdata¶
Allt för ett kort hamnar i build/<TARGET>/bin/. För TARGET=OPENMV4 är det build/OPENMV4/bin/, som innehåller:
Fil |
Vad det är |
|---|---|
|
Binär fast programvara – flashas av OpenMV IDE Tools -> Load Custom Firmware och av |
|
Fast programvara med felsökningssymboler – filen du riktar felsökaren mot |
|
Startladdaren (endast på kort med en startladdare aktiverad) |
|
Kombinerad avbildning av startladdare + fast programvara |
|
Skrivskyddad ROM-filsystemsavbildning som flashas tillsammans med den fasta programvaran |
Alif AE3 är tvåkärnig, så den producerar firmware_M55_HP.elf / firmware_M55_HP.bin (högprestandakärnan) och en separat firmware_M55_HE.elf / firmware_M55_HE.bin (högeffektivitetskärnan) plus en innehållsförteckningsavbildning (TOC) som talar om för boot-ROM:et var varje kärnas avbildning ligger.
14.1.1.2.1.3. Rensa och bygga om¶
Byggen är isolerade per kort under build/<TARGET>/. För att radera ett korts bygge:
make TARGET=<TARGET> clean
Det finns ingen distclean; clean behöver alltid ett TARGET. mpy-cross delas mellan kort – om du uppdaterar MicroPython, bygg om det också:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
För att rapportera ett bygges flash-/RAM-användning:
make TARGET=<TARGET> size
14.1.1.2.1.4. Bygga i Docker (ingen värdverktygskedja)¶
Om du hellre inte vill installera något på värden (eller om du är på en plattform utan ett inbyggt bygge), använd Docker-vägen:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Artefakterna dyker upp i openmv/docker/build/<TARGET>. För upprepade byggen finns en inkrementell utvecklingsväg som monterar repot på samma absoluta sökväg inuti containern som på värden, så att felsökarens källsökvägar löses upp utan ommappning:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Kör make clean-dev när du byter TARGET.
14.1.1.2.2. Byggalternativ¶
Byggbeteendet styrs av variabler som skickas på make-kommandoraden, till exempel:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Variablerna en utvecklare av fast programvara kommer att använda:
Variabel |
Standard |
Effekt |
|---|---|---|
|
(obligatorisk) |
Kortet som ska byggas. Väljer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vilken felsökare målen |
Anteckning
Många fler variabler finns (drivrutiner för kamera/sensor, trådlösa stackar, ML-backender, USB-stack, säker uppstart, etc.), men dessa ställs in per kort i boards/<TARGET>/board_config.mk och överskrids normalt inte på kommandoraden. Att ändra dem är kortanpassning, inte ett normalt utvecklarbygge – se docs/boards.md i repot för den fasta programvaran.
För det dagliga arbetet är de enda alternativ du behöver TARGET (alltid), DEBUG=1 (närhelst du tänker felsöka, se Felsöka den fasta programvaran), och då och då V=1.