Gömülü Sistem Geliştirme Süreçlerinde Farklı Bir Yaklaşım; ZEPHYR PROJECT (RTOS)
Özet
Enerji yönetimi, akıllı şehirler, tarım, sağlık, endüstri ve varlık takibi başta olmak üzere pek çok alanda yaygın olarak kullanılan akıllı ve bağlantılı cihazların sayısı her geçen gün artmaktadır. Bu akıllı cihazlar, sundukları hizmete göre farklı kapasite ve mimarilerde olabilmektedir. Bu cihazların güvenli biçimde çalışmasından sorumlu pek çok popüler gerçek zamanlı işletim sisteminin (RTOS) üretici bağımlı olmaları, kendi mimari ve donanımlarına uygun geliştirme ortamları sunmaları, açık kaynak ve geliştirme ortamı desteği konusunda sınırlı kalmaları, yüksek bellek ve işlem gücü gerektirmeleri, ölçeklendirme kısıtları, farklı mikrodenetleyici mimarilerine geçiş yönünden yetersizlikleri gibi dezavantajları bulunmaktadır.
Pandemi döneminde yaşamış olduğumuz çip krizi, bizlere farklı üreticilere ait mikrodenetleyici mimarileri arasındaki hızlı ve zorunlu geçişin önemini bir kez daha hatırlatmıştır. Bu durumun çözümü olarak, Linux Vakfı tarafından desteklenen, gömülü sistemler için geliştirilmiş, gerçek zamanlı bir işletim sistemi olan Zephyr RTOS öne çıkmaktadır.
Giriş
Zephyr Projesi, Linux Vakfı tarafından desteklenen, farklı platformlarda, kısıtlı kaynağa sahip, ölçeklenebilir, taşınabilir bir gerçek zamanlı işletim sistemi (RTOS) oluşturma konusunda geliştiricileri bir araya getirerek büyüyen açık kaynaklı bir işbirliği, bir ekosistem projesidir. Ekosistem denmesinin sebebi, Zephyr Projesinin bir RTOS’ dan öte platformlar arası geçiş, hızlı ürün geliştirme, hızlı pazara çıkma, maliyet düşürme, güvenlik, düşük enerji gibi pek çok amaca hitap eden bileşeni içinde barındırıyor olması ve bunu uzun dönem destek (LTS) sürümleri ile güvence altına alarak desteklemesidir. 26 Temmuz 2024 tarihinde son LTS sürümü olan V3.7.0 yayınlanmış olan proje, her geçen gün popülerliğini arttırmaktadır. Aşağıdaki görselde Zephyr Projesine destek veren kişilerin sayısındaki artış yıllar bazında gösterilmiştir. Diğer RTOS projelerine göre ciddi bir ivmelenme sürecinde olduğu görülmektedir. 2024 Temmuz ayı itibariyle toplam katkı sunan sayısı 2178 olmuştur.
Gömülü sistemlerde ve bağlantılı IoT cihazlarda kullanılan mikrodenetleyici ve mikroişlemci çeşitliliğindeki artış, beraberinde aralarındaki yazılım uyumluluğu konusunda çözülmeyi bekleyen bir problemi doğurmuştur. Her mikrodenetleyicinin üzerine inşa ettiği mimari farklı olabildiği gibi, içerdiği çevresel bileşenlerde de ciddi ayrımlar söz konusudur. Üreticiler kendi mikrodenetleyici ailelerini yaygınlaştırmak için yazılım araçlarını ve sundukları destekleri kendi ürünlerine yönelik yapmaktadırlar. Hızlı ürün sunmak ve diğer ticari sebepler ile kendi ürün aileleri dışında kalan mimarilere olan destekleri son derece kısıtlı kalmaktadır. Bu da bir üreticiye ait olan bir aile ile çalışırken farklı bir üreticinin ürünlerine geçişin önünde ciddi bir engel teşkil etmektedir. Zephyr Projesinin temel çıkış amacı da tam olarak bu probleme bir çözüm getirmektir. Platform ve mimari bağımsız bir RTOS geliştirmek ve bunu ücretsiz olarak sunabilmektir. Zephyr Projesi sadece bir RTOS olmaktan çok daha öte, bir ekosistemdir. Sürekli güncellenen çevrebirimler için sürücüler ve geliştirilen yeni mimarilere uygun derleme araçları bu projenin parçalarıdır. Programlama dili olarak C dilini temel alır ancak C++ gibi dillerin de proje içinde kullanımına olanak sağlar.
Zephyr Projesinin Öne Çıkan Özellikleri
Kısıtlı kaynak ihtiyacı: Projenin kapsamına göre 10 KB’ dan küçük RAM bellek ve 10 KB’ dan küçük program belleği ile çalışabilmektedir.
Ölçeklenebilir tasarım: Küçük bir sensör projesinden çok daha karmaşık, çok çekirdekli mimariler gerektiren bir otomotiv projesine kadar ölçeklendirilebilir.
Esnek ve taşınabilir: Farklı işlemci mimarileri ve bu mimarilere uygun tasarlanmış platformlarda çalışabilmek üzere esnek bir yapıya sahiptir. Proje kapsamında hazır sunulan ve sayısı her geçen gün artan mimari ve platformlara projeler çok hızlı aktarılabilir ve hızlı ürün çıkartılabilir.
Güvenlik: Kod güvenliği ve geliştirme sonrası uzun dönem destek (LTS) sunulmaktadır. 2024 Temmuz sonunda Zephyr 3.7.0 LTS sürüm yayınlanmıştır.
Açık kaynak: Satıcıdan bağımsız, ücretsiz Apache 2.0 lisansı ile sunulmaktadır. Açık kaynak bir proje olması sebebiyle tüm gelişme ve güncellemelerden faydalanılabilir ve katkı sunulabilir. Aynı zamanda Apache 2.0, ticari projelerde de kullanılmasının önünü açar.
Ekosistem: Pek çok yarı iletken üreticisinin desteklediği bir ekosistemdir. Bu destekler sayesinde proje son derece hızlı büyümektedir. Yarı iletken üreticilerin yanı sıra üçüncü parti platform üreticileri, yazılım geliştirme aracı üreticileri, gönüllü destekleyiciler, eğitim danışmanları, uygulama ve ara katman geliştiricileri bu ekosistemin birer parçasıdırlar.
Bağlantı yetenekleri : IoT öncelikli başlamış bir proje olması sebebiyle pek çok haberleşme yapısını ve iletilişim protokolünü desteklemektedir. Desteklenen ve öne çıkan haberleşme yapıları; Bluetooth, Wifi, CANbus, LoraWAN, Ethernet, USB 2.0, USB-C ve daha pek çok yapıyı desteklemektedir. Desteklenen iletişim protokolleri ise MQTT, LwM2M, CoAP, http, TCP/IP, UDP ve daha birçok protokoldür.
Cihaz ağacı yapısı (Device tree): Atası olan Linux’ tan esinlenilerek kurgulanmış bir donanım soyutlama yapısıdır. Zephyr RTOS’ un en güçlü yanlarındandır. Zephyr RTOS, her şeyi bir cihaz (device) olarak değerlendirir. Bu da daha önce bahsedilen mimari ve platform bağımsız çalışmanın önünü açar. Özellikle IoT projelerinde nasıl her şey bir cihaz olarak ele alınmalı ise, Zephyr‘ da bunu kodlama felsefesine dahil etmiştir ve de son derece başarılıdır. Aşağıdaki görselde görülen kod parçası bir cihaz ağacı dosyasıdır. Burada I2C protokolü ile haberleşen 2 adet sensör (lsm6dsl, hts221), I2C cihazı altına tanımlanmıştır. I2C bir cihaz iken, altında tanımlanan sensörler de artık birer cihazdır.
Desteklediği mimariler : Zephyr tek üretici bağımlı bir oluşum olmadığından desteklediği mimarileri sürekli olarak genişletmektedir. Şu anda desteklediği mimariler;
a) ARM Mimarileri ( Cortex-M, Cortex-R, Cortex-A)
b) İntel (x86,x86_64)
c) MIPS
d) ARC
e) NIOS-2
f) RISC-V
g) TENSILICA-XTENSA
Zephyr RTOS Mimarisi
Zephyr RTOS, modüler oluşu, zengin donanım desteği, ve kullanışlı yapılandırma sistemi sayesinde gömülü sistemlerde verimli ve güvenilir uygulamalar geliştirmek için güçlü bir platform sunar. Bir modülün donanıma yakınlığı gözetildiğinde 3 temel katmandan oluşan bir mimarisi vardır. Bu 3 temel mimari katmanlarını görevleri dikkate alındığında daha alt katmanlara ayırmak mümkündür. Bu 3 temel katman şöyledir.
Çekirdek katmanı: İşletim sisteminin iskeletidir. Donanım ve görev süreçlerinin planlanması ve de işletilmesi ile ilgili düşük seviyeli süreçleri yönetmek için alt modüller içerir. Doğrudan donanımla ve görevlerin planlanmasıyla ilgili düşük seviyeli süreçleri yönetmek için modüller içerir.
İşletim sistemi katmanı: Tüm işletim sistemi fonksiyonlarına erişim sağlar. Bu katmandaki modüller, uygulamaların gerçekleştirilmesinde temel yapı taşları olarak görülebilir.
Uygulama katmanı: Bu katmanda geliştiriciler, işletim sistemi tarafından sağlanan fonksiyonları kullanarak, kendi uygulama ihtiyaçlarına göre uygulamalar yapabilirler.
Zephyr RTOS mimarisinde detaylara indiğimizde aşağıdaki kısımları görürüz.
Çekirdek (Kernel): Çekirdek, görevlerin gerçek zamanlı olarak yönetilmesi ve gerekli senkronizasyonun sağlanması görevini üstlenir. İş parçacıkları arasında senkronizasyon ve bağlam değişimi görevini üstlenen iş parçacığı yönetimi, iş parçacıkları arasında önceliklendirme yapan zaman yönetimi, semafor, muteksler, işaretçiler ve bariyerler gibi senkronizasyon mekanizmaları çekirdeğin kapsamında yer alan alt birimlerdir.
Donanım soyutlama katmanı (HAL): Bu katman, yazılımın donanım bağımlılıklarından soyutlayarak Zephyr RTOS’ un farklı platformlarda çalışmasını sağlar. Bunu, bünyesinde barındırdığı aygıt sürücüleri ve farklı donanım platformları için hazırlanmış platform destek paketleri (BSP) sayesinde gerçekleştirir.
Alt sistemler ve hizmetler: Zephyr RTOS, pek çok alt sistem ve hizmetlerle donatılmıştır. Zephyr RTOS, FAT, Little FS ve NTFS gibi dosya sistemlerini desteklemektedir. Aynı zamanda IPv4, IPv6, TCP, UDP gibi ağ protokolleri ile CoAP, MQTT gibi uygulama katmanı protokollerini bünyesinde barındırır. Ayrıca düşük enerji sarfiyatı için gerekli güç yönetimi ve de cihaz yönetimi gibi alt sistemleri sunulan hizmetlerdendir.
Yapılandırma sistemi : Zephyr’ ın belki de en güçlü yönlerindendir. Zephyr RTOS kodlamadan ziyade sunduğu yapılandırma çözümleri ile ön plana çıkar ve bu yönüyle konforludur. Zephyr, yapılandırma için Kconfig ve DeviceTree kullanır.
Kconfig: Menü tabanlı bir yapılandırma aracıdır. Çekirdek, alt sistemler ve sürücüler için gerekli yapılandırmayı sağlar.
Device tree: Donanım düzenini tanımlar ve cihaz ağacı yapısını kullanarak donanım konfigürasyonlarını donanımsal olarak soyutlar. Zephyr RTOS her şeyi bir cihaz olarak tanımlar. Bu da özellikle IoT projelerinde Zephyr RTOS’ u bir adım öne çıkartır.
Derleme ve paketleme sistemi : Zephyr, West ve CMake araçlarını kullanarak derleme ve paketleme işlemlerini yönetir. West, çoklu depo ve yapılandırma yönetimi için bir araçtır. CMake ise derleme sürecini yönetir ve yürütülebilir dosyalar oluşturur.
API ve uygulama geliştirme: Zephyr, kapsamlı API’ ler ve kütüphaneler sunar. API’ ler, çekirdek hizmetler, cihaz sürücüleri ve alt sistemler için sunulan kapsamlı uygulamalardır. Örnek uygulamalar ve kütüphaneler ise geliştiricilerin hızlı bir şekilde projeye başlamalarına yardımcı olan örnek uygulamalar ve kütüphanelerden oluşur.
Topluluk ve ekosistem: Zephyr, güçlü bir topluluk ve ekosisteme sahiptir. Linux Vakfı tarafından yönetilen Zephyr Projesi aynı zamanda ciddi bir topluluk desteğine sahiptir. Açık kaynak proje 2024 Temmuz ayı dikkate alındığında 2178 aktif destekleyici sayısı ile bu kapsamdaki en yüksek katılımcıya sahip bir topluluğu temsil etmektedir.
Kaynaklar:
- About the Zephyr RTOS. URL: https://www.zephyrproject.org/learn-about/
- Zephyr Project Github Repository. URL: https://github.com/zephyrproject-rtos/zephyr/
- Feng, Z., Yongwang, Z., Dianfu, M., Wensheng, N.,(2019) Fine-Grained Formal Specification and Analysis of Buddy Memory Allocation in Zephyr RTOS. 2019 IEEE 22nd International Symposium on Real-Time Distributed Computing (ISORC) , 10–17
- Al-Ameri, Y., (2021) Power Management For Multi-Developer Zephyr Environment. Bachelor’s thesis Turku University of Apllied Sciences Information and Communications Technology, 51
- Jure, V., Eghonghon, E., Oxana, O., Suryansh, S. (2019) Zephyr Project Delft University of Technology URL:https://se.ewi.tudelft.nl/desosa2019/chapters/zephyr/
- Beningo, J., (2024, May) Will Zephyr become the dominant RTOS? URL: https://www.embedded.com/will-zephyr-become-the-dominant-rtos/
Esen Kalın.