14.1.1.2. A firmware felépítése¶
Ha a A fejlesztői környezet beállítása szerinti környezet a helyén van, egy firmware-kép felépítése két make parancs plusz egy TARGET kiválasztása.
14.1.1.2.1. Fordítás¶
Először építsd fel az mpy-cross-t, azt a gazdagépi eszközt, amely a befagyasztott .py modulokat bytecode-dá fordítja (ezt egyszer csináld meg, majd újra, valahányszor frissíted a MicroPythont):
make -j$(nproc) -C lib/micropython/mpy-cross
Ezután építsd fel a firmware-t egy lapra, ahol a <TARGET> az alábbi táblázatban szereplő nevek egyike:
make -j$(nproc) TARGET=<TARGET>
A -j$(nproc) az összes CPU-magon párhuzamosan épít (macOS-en használd a -j$(sysctl -n hw.ncpu)-t). A TARGET kötelező – a cél nélküli make „Invalid or no TARGET specified” hibával leáll.
Egy teljes első build, elejétől a végéig:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Támogatott lapok¶
A TARGET értékek a boards/ alatti könyvtárnevek. A kamerák és a szilíciumuk:
Kamera |
|
MCU |
Port |
Mag |
|---|---|---|---|---|
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 (kettős 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+ |
A hardveredhez pontosan a megfelelő TARGET-et építsd fel – pl. OPENMV4 az OpenMV Cam H7-hez, OPENMV4P a H7 Plus-hoz, OPENMV_N6 az N6-hoz.
14.1.1.2.1.2. Build-kimenet¶
Egy lap minden eredménye a build/<TARGET>/bin/ könyvtárba kerül. A TARGET=OPENMV4 esetén ez a build/OPENMV4/bin/, amely a következőket tartalmazza:
Fájl |
Mi ez |
|---|---|
|
Firmware bináris – az OpenMV IDE Tools -> Load Custom Firmware menüjével és a |
|
Firmware hibakeresési szimbólumokkal – az a fájl, amelyre a hibakeresőt irányítod |
|
A rendszerbetöltő (csak az engedélyezett rendszerbetöltővel rendelkező lapokon) |
|
Kombinált rendszerbetöltő + firmware kép |
|
Csak olvasható ROM-fájlrendszer kép, a firmware mellé flashelve |
Az Alif AE3 kétmagos, így firmware_M55_HP.elf / firmware_M55_HP.bin (a nagy teljesítményű mag) és egy külön firmware_M55_HE.elf / firmware_M55_HE.bin (a nagy hatékonyságú mag) fájlokat állít elő, plusz egy tartalomjegyzék (TOC) képet, amely megmondja a boot ROM-nak, hol található az egyes magok képe.
14.1.1.2.1.3. Tisztítás és újraépítés¶
A buildek laponként el vannak különítve a build/<TARGET>/ alatt. Egy lap buildjének törléséhez:
make TARGET=<TARGET> clean
Nincs distclean; a clean-hez mindig kell egy TARGET. Az mpy-cross megosztott a lapok között – ha frissíted a MicroPythont, építsd újra azt is:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Egy build flash/RAM-használatának jelentéséhez:
make TARGET=<TARGET> size
14.1.1.2.1.4. Építés Dockerben (gazdagépi eszközlánc nélkül)¶
Ha inkább nem szeretnél semmit telepíteni a gazdagépre (vagy egy natív build nélküli platformon vagy), használd a Docker-utat:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
A termékek az openmv/docker/build/<TARGET> könyvtárban jelennek meg. Ismételt buildekhez van egy inkrementális fejlesztői út, amely a tárolót ugyanazon az abszolút úton csatolja fel a konténeren belül, mint a gazdagépen, így a hibakereső forrásútvonalai átleképezés nélkül feloldódnak:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Futtasd a make clean-dev-et a TARGET váltásakor.
14.1.1.2.2. Build-opciók¶
A build viselkedését a make parancssorán átadott változók vezérlik, például:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Azok a változók, amelyeket egy firmware-fejlesztő használni fog:
Változó |
Alapértelmezés |
Hatás |
|---|---|---|
|
(kötelező) |
Az építendő lap. Kiválasztja a |
|
|
A |
|
|
A |
|
|
A |
|
|
A |
|
|
A |
|
|
Melyik hibakeresőt használják a |
Megjegyzés
Sokkal több változó létezik (kamera-/érzékelő-illesztőprogramok, vezeték nélküli stackek, ML-háttérprogramok, USB-stack, biztonságos rendszerindítás stb.), de ezeket laponként állítják be a boards/<TARGET>/board_config.mk-ban, és normál esetben nem írják felül őket a parancssoron. Ezek módosítása lap-testreszabás, nem normál fejlesztői build – lásd a docs/boards.md-ot a firmware tárolóban.
A mindennapi munkához az egyetlen szükséges opciók a TARGET (mindig), a DEBUG=1 (valahányszor hibakeresni szándékozol, lásd A firmware hibakeresése) és alkalmanként a V=1.