14.1.1.2. Aygıt yazılımını derleme¶
Geliştirme ortamını kurma bölümünden gelen ortam hazır olduğunda, bir aygıt yazılımı imajı derlemek iki make komutu artı bir TARGET seçiminden ibarettir.
14.1.1.2.1. Derleme¶
Önce, dondurulmuş .py modüllerini bayt koduna derleyen ana bilgisayar aracı olan mpy-cross‘u derleyin (bunu bir kez yapın ve MicroPython’u her güncellediğinizde tekrar yapın):
make -j$(nproc) -C lib/micropython/mpy-cross
Ardından, <TARGET> aşağıdaki tablodaki adlardan biri olacak şekilde bir kart için aygıt yazılımını derleyin:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc), tüm CPU çekirdeklerinde paralel olarak derleme yapar (macOS’ta -j$(sysctl -n hw.ncpu) kullanın). TARGET zorunludur – hedefsiz make çalıştırmak “Invalid or no TARGET specified” hatasıyla durur.
Baştan sona, eksiksiz bir ilk derleme:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Desteklenen kartlar¶
TARGET değerleri, boards/ altındaki dizin adlarıdır. Kameralar ve silikonları:
Kamera |
|
MCU |
Port |
Çekirdek |
|---|---|---|---|---|
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 (çift 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+ |
Donanımınız için tam olarak doğru TARGET değerini derleyin – örneğin OpenMV Cam H7 için OPENMV4, H7 Plus için OPENMV4P, N6 için OPENMV_N6.
14.1.1.2.1.2. Derleme çıktısı¶
Bir karta ait her şey build/<TARGET>/bin/ dizinine gelir. TARGET=OPENMV4 için bu, şunları içeren build/OPENMV4/bin/ dizinidir:
Dosya |
Ne olduğu |
|---|---|
|
Aygıt yazılımı ikili dosyası – OpenMV IDE Tools -> Load Custom Firmware ile ve |
|
Hata ayıklama sembollerini içeren aygıt yazılımı – hata ayıklayıcıyı yönlendirdiğiniz dosya |
|
Önyükleyici (bootloader) (yalnızca önyükleyicinin etkin olduğu kartlarda) |
|
Birleşik önyükleyici (bootloader) + aygıt yazılımı imajı |
|
Aygıt yazılımıyla birlikte flash’lanan salt okunur ROM dosya sistemi imajı |
Alif AE3 çift çekirdeklidir, bu nedenle firmware_M55_HP.elf / firmware_M55_HP.bin (yüksek performanslı çekirdek) ve ayrı bir firmware_M55_HE.elf / firmware_M55_HE.bin (yüksek verimli çekirdek) ile birlikte, boot ROM’a her çekirdeğin imajının nerede bulunduğunu söyleyen bir içindekiler tablosu (TOC) imajı üretir.
14.1.1.2.1.3. Temizleme ve yeniden derleme¶
Derlemeler, build/<TARGET>/ altında her kart için yalıtılmıştır. Bir kartın derlemesini silmek için:
make TARGET=<TARGET> clean
distclean yoktur; clean her zaman bir TARGET gerektirir. mpy-cross kartlar arasında paylaşılır – MicroPython’u güncellerseniz onu da yeniden derleyin:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Bir derlemenin flash/RAM kullanımını bildirmek için:
make TARGET=<TARGET> size
14.1.1.2.1.4. Docker içinde derleme (ana bilgisayar araç zinciri olmadan)¶
Ana bilgisayara hiçbir şey kurmamayı tercih ederseniz (veya yerel bir derlemenin bulunmadığı bir platformdaysanız), Docker yolunu kullanın:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Yapılar (artifacts) openmv/docker/build/<TARGET> dizininde görünür. Tekrarlanan derlemeler için, depoyu kapsayıcı içinde ana bilgisayardakiyle aynı mutlak yola bağlayan artımlı bir geliştirme yolu vardır; böylece hata ayıklayıcı kaynak yolları yeniden eşleme olmadan çözümlenir:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
TARGET değiştirirken make clean-dev çalıştırın.
14.1.1.2.2. Derleme seçenekleri¶
Derleme davranışı, make komut satırında geçirilen değişkenlerle denetlenir, örneğin:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Bir aygıt yazılımı geliştiricisinin kullanacağı değişkenler:
Değişken |
Varsayılan |
Etkisi |
|---|---|---|
|
(zorunlu) |
Derlenecek kart. MCU, çekirdek, bellek haritası, USB kimlikleri ve etkin modülleri ayarlayan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Not
Çok daha fazla değişken mevcuttur (kamera/sensör sürücüleri, kablosuz yığınlar, ML arka uçları, USB yığını, güvenli önyükleme vb.), ancak bunlar boards/<TARGET>/board_config.mk içinde her kart için ayarlanır ve normalde komut satırında geçersiz kılınmaz. Bunları değiştirmek, normal bir geliştirici derlemesi değil, kart özelleştirmesidir – aygıt yazılımı deposundaki docs/boards.md dosyasına bakın.
Günlük çalışmada ihtiyaç duyacağınız tek seçenekler TARGET (her zaman), DEBUG=1 (hata ayıklamayı amaçladığınızda, bkz. Aygıt yazılımının hata ayıklaması) ve ara sıra V=1 değişkenleridir.