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.