RTOS-FPGA Nedir fpganedir.com'da ara
EMBEDDED SİSTEM SAYISAL TASARIM
BASKI DEVRE (PCB)
Bu kısmımızda gömülü sistemlerde yaygın olarak kullanılan gerçek zamanlı işletim sistemlerinden bahsedeceğiz. RTOS’un ne olduğu, kullanım alanları, avantajları/dezavantajları konularına kısaca değineceğiz.
Tasarımcılar RTOS kullanımında iki sıkıntı ile karşılaşırlar. Bunların ilki RTOS’un kullanılıp kullanılmamasına kara verme işlemidir. Bu konuda tasarımcı tasarımını iyi analiz edip, bölümümüzün devamında anlattıklarımız dahilinde RTOS’un artı ve eksilerini masaya yatırıp bu kararı vermesi gerekir. İkinci sıkıntı ise RTOS kullanımına kara verdikten sonra hangi RTOS’u kullanacağınız yönündedir. Gerek ticari maksatlı olsun gerek açık kaynak olsun günümüzde onlarca gerçek zamanlı işletim sistemi bulunmaktadır. Bu ise bunlar arasında bir seçim yapmayı oldukça zorlaştırmaktadır.
Gerçek Zamanlı İşletim sistemi (RTOS) gerçek zamanlı uygulamalar için tasarlanmış çoklu görev icra edebilen bir işletim sistemidir. RTO günümüzde askeri alandan kişisel cihazlara kadar yaygı bir kullanım alanına sahiptir. RTOS iki bileşenden oluşur. Bunlar Gerçek Zaman (Real - Time) ve işletim sistemidir.
Gerçek zaman yürütülen işlemlerin cevap verme süresinin belli bir değer arasında olmasıdır. Bu değer özellikle gömülü sitemlerde önemlidir. Hatta bazı sistemlerde çok kritik bile olabilir. Bu yüzden bu sistemlerde gerçek zamanı garanti altına alacak bazı mekanizmaların kullanılması gerekir. Bu açıdan bakıldığında RTOS gerçek zamanı garanti eden bir mekanizmadır.
Donanım ile uygulama programları arasında arayüz oluşturan bir sistem programıdır. Bu programın oluşturduğu soyutlama katmanı ile kullanıcının donanımıma günümüzde kullanılan popüler yazılım dillerini kullanarak daha kolay ulaşmasını sağlar. RTOS özünde bir işletim sistemi olması hasebiyle gömülü sistemlerde kullanıldığı zaman tasarımcılara işletim sisteminin sağladığı kolaylıkları kullanmasına olanak sağlar.
OS birincil görevi uygulama programlarının ihtiyaçlarını karşılamak için donanım kaynaklarının yönetimini sağlamaktır. Bunu ise aşağıdaki özellikleri sayesinde sağlarlar.
Kesme ve Olay Yönetimi(Interrupt and Event Handling)
İç Görev iletişimi (Inter Task Communication)
Zamanlama ve saat ( Timers ve Clocks )
Bellek Yönetimi(Memory Management)
Kısaca özetlemek gerekirse RTOS gerekli bir süre içerisinde mantıksal olarak doğru sonuç elde edilmesi gereken gerçek zaman uygulamalarında ve gömülü sistemlerde kullanılır. RTOS’un zamanlama davranışı ve sınırlı kaynak kullanımı niteliğini bu sistemlerde kullanılmasında tercih sebebidir.
Gerçek zamanlı Uygular için Neden RTOS kullanılır
RTOS gömülü sistemler içerisindeki bütün gerçek zamanlı uygulamalar(özellikle küçük) için gerekli bir bileşen değildir. Fakat uygulamaların karmaşıklığı arttıkça RTOS’un ihtiyacı daha belirgin hale gelir.
Her geçen gün daha karmaşık donanımlar içeren gömülü sistemlerin üretilmeye başlaması sistemden beklenen görevlerin yönetimini giderek zorlaştırmıştır. Bu tür uygulamalarda RTOS gerekli performansları karşılamak için efektif gerçek zamanlı uygulama geliştirmek için kullanılır.
Bir RTOS cevap verme hızı kendi işlem hızı yerine deterministtik davranışına bağlıdır. Bir zaman çizelgesi dahilinde olaylara cevap verme kabiliyetinin olması RTOS’un hızlı olduğu anlamına gelmez.
RTOS, CPU üzerinde dikkate değer bir yük oluşturur. Tipik olarak CPU zamanın 1% ile 4% lük kısmına ihtiyaç duyar.
RTOs genel olarak üç tür gerçek zamanlı sistem için tasarlanır .
Hard real time: Görevlerin bitirilme zamanında meydana gelen gecikme tolerans derecesi oldukça küçüktür. (sıfır yada sıfıra yakın) Zamanında yapılmayan görevler sistem için yıkıcı etki oluştururlar.
Firm real time: Görevlerin zamanında bitirilememesi kabul edilemez kalite azalmasına neden olabilir.
Software real-time: Görev için atanan sürenin tutturulması çok önemli olmayabilir ve bu süredeki kayıp tolere edilebilir. Sistem kalitesindeki azalma kabul edilebilir.
Bu sınıflandırmanın yanında RTOS desteklediği donanım cihazların göre de sınıflandırılırlar. (8 bit, 16 bit, 32 bit MPu gibi) RTOS Mimarisi
Aşağıda genel bir RTOS mimarisi bulabilirsiniz.
İşletim sistemi genel olarak iki kısımdan oluşur. Bunlar kernel ile kullanıcı modülüdür. Kernel işletim sisteminin en küçük ve merkezi bileşenidir. Kernel belleğin ve cihazların yönetimini sağlar. Bununla birlikte yazılım uygulamalarının kaynakları kullanabilmesi için bir arayüz oluşturur. Monolitik Kernel Bellek yönetimi, kesme Yönetimi, I/O haberleşmesi gibi bütün temel sitem servislerini yerine getiren kernel çeşididir. Monotilik kernel alt yapısının oluşturan donanım için zengin ve güçlü bir soyutlama sağlar. Linux ve Windows monolitik kernel’e örnek verebiliriz. Microkernel
Yalnızca temel işlem iletişimi ile I/O kontrolünü yerine getiren Kernel çeşididir. Diğer dosya sistemi, ağ gibi diğer sistem hizmetleri ise kullanıcı kısmında yer alır. Bu yüzden mikro kernel basit donanım soyutlaması sağlar. Mikro kernel monotilik kernel’e göre daha karalı bir yapıya sahiptir. Hatta dosya sistemi gibi sitemlerler çökse bile kernel bunlardan etkilenmez. AmigaOS ve QNX işletim sistemlerini mikro kernel’e örnek verebiliriz.
RTOS’un kerneli uygulama yazılımı ile donanımı arasında bir soyutlama katmanı oluşturur. Bu soyutlama katman kernel tarafından uygulama katmanına sağlanan 6 ana servisten oluşur. Aşağıdaki resimde RTOS kernel sağladığı bu servisleri görebilirsiniz.
GÖREV YÖNETİMİ (TASK MANAGEMENT)
Görev yönetimi programlayıcıları her biri faklı hedef ve bitim zamanına sahip görevler tasarlamalarına imkan sağlar. Bu servis schedular ve dispatcher gibi görev nesnesi oluşturma ve devamını sağlaması için kullanılan scheduler ve dispatcher mekanizmalarına sahiptir.
Gerçek zamanlı uygulama programlarında eş zamanlılığı oluşturabilmek için, uygulama küçük ve zamanlanabilen sıralı program birimleri olan görevlere ayrılır. Gerçek zaman bağlamında görev, yürütülen en temel birimdir. Görev için üç zaman vardır.
Bir görevin işleme alındığı zamanı gösterir.
Deadline: Bir görevin bitmesi gereken süreyi gösterir.
Execution time: Görevin işlendiği zamanı gösterir.
Bir görev nesnesi aşağıdaki bileşenler tarafından tanımlanır.
Görev kontrol Bloğu: görev veri yapısı RM içerisinde bulunur ve yalnızca rtos tarafından erişilebilir.
Görev yığını: Program içerisinde tanımlanan veri olup RAM içerisinde bulunur ve yığın işaretçisi tarafından erişilir.
Görev routine: ROM içerisindeki program kodudur.
Tipik bir Görev Kontrol bloğu aşağıdaki gibidir.
Her bir görev için 4 durum bulunur ve görevler programın yürütülmesi esnasında bu dört durumunun birinde bulunur. Bu durumlar çalışma, hazır, bekleme ve uyku durumlarıdır. Bir uygulama programının yürütülmesi esnasında, her bir görev daima bir durumdan diğerine atlar. Fakat yalnızca bir görev yürütmenin herhangi noktasında çalışma modunda olabilir.
Bu dört durum bir görevin yürütülmesi esnasında karşılaşacağı aşamaları özetler. Bu durumlardan yalnızca çalışma modu için işlemci meşgul edilir. Gerçek zaman kavramının özünde yatan aslında işlemcinin etkin şekilde kullanılması düşüncesidir. İşlemci hızının artırılması değildir. Herhangi bir gerçek zaman mekanizması içermeyen sistemlerde bir görevin yürütülmesi için gerekli olan bu dört durum işletilmeden diğer bir göreve geçilmez. Bu ise çalışma modu hariç diğer modlarda işlemcinin atıl durumda bırakılması anlamına gelir. RTOS gibi mekanizmalar işlemcinin atıl durumda kalması engelleyerek, bu modlarda faklı görevlerin yürütülmesini sağlar. Böylece işlemci etkin şekilde kullanılarak bütün programın hızı artırılmış olur.
Schedular her bir görevin durum kayıtlarını tutar ve yürütülmeye hazır olan görevi seçer ve işlemeciyi bu göreve tahsis eder. Schedular çok görev içeren programlarda CPU kullanımını en etkin şekilde kullanılmasını sağlar. Böylece bekleme zamanını azaltır. Genel olarak iki tür schedular bulunur.
Görevler arasında öncellik sırası yoktur ve bütün görevler aynı öncellikli olarak kabul edilir. Bir görev yürütülmeye başlandığında diğer bir görev bu görevin bitmesi ile yürütülmeye başlar.
Öncellik Tabanlı Preemtive
Her zaman işlemci yüksek öncelikli görevleri kontrol eder. Eğer yüksek öncelikli bir görev işlenmek için hazır ise işlemci üzerindeki görev hemen askıya alınır ve işlemcinin kontrolü yüksek öncelikli göreve verilir. Dispatcher
Dispatcher scheduler tarafından seçilmiş göreve işlemcinin kontrolünü vermek içi kullanılır. Bu sayede yürütme akışını değiştirilmiş olur.Bir rtos un çalıştığı herhangi bir zamanda yürütme akışı task program code, interrupt service routine (ISR) veya kernel’den herhangi birinden geçer.
Aşağıda micruim firması tarafından geliştirilen µC/OS-II'nin görev durum geçişleri sırasında kullanılan fonksiyonları bulabilirsiniz.