14.1.1.2. Sestavení firmwaru¶
S prostředím z Nastavení vývojového prostředí na místě je sestavení obrazu firmwaru otázkou dvou příkazů make plus volby TARGET.
14.1.1.2.1. Kompilace¶
Nejprve sestavte mpy-cross, hostitelský nástroj, který kompiluje zamražené .py moduly do bytecode (udělejte to jednou a znovu vždy, když aktualizujete MicroPython):
make -j$(nproc) -C lib/micropython/mpy-cross
Poté sestavte firmware pro desku, kde <TARGET> je jedno ze jmen z tabulky níže:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc) sestavuje paralelně napříč všemi jádry CPU (na macOS použijte -j$(sysctl -n hw.ncpu)). TARGET je povinný – make bez cíle se přeruší s hláškou „Invalid or no TARGET specified“.
Kompletní první sestavení od začátku do konce:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Podporované desky¶
Hodnoty TARGET jsou názvy adresářů pod boards/. Kamery a jejich čipy:
Kamera |
|
MCU |
Port |
Jádro |
|---|---|---|---|---|
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+ |
Sestavte přesně ten TARGET, který odpovídá vašemu hardwaru – např. OPENMV4 pro OpenMV Cam H7, OPENMV4P pro H7 Plus, OPENMV_N6 pro N6.
14.1.1.2.1.2. Výstup sestavení¶
Vše pro danou desku skončí v build/<TARGET>/bin/. Pro TARGET=OPENMV4 je to build/OPENMV4/bin/ a obsahuje:
Soubor |
Co to je |
|---|---|
|
Binární soubor firmwaru – nahrávaný OpenMV IDE přes Tools -> Load Custom Firmware a pomocí |
|
Firmware s ladicími symboly – soubor, na který nasměrujete debugger |
|
Bootloader (pouze na deskách s povoleným bootloaderem) |
|
Kombinovaný obraz bootloader + firmware |
|
Obraz souborového systému ROM určeného pouze ke čtení, nahrávaný spolu s firmwarem |
Alif AE3 je dvoujádrový, takže produkuje firmware_M55_HP.elf / firmware_M55_HP.bin (vysoce výkonné jádro) a samostatný firmware_M55_HE.elf / firmware_M55_HE.bin (energeticky úsporné jádro) plus obraz s obsahem (TOC), který sdělí boot ROM, kde se nachází obraz každého jádra.
14.1.1.2.1.3. Čištění a opětovné sestavení¶
Sestavení jsou izolována pro každou desku pod build/<TARGET>/. Pro vymazání sestavení jedné desky:
make TARGET=<TARGET> clean
Neexistuje distclean; clean vždy potřebuje TARGET. mpy-cross je sdílen mezi deskami – pokud aktualizujete MicroPython, sestavte jej znovu také:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Pro vypsání využití flash/RAM daného sestavení:
make TARGET=<TARGET> size
14.1.1.2.1.4. Sestavení v Dockeru (bez hostitelského toolchainu)¶
Pokud byste raději na hostiteli nic neinstalovali (nebo jste na platformě bez nativního sestavení), použijte cestu přes Docker:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Artefakty se objeví v openmv/docker/build/<TARGET>. Pro opakovaná sestavení existuje inkrementální vývojová cesta, která připojí repozitář na stejnou absolutní cestu uvnitř kontejneru jako na hostiteli, takže se zdrojové cesty pro debugger vyřeší bez přemapování:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Při přepínání TARGET spusťte make clean-dev.
14.1.1.2.2. Volby sestavení¶
Chování sestavení je řízeno proměnnými předanými na příkazové řádce make, například:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Proměnné, které vývojář firmwaru použije:
Proměnná |
Výchozí |
Účinek |
|---|---|---|
|
(povinné) |
Deska, kterou sestavit. Vybírá |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Který debugger používají cíle |
Poznámka
Existuje mnohem více proměnných (ovladače kamer/senzorů, bezdrátové stacky, ML backendy, USB stack, secure boot atd.), ale ty se nastavují pro každou desku v boards/<TARGET>/board_config.mk a obvykle se na příkazové řádce nepřepisují. Jejich změna je přizpůsobení desky, nikoli běžné vývojářské sestavení – viz docs/boards.md v repozitáři firmwaru.
Pro každodenní práci jsou jediné volby, které potřebujete, TARGET (vždy), DEBUG=1 (kdykoli hodláte ladit, viz Ladění firmwaru) a občas V=1.