RTOS'a geçiş: RP2040 üzerindeki deneyim
Martijn Braam
- Bilgisayar alanında çalışan Martijn Braam'ın yazısı
- Birden fazla mikrodenetleyici projesi yürütüyor
- Ağırlıklı olarak Raspberry Pi Pico kartını kullanıyor ve geliştirme deneyimini iyi buluyor
Proje özeti
- Video ekipmanlarını kontrol eden bir donanım denetleyicisi geliştirdi
- PTZ kamera ve video switching ekipmanını kontrol ediyor
- Mevcut denetleyicinin performansı yetersiz olduğu için yeni bir panel yapılması gerekti
Donanım tasarımı
- 9 RGB düğme, analog joystick ve ekran içeriyor
- RS-485 ve Ethernet iletişim modülleri kullanıyor
- Donanım üzerinde birden fazla revizyonun ardından işlevler tamamlandı
İlk yazılım
pico-sdk kullanan bir cmake projesiyle başladı
- İkinci çekirdeği Wiznet modülüne ayırdı, birinci çekirdek ise kullanıcı arayüzü G/Ç işlemlerini yürütüyor
- Aynı anda birden fazla işi ele alma gereksinimiyle karmaşıklık arttı
FreeRTOS
- Birden fazla işi paralel yürütmek için FreeRTOS kullandı
- Birden fazla görev (
Task) oluşturdu: düğmeler, LED, ağ, DHCP, mDNS, ATEM, VISCA
- FreeRTOS'un sorunları:
printf kullanıldığında sistemin kilitlenmesi, donanım soyutlamasının yetersiz olması
Apache NuttX
- Unix sistemlerine benzer bir ortam sunuyor
- İlk kurulumdan sonra gerçek bir shell kullanılabiliyor
menuconfig/Kconfig sistemi üzerinden donanım yapılandırılabiliyor
i2c veri yolu yapılandırma sorunu nedeniyle temel işlevler çalışmıyor
- Dosya sistemi yolu ve shell'e ihtiyaç yok
Zephyr
- Proje yapılandırması için Python yardımcı araçları sunuyor
- 5GB'lık bir git deposunun indirilmesi gerekiyor
- Zephyr SDK kurulumu istiyor, mevcut ARM toolchain de kullanılabiliyor
- Raspberry Pi Pico desteği yetersiz, bu yüzden başka kartlar deneniyor
- Derleme hataları ve uyarılar çözüldükten sonra bile çalışmıyor
Sonuç
- FreeRTOS ile bazı uygulamaları başarıyla derledi
printf için alternatif bir uygulama gerekiyor
- İstenen işlevleri gerçekleştirmek için FreeRTOS kullanmaya devam etmeyi deniyor
GN⁺ özeti
- Bu yazı, bir mikrodenetleyici projesinde RTOS'a geçiş sürecini ele alıyor
- FreeRTOS, Apache NuttX ve Zephyr'in artıları ve eksileri karşılaştırılıyor
- Sonuç olarak en uygun seçimin FreeRTOS olduğu belirtiliyor
- RTOS seçerken dikkate alınması gereken çeşitli unsurları anlamaya yardımcı oluyor
- Benzer işlevlere sahip projeler arasında FreeRTOS ve Zephyr bulunuyor
1 yorum
Hacker News yorumu
Bu yazar RTOS'tan Arduino ortamıyla aynı şeyi bekliyor gibi görünüyor
RTOS için kısa özet:
Geleneksel UNIX tarzında tüm sisteme toolchain kurmak acı verici
PlatformIO doğru yöne gidiyor
RP2040 projelerini Rust ve Embassy'ye geçiriyorum
Zephyr, Pi Pico'yu %100 destekliyor
ThreadX açık kaynak
Hubris'i gerçek bir projede denemek isterdim
Bence microPython daha kolay bir yol
Basit bir green thread zamanlayıcısı yazdım
FreeRTOS fiilen endüstri standardı
Rust RTIC, rp2040'ı destekliyor ve çok hafif