1 puan yazan GN⁺ 2024-07-07 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-07-07
Hacker News yorumu
  • Bu yazar RTOS'tan Arduino ortamıyla aynı şeyi bekliyor gibi görünüyor

    • Birçok Arduino, mbed veya freertos kullanıyor
    • Zephyr kullanımı kolay ve Pi Pico'yu da destekliyor
  • RTOS için kısa özet:

    • FreeRTOS: çoğu SOC/cihazda destekleniyor, ancak sürücüler her SOC/cihaz için farklı
    • Zephyr: gerçek donanım soyutlamasını destekliyor ve çoğu SOC'yi destekliyor
    • NuttX: desteği zayıf, ama çalıştığında çok etkileyici
  • Geleneksel UNIX tarzında tüm sisteme toolchain kurmak acı verici

    • Python'ı araç olarak kullanmak sürüm sorunlarına yol açıyor
    • Araçlar statik olarak linklenmiş binary'ler olmalı
  • PlatformIO doğru yöne gidiyor

    • Toolchain, SDK, kütüphaneler ve proje yapılandırmasını yönetmesi gerekiyor
    • Build her yerde yeniden üretilebilir olmalı
  • RP2040 projelerini Rust ve Embassy'ye geçiriyorum

    • Rust alışması zor ama tatmin edici
  • Zephyr, Pi Pico'yu %100 destekliyor

    • Belgeleri kontrol etmemiş olması tuhaf
  • ThreadX açık kaynak

  • Hubris'i gerçek bir projede denemek isterdim

    • C ile daha çok acı çekiliyor ama Erlang/Elixir'e benziyor
  • Bence microPython daha kolay bir yol

    • async/await tabanlı işbirlikçi çoklu görev iyi çalışıyor
  • Basit bir green thread zamanlayıcısı yazdım

    • Gerçek süreç yönetimini desteklemiyor ama çeşitli sensörleri sorgulayıp sinyalleri işleyebiliyor
  • FreeRTOS fiilen endüstri standardı

  • Rust RTIC, rp2040'ı destekliyor ve çok hafif