Bare-Metal mi, RTOS mu, Gömülü Linux mu?

Gömülü bir üründe yazılımın altında ne çalıştığı, ürünün ne yapabileceğini baştan belirliyor. Türkçede bu üç seçeneğin farkını anlatan pek az kaynak var; oysa karar, projenin en erken ve en bağlayıcı kararlarından biri.

Üçü de aynı soruya farklı cevap veriyor

Soru şu: cihazın üzerindeki işlemci, yapılacak işleri hangi düzenle yürütecek.

Bir cihazda tek bir iş varsa düzen gerekmiyor; program başlıyor, döngüye giriyor, çalışıyor. Ama iş sayısı arttıkça bir sıralama, bir öncelik ve bir paylaşım ihtiyacı doğuyor. Üç yaklaşım bu ihtiyacı üç farklı seviyede karşılıyor.

Bare-metal: arada hiçbir şey yok

Bare-metal, işletim sistemi olmadan doğrudan donanım üzerinde çalışan yazılım demek. Program açılıyor, kendi döngüsünü kuruyor, gerektiğinde donanımdan gelen kesmelerle bu döngüyü bölüyor.

Güçlü olduğu yerler net. Ürün küçük ve öngörülebilir kalıyor. Cihaz saniyeler içinde değil, milisaniyeler içinde açılıyor. Bellek ve işlemci kaynağı asgari düzeyde kullanılıyor, bu da düşük maliyetli ve düşük tüketimli donanımla çalışabilmek demek. Pil ile çalışan ürünlerde bu belirleyici oluyor.

Zorlandığı yer, iş sayısı arttığında ortaya çıkıyor. Beş ayrı işi aynı anda yürütmesi gereken bir cihazda, sıralamayı programın kendisi yönetmek zorunda kalıyor. Program büyüdükçe bu düzen kırılganlaşıyor ve yeni bir iş eklemek eskilerin zamanlamasını bozabiliyor.

Basit ölçüm cihazları, sensör kartları, tek işlevli kontrol üniteleri bu yaklaşımla çok iyi çalışıyor.

RTOS: sıralamayı devralan ince bir katman

RTOS (Real-Time Operating System), gerçek zamanlı işletim sistemi. Adı büyük duruyor ama masaüstü işletim sistemiyle benzerliği az. Yaptığı iş, işleri görev olarak ayırmak ve hangisinin ne zaman çalışacağına öncelik kurallarına göre karar vermek.

Buradaki asıl kazanç zamanlamanın öngörülebilir kalması. Bir işin belirli bir süre içinde mutlaka çalışması gerekiyorsa, bu garanti RTOS tarafında kuruluyor. Motor kontrolü, ölçüm zamanlaması, emniyet fonksiyonları gibi gecikmeye tahammülü olmayan işler bu yüzden burada yaşıyor.

Karşılığında iki şey geliyor. Birincisi kaynak: RTOS kendisi de yer kaplıyor. İkincisi karmaşıklık: görevler arasındaki paylaşım, kendi hata türlerini getiriyor ve bu hatalar her seferinde tekrar etmediği için bulunması zor oluyor.

Birden fazla işi aynı anda yürüten, zamanlaması kritik olan ama tam bir işletim sistemine ihtiyaç duymayan ürünler bu aralıkta duruyor.

Gömülü Linux: bilgisayara en yakın olan

Gömülü Linux, masaüstü ve sunucu tarafındaki Linux’un kaynak sınırlı cihazlara uyarlanmış hali. Cihazın üzerinde dosya sistemi, ağ yığını, sürücüler ve tanıdık yazılım araçları çalışıyor.

Kazandırdığı şey hazır gelen büyük bir yetenek seti. Ekran arayüzü, ağ üzerinden haberleşme, veritabanı, uzaktan erişim gibi başlıklar sıfırdan yazılmıyor. Bir kamera görüntüsünü işleyip ağa gönderen bir cihaz için bu, projeyi aylar kısaltan bir fark.

Bedeli üç yerde ortaya çıkıyor. Donanım daha güçlü olmak zorunda, yani maliyet ve tüketim yukarı gidiyor. Açılış süresi uzuyor; anında açılması gereken bir üründe bu tek başına eleyici olabiliyor. Ve zamanlama garantisi doğal olarak gelmiyor; sert gerçek zamanlı işler için ek çözüm gerekiyor.

Ayrıca yönetilmesi gereken bir yüzey geliyor: sistem bileşenlerinin güncellenmesi, açık kaynak lisansları ve güvenlik yaması artık ürünün sorumluluğunda: gömülü sistemde güvenlik.

Karar neye bakıyor

Bu üçü arasındaki seçim teknik bir tercih gibi görünse de girdileri büyük ölçüde ürün tarafından geliyor.

Cihaz ne kadar sürede açılmalı. Kaç farklı işi aynı anda yürütecek. İçlerinde belirli bir süre içinde mutlaka çalışması gereken bir iş var mı. Ekran, ağ, kamera gibi ağır bileşenler var mı. Pil ile mi çalışacak. Ürünün sahadaki ömrü ne kadar ve o süre boyunca yazılımı kim güncelleyecek.

Son soru en çok atlanan soru. Gömülü Linux seçen bir ürün, ömrü boyunca sistem güncellemesi ihtiyacını da satın almış oluyor: OTA güncelleme.

Ve bu soruların hepsi donanım seçimiyle iç içe. Yazılım tarafındaki bu karar, işlemci seçimini belirliyor; işlemci seçimi de karta ve maliyete yazılıyor. Donanım ve yazılımın birlikte geliştirilmesi meselesinin en somut örneği bu.

Bir hat sonu kontrol cihazında

Not: Aşağıdaki örnek gerçek bir müşteriye ait değildir; sahada sık karşılaşılan durumlardan oluşturulmuş bir senaryodur.

Üretim hattının sonunda ürünleri kontrol eden bir cihaz düşünelim. İki işi var: bir sensör grubundan gelen ölçümü kaçırmadan almak ve sonucu bir ekranda gösterip ağ üzerinden merkezi sisteme iletmek.

İlk yaklaşım gömülü Linux’tu; ekran ve ağ tarafı hazır geliyordu.

Denemede ölçüm tarafında sorun çıktı. Ölçümün belirli aralıklarla kaçırılmadan alınması gerekiyordu, ancak sistem yoğun olduğu anlarda bu aralık kayıyordu. Kayıp seyrekti ve tam da bu yüzden fark edilmesi uzun sürdü.

İkinci yaklaşım her şeyi bare-metal yazmaktı. Ölçüm tarafı düzeldi, bu sefer ekran ve ağ tarafı orantısız bir işe dönüştü.

Üçüncü yaklaşımda iş ikiye ayrıldı. Zamanlaması kritik olan ölçüm bölümü ayrı bir yerde, kendi başına ve öngörülebilir biçimde çalıştı; ekran ve ağ tarafı ise hazır bileşenlerin bulunduğu tarafta kaldı.

Buradaki ders seçeneklerden birinin diğerinden iyi olması değil. Cihazın iki farklı karakterde işi vardı ve tek bir yaklaşımı ikisine birden dayatmak, her seferinde bir tarafı zorluyordu.

Sonradan değiştirmek mümkün mü

Kısmen. Bare-metal yazılmış bir ürüne sonradan RTOS eklemek, yazılımın büyük bölümünün yeniden düzenlenmesi demek.

Gömülü Linux’a geçmek ise çoğu zaman yazılım kararı bile olmuyor; donanımın buna uygun seçilmiş olması gerekiyor. Uygun değilse karar, kart tasarımına geri dönüyor.

Bu yüzden bu seçim, ürünün ilk haftalarında verilmesi gereken kararlardan biri. Geç verildiğinde, yazılım tarafında değil donanım tarafında bedel ödeniyor.

Codigno tarafında

Gömülü yazılım ve firmware tarafında bu karar, ürünün gereksinimleri yazıldıktan sonra ve donanım seçimiyle birlikte ele alınıyor. Açılış süresi, zamanlama ihtiyacı, güç bütçesi ve ürünün sahadaki ömrü aynı masada konuşuluyor.

Gömülü yazılımın ne olduğu ve donanımla ilişkisi için: gömülü yazılım nedir.

Cihazın topladığı verinin merkeze taşınması tarafı için: IoT çözümleri.

Sık sorulan sorular

RTOS ile gömülü Linux aynı şey değil mi?

Değil. RTOS, görevleri önceliğe göre sıralayan ince bir katman; zamanlama garantisi sunuyor. Gömülü Linux ise dosya sistemi, ağ ve sürücüleriyle tam bir işletim sistemi ve doğal olarak aynı zamanlama garantisini vermiyor.

Bare-metal ilkel bir yöntem mi?

Değil. Tek işlevli, düşük tüketimli ve hızlı açılması gereken ürünlerde hâlâ en doğru seçenek. İlkel olan yöntem değil, iş sayısı arttığında ısrar edilmesi.

Gömülü Linux hangi durumda gereksiz?

Ekran, ağ ve dosya sistemi gerektirmeyen, pil ile çalışan ve anında açılması gereken ürünlerde. Bu durumda getirdiği yetenekler kullanılmıyor, maliyeti ve açılış süresi kalıyor.

Gerçek zamanlılık ne demek?

Bir işin hızlı yapılması değil, belirlenen süre içinde mutlaka yapılması demek. Ortalama hız iyi olsa bile, gecikmenin sınırı aşabildiği bir sistem gerçek zamanlı sayılmıyor.

Bu karar sonradan değiştirilebilir mi?

Yazılım tarafındaki geçişler maliyetli ama mümkün. Gömülü Linux’a geçiş çoğu zaman donanım değişikliği gerektiriyor ve bu, kart tasarımına dönmek demek.

Aynı üründe birden fazla yaklaşım bir arada olabilir mi?

Oluyor. Zamanlaması kritik iş bir tarafta, ekran ve ağ gibi ağır işler diğer tarafta yürütülebiliyor. Ürünün iki farklı karakterde işi varsa bu ayrım genelde daha sağlıklı sonuç veriyor.

Ürününüzün altında ne çalışması gerektiğine karar vermeden önce gereksinimleri netleştirmek gerekiyor. Cihazın ne yapacağını, açılış ve zamanlama beklentisini, güç ve maliyet kısıtını paylaşın; bu kararı birlikte değerlendirelim.

Facebook
Twitter
Email
Print