14.1.1.2. Izgradnja ugrađenog programa (firmware)¶
Uz okruženje iz Postavljanje razvojnog okruženja postavljeno, izgradnja firmware slike svodi se na dvije make naredbe plus odabir TARGET.
14.1.1.2.1. Prevođenje¶
Najprije izgradite mpy-cross, host alat koji prevodi zamrznute .py module u bajtkod (učinite to jednom, i ponovno svaki put kada ažurirate MicroPython):
make -j$(nproc) -C lib/micropython/mpy-cross
Zatim izgradite firmware za pločicu, gdje je <TARGET> jedno od imena iz tablice u nastavku:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc) gradi paralelno na svim CPU jezgrama (na macOS-u koristite -j$(sysctl -n hw.ncpu)). TARGET je obavezan – make bez cilja prekida se s „Invalid or no TARGET specified”.
Potpuna prva izgradnja, od početka do kraja:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Podržane pločice¶
Vrijednosti TARGET imena su direktorija pod boards/. Kamere i njihov silicij:
Kamera |
|
MCU |
Port |
Jezgra |
|---|---|---|---|---|
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 (dvostruki 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+ |
Izgradite točan TARGET za svoj hardver – npr. OPENMV4 za OpenMV Cam H7, OPENMV4P za H7 Plus, OPENMV_N6 za N6.
14.1.1.2.1.2. Izlaz izgradnje¶
Sve za pločicu završava u build/<TARGET>/bin/. Za TARGET=OPENMV4 to je build/OPENMV4/bin/, koji sadrži:
Datoteka |
Što je to |
|---|---|
|
Binarna datoteka firmwarea – zapisuje je OpenMV IDE preko Tools -> Load Custom Firmware i |
|
Firmware s simbolima za otklanjanje pogrešaka – datoteka na koju usmjeravate program za otklanjanje pogrešaka |
|
Pokretač (bootloader) (samo na pločicama s omogućenim pokretačem) |
|
Kombinirana slika pokretača (bootloader) i firmwarea |
|
Slika ROM datotečnog sustava samo za čitanje koja se zapisuje uz firmware |
Alif AE3 je dvojezgreni, pa proizvodi firmware_M55_HP.elf / firmware_M55_HP.bin (jezgra visokih performansi) i zasebni firmware_M55_HE.elf / firmware_M55_HE.bin (jezgra visoke učinkovitosti) plus sliku tablice sadržaja (TOC) koja boot ROM-u govori gdje se nalazi slika svake jezgre.
14.1.1.2.1.3. Čišćenje i ponovna izgradnja¶
Izgradnje su izolirane po pločici pod build/<TARGET>/. Za brisanje izgradnje jedne pločice:
make TARGET=<TARGET> clean
Ne postoji distclean; clean uvijek treba TARGET. mpy-cross je zajednički svim pločicama – ako ažurirate MicroPython, ponovno ga izgradite:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Za izvještaj o iskorištenosti flash memorije/RAM-a izgradnje:
make TARGET=<TARGET> size
14.1.1.2.1.4. Izgradnja u Dockeru (bez host toolchaina)¶
Ako radije ne biste ništa instalirali na host (ili ste na platformi bez izvorne izgradnje), koristite Docker put:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Artefakti se pojavljuju u openmv/docker/build/<TARGET>. Za ponovljene izgradnje postoji inkrementalni razvojni put koji montira repozitorij na istu apsolutnu putanju unutar kontejnera kao i na hostu, pa se izvorne putanje programa za otklanjanje pogrešaka razrješavaju bez premapiranja:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Pokrenite make clean-dev pri promjeni TARGET.
14.1.1.2.2. Opcije izgradnje¶
Ponašanje izgradnje upravlja se varijablama proslijeđenima u make naredbenom retku, primjerice:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Varijable koje će firmware razvojni programer koristiti:
Varijabla |
Zadano |
Učinak |
|---|---|---|
|
(obavezno) |
Pločica koja se gradi. Odabire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Koji program za otklanjanje pogrešaka koriste ciljevi |
Napomena
Postoji još mnogo varijabli (upravljački programi kamere/senzora, bežični stogovi, ML pozadinski sustavi, USB stog, sigurno pokretanje itd.), ali one se postavljaju po pločici u boards/<TARGET>/board_config.mk i obično se ne nadjačavaju u naredbenom retku. Njihova promjena je prilagodba pločice, a ne uobičajena razvojna izgradnja – vidi docs/boards.md u repozitoriju firmwarea.
Za svakodnevni rad jedine opcije koje trebate jesu TARGET (uvijek), DEBUG=1 (kad god namjeravate otklanjati pogreške, vidi Otklanjanje pogrešaka u ugrađenom programu (firmware)) i povremeno V=1.