· kaynak dev.to (home feed)
Nimmake, ARM ve RISC-V firmware için Python tabanlı bir derleme yolu sunuyor
Nimmake adlı yeni bir Python destekli derleme aracı, ARM ve RISC-V mikrodenetleyici projelerini hedefliyor; elle yazılmış Makefile dosyalarının yerini otomatik üretilen flag'ler, artımlı derleme ve hazır yapılandırılmış kütüphaneler alıyor.

Nimmake adlı yeni bir derleme aracı dev.to üzerinde tanıtıldı; ARM ve RISC-V mikrodenetleyiciler için C ve C++ firmware geliştiren geliştiricilere yönelik. Python tabanlı araç pip ile kuruluyor ve büyüyüp bakımı zorlaşan Makefile dosyalarının modern bir alternatifi olarak konumlandırılıyor.
Nasıl çalışıyor
Tanıtım yazısına göre Nimmake, ARM, RISC-V ve geniş bir ana akım mikrodenetleyici yelpazesi için C ve C++ kaynak kodunu derliyor. Aracın merkezindeki fikir yapılandırmanın yeniden kullanılması: araç, gerekli derleyici flag'lerini otomatik olarak üreten yerleşik MCU ve toolchain tanımlarıyla geliyor. Harici kod, kaynak dosyaları, header yollarını ve önişlemci makrolarını tek tek kaydetmek yerine üçüncü taraf kütüphane olarak ekleniyor ve bu kütüphaneler arasında bağımlılıklar tanımlanabiliyor — yazı bu mekanizmaya Party System adını veriyor.
Öne çıkan iddia hız
Performans en büyük satış noktası, ancak iddialar bağımsız benchmark'lardan değil projenin kendisinden geliyor. Dört mekanizma sıralanıyor:
- Hangi dosyaların değiştiğini tespit edip yalnızca onları yeniden derleyen artımlı derlemeler
- İş sayısı
-jflag'i ile ayarlanan çok süreçli paralel derleme -nveya--ninjaile etkinleştirilen isteğe bağlı Ninja backend'i--cacheile açılan ve derlenmiş artefaktları yeniden kullanan bir derleme önbelleği
Yazıya göre bunların birleşimi derleme hızını kabaca iki katına çıkarıyor; tam yeniden derlemelerin yavaşlığı iterasyonu bozmaya yetecek kadar uzun sürdüğü firmware projelerinde bu önemli.
Toolchain'ler ve paketle gelen kütüphaneler
Üç derleyici ailesi destekleniyor: klasik ARM GNU toolchain'i olan armgcc; yazının daha iyi hata teşhisi için öne çıkardığı LLVM/Clang; ve ARM'ın ticari derleyicisi armclang. Tek bir kod tabanı bunlar arasında geçiş yapabiliyor. Kütüphane tarafında FreeRTOS, LVGL, FatFS, EasyLogger, CherryUSB ve FreeModbus için hazır modüller mevcut; yazıya göre kullanımları için elle kurulum gerekmiyor.
Pratikteki iş akışı
Başlangıç kısa bir yolu izliyor: pip install nimmake ile kurulum yapın, nimmake --version ile doğrulayın, projenin GitHub deposunu ve ARM32 örneğini klonlayın, ardından nimmake komutunu çalıştırın. Derleme tanımları kısa Python script'leri. Yazı, bir düzine satırla STM32F407 derlemesi gösteriyor: bir Cortex-M4 çip yapılandırması uygulanıyor, toolchain yolu ve arm-none-eabi- öneki ayarlanıyor, kaynak modüller Party System ile tanımlanıyor (çekirdek modülü sürücü modülüne bağımlı) ve bir program hedefi varsayılan olarak kaydediliyor.
Diğer kolaylıklar arasında her şey yürütülmeden önce derleme planını önizleyen bir dry-run modu; VS Code ve CLion gibi editörlerde IntelliSense ve statik analiz için compile_commands. üreten --compiledb seçeneği; ve kısa bir nmmk komut kısaltması var. Her şey komut satırından yürütüldüğü için yazı ayrıca paylaşılan bir derleme tanımının geliştiriciler arasındaki ortam sapmasını ortadan kaldırdığı CI/CD hatalarına ve ekip senaryolarına dikkat çekiyor.
Neden önemli
Gömülü derleme kurulumları süregelen bir sürtünme noktası olmaya devam ediyor: tedarikçi IDE'leri hantal, elle yazılmış Makefile dosyaları özel durumlar biriktiriyor ve her yeni kütüphane bir tur daha flag ve yol düzenlemesi getiriyor. Yerleşik çip tanımlarından flag türeten, pip ile kurulabilen bir araç bir prototipe başlama maliyetini düşürüyor ve compile_commands. çıktısı, geliştiricileri belirli bir IDE'ye kilitlemek yerine aracın standart editör araçlarına uyum sağlamasını sağlıyor. Party System, MCU çalışmalarının en yorucu kısmı — üçüncü taraf kodu derlemeye katmayı — bir yapılandırma uğraşı yerine bildirilmiş bir bağımlılığa dönüştürerek hedefliyor. Nimmake, CMake, PlatformIO ve Meson'un çoktan kökleştiği bir alana geliyor; bu yüzden çekiciliği, hız ve sıfır yapılandırma iddialarının projenin kendi örneklerinin ötesinde geçerli olup olmamasına bağlı olacak. Bununla birlikte, ARM ve RISC-V firmware için hafif, Python yerlisi bir seçenek olarak, Makefile'ı artık kendisini aşmış herkes için makul bir aday.
- #embedded
- #build-tools
- #arm
- #risc-v
- #python