Elektronik

Bilgisayar Organizasyonu Ünite 10. GÖMÜLÜ SİSTEMLER

10. GÖMÜLÜ SİSTEMLER

10.1. Özellikler

Gömülü sistemler bir veya daha fazla belirli görevi yerine getirmek için tasarlanmış özel amaçlı makinelerdir. Gömülü sistem tasarımındaki ana amaç, donanım karmaşıklığını ve maliyeti azaltmaktır.

Anahtarlar, motorlar, ışıklar vb. gibi giriş ve çıkış aygıtları tümleşik işlemciye G / Ç arayüzleri aracılığıyla bağlanırlar. İşlemci genellikle bu cihazların üzerine entegre edilmiştir veya hatta saha cihazının devre kartının bir parçası olabilir. İşlemci, girdi cihazlarının durumunu inceler, kontrol planını yürütür (yani programı çalıştırır) ve çıktı cihazlarını kontrol etmek için yanıtlar üretir. Bu tür her faaliyet döngüsüne tarama (scan) adı verilir. Her tarama sırasında tüm girdiler test edilir, kontrol planı değerlendirilir ve çıktılar güncellenir. Kontrol programı ROM veya Flash bellek yongalarında saklanır. Az miktarda RAM, programın çalışmasını destekler.

Gömülü sistemlerin, zor çevre şartlarında yıllarca sürekli çalışması beklenir. Ek olarak, bir hata oluşursa hatayı tespit edip çözmeleri gerekir. Hata olasılığını en aza indirmek için, disk sürücüleri, anahtarlar ve butonlar gibi mekanik hareketli parçalardan mümkün olduğunca kaçınılır. Yazılımları, dağıtımdan önce kapsamlı bir şekilde test edilir. Watchdog timerlar gibi özel zamanlama devreleri kullanılır.

Watchdog timer, bir hata düzeltme mekanizmasıdır ve bir taramanın başlangıcında veya belirli zaman aralıklarında belirli bir değerle başlatılır. Tarama boyunca geri sayar ve sıfırlama işlemi için işlemci periyodik olarak bildirimde bulunur. Değeri sıfıra veya önceden belirlenmiş bir değere ulaşmadan önce işlemciden bir bildirim almazsa, bir arıza durumunun oluştuğunu varsayar ve işlemciyi sıfırlar, böylece sistemi normal çalışmaya geri döndürür. Watchdog timer ayrıca, hata giderilene kadar potansiyel olarak tehlikeli alt sistemleri kapatarak sistemleri bir güvenlik durumuna alabilir.

İlk sistemlerde uygulamaları geliştirmek için assembly dili kullanılırdı. Günümüz sistemlerinde, kodun kritik bölümleri için assembly kodu ile birlikte, C ve Java gibi yüksek seviyeli dilleri veya bunların gömülü için özel olan sürümleri kullanılır. Yazılımcılar, derleyiciye, assembler’a ve hata ayıklayıcıya (debugger) ek olarak, gömülü sistem yazılımı geliştirmek için devre içi öykünücüler (ICE – in circuit emulators), CRC denetleyicileri ve diğer araçları kullanır. Bir ICE, gömülü işlemcinin veya ona bağlı birimlerin yerini alan ve sistemdeki kodun çalıştırılmasını ve hata ayıklanmasını kolaylaştıran özel bir donanım aygıtıdır.

Tüm gömülü sistemlerde, uygulama kodunu başlatmadan önce kendi kendini sınamasını sağlayan bir ürün başlangıç yazılımı (firmware) bulunur. Kendi kendine test CPU, RAM, ROM, çevre birimleri ve güç kaynaklarını kapsar. Kendi kendine testi geçme genellikle LED’ler veya diğer görsel yollarla gösterilir ve teknisyenlere ve kullanıcılara basit teşhisler sağlar. Ayrıca, sistemin hala güvenilir olduğundan emin olmak için güvenlik testleri belirli aralıklarla tekrarlanır.

10.2. Yazılım Mimarileri

Bu bölümde, gömülü sistemler için en yaygın yazılım mimarileri hakkında kısa açıklamalar yapılacaktır.

10.2.1. Basit Kontrol Döngüsü

Bu mimaride, kontrol yazılımı basit bir döngüden oluşur. Döngü içinde, alt yordamlara çağrılar yapılır. Her alt yordam, kontrol işlevinin bir bölümünü ve/veya donanımın bir bölümünü yönetir. Yazılım için bir durum makinesi modeli, sistemin içinde olabileceği durumları ve bunlar arasında nasıl değiştiğini temsil etmek için kullanılır. Bu, yazılım mimarilerinin en basitidir ve basit bir göreve adanmış bağımsız bir mikro denetleyici ile küçük cihazlarda kullanılır. Sistemin zamanlama kısıtlamaları varsa, döngülerin bu kısıtlamaları karşılayacak şekilde tasarlanması gerekir. Yazılım ana döngü tarafından kontrol edildiğinden, kesintinin işlenmesi ve yeni özelliklerin eklenmesi zorlaşır.

Birkaç cihaza hizmet veren bir kontrol cihazının kodu aşağıda gösterilmiştir:

Kontrolcü {
While  (1)
İşlem  A;
İşlem  B;
İşlem  C;
.
.
İşlem  X;
}

Cihazlar, A, B, C,….,X sırasına göre işleme alınır.  Sisteme ilave cihazlar dahil edilecekse, bu ana döngüye ilave işlemler eklenir. Kontrolcü C aygıtı için işlem yapıyor ve B için işlem gerekiyorsa, B’nin bir sonraki taramaya kadar beklemesi gerekir. Bu tür gecikmeler tolere edilebildiği sürece, bu mimari çoğu basit kontrol görevinin üstesinden gelmek için yeterince iyidir.

10.2.2. Kesme Kontrollü Döngü

Kesme kontrollü mimaride, sistem tarafından gerçekleştirilen görevler, bir timer veya bir girişte değer okunması vb. gibi olaylar tarafından tetiklenir. Bu sistemler de, ana döngüde basit görevler yürütebilir. Her kesme, bir kesme veya olay işleyicisi tarafından işlenir.

Bir kesme meydana geldiğinde, kontrolcü ana döngüden çıkar ve kesmeyi işleme alır. Kesmelere uygun öncelikler atanabilir. Kesme gecikmesini minimumda tutmak için, kesme işleyicilerinin yürütme süresinin kısa olması gerekir. Daha uzun görevler genellikle daha sonra ana döngüde işlenmek üzere kesme işleyicisindeki bir kuyruk yapısına eklenir.

10.2.3. Gerçek Zamanlı İşletim Sistemi (Rtos) Mimarileri

RTOS tabanlı iki yazılım mimarisi vardır. Önleyici olmayan çoklu görev (Function Queue Scheduling) mimarisinde, programcı, kontrol algoritmasını her görevin kendi ortamında çalıştığı bir dizi görev olarak uygular. Görevler bir olay kuyruğu olarak düzenlenir ve bir döngü olayları birer birer işler. Yeni işlevler eklemek daha kolaydır). Önleyicili çoklu görev mimarisinde, sistem, uygulama programcılarının işletim sistemi hizmetlerinden ziyade cihaz işlevselliğine odaklanmasına izin veren bir RTOS kullanır.

10.3. İşletim Sistemi

Yürütülen her program, işletim sisteminin kontrolü altındaki bir görevdir. Bir işletim sistemi tarafından aynı anda yürütülen birden fazla göreve çoklu görev adı verilir. Çok görevli bir işletim sisteminin kullanılması, uygulamanın daha küçük ve daha yönetilebilir görevler kümesine bölünmesini sağlayarak karmaşık yazılım uygulamalarının tasarımını basitleştirir. Çok görevli işletim sistemi, bu daha basit görevlerin yürütülmesine izin verir ve gerektiğinde görevler arası iletişimi kolaylaştırır. Bu çalışma modu karmaşık zamanlama ve sıralama ayrıntılarının sorumluluğunu uygulamanın kendisi yerine işletim sistemine bırakır.

İşletim sisteminin temel işlevleri şunlardır:

1. Tüm kaynakların (işlemciler, bellekler, anahtarlar ve G / Ç aygıtları) durumunu herhangi bir anda takip etmek.

2. İşlemcilere makul bir şekilde görev atama (işlemci kullanımını en üst düzeye çıkarmak için).

3. Paralel veya birbirlerinden bağımsız olarak yürütülebilecek yeni süreçler üretmek veya oluşturmak.

4. Oluşturulan tüm süreçler tamamlandığında, sonuçlarını toplar ve gerektiğinde diğer işlemlere aktarır.

10.3.1. Çoklu Görev ve Eşzamanlılık

Bir seferde yalnızca tek bir görevi gerçekleştirebilen tek işlemcili bir sistemi düşünün. Uygulama birden çok göreve bölünmüşse ve görevler arasında seri bir bağımlılık varsa, yalnızca bir görev çalıştırılabilir ve bağımlılıklarının gerektirdiği sırayla çalıştırılabilir. Bu bağlamda, çok görevli bir işletim sistemi için hiçbir avantaj yoktur. Ancak uygulama, birden fazla görevin aynı anda çalıştırılabileceği şekilde bölümlemeye izin veriyorsa, tek işlemcili bir sistemde bile, çok görevli işletim sistemi bir avantaj sağlar.

10.3.2. Senkronizasyon Mekanizmaları

Uygulamada, sistemdeki çeşitli süreçlerin birbiriyle iletişim kurması gerekir. Genel olarak, bir uygulama, içerdiği tüm görevler arasında bir dizi paylaşılan veri öğesine sahip olur ve her görevin kendi özel veri öğeleri, yığınları ve kuyrukları olur. Paylaşılan veri öğelerine, görevler arasında uygun şekilde erişilmesi önemlidir.

Çeşitli işlemcilerde yürütülen işlemler birbirinden bağımsız olduğundan ve bu işlemlerin göreli yürütme hızları kolayca tahmin edilemediğinden, iletişimin (ve dolayısıyla hesaplamanın sonuçlarının) doğru olması için işlemler arasında iyi tanımlanmış bir senkronizasyon gereklidir. Yani, süreçler işbirlikçi bir şekilde çalışır ve işlemlerin sıralanmasını sağlamak için bir dizi kontrol mekanizmasına ihtiyaç duyulur. Ayrıca, işlemler paylaşılan veri öğelerine (ve diğer kaynaklara) erişim sağlamak için birbirleriyle rekabet eder. Düzenli erişimi korumak için bir erişim kontrol mekanizmasına ihtiyaç vardır.

10.3.3. RTOS

RTOS, işletim sistemi genel amaçlı bir sistemden çok daha basittir ve bu bölümde daha önce açıklanan hizmetleri de sunar. Çekirdek (Kernel) , bir işletim sistemi içindeki temel bileşendir. Bellek yönetimi, ağ yazılımı desteği, hata ayıklama, vb. gibi hizmetleri çekirdeğin bir parçası olarak düşünmek normaldir, ancak bu hizmetler işletim sistemi tarafından sağlanır. Yine de, RTOS ve gerçek zamanlı çekirdek tahsisi pratikte birbirinin yerine kullanılır. Ancak RTOS olmayanlar ile RTOS arasında çalışma farklılıkları bulunur.

Örneğin bir masaüstü ortamında, işletim sistemi güç açılır açılmaz sistemin kontrolünü ele alır. İşletim sistemi diğer uygulamaların başlatılmasına izin verir ve yeni uygulamaların derlenmesini, bağlanmasını ve yüklenmesini sağlar. Bir mikro denetleyicide, başlangıç yazılımı uygulamayı başlatır gerektikçe RTOS’u çağırır.

Bir arıza durumu mikro denetleyicinin çökmesine neden olduğunda, RTOS da onunla birlikte çöker ve sistemin yeniden başlatılması gerekir. Genel bir işletim sistemi ortamında, uygulama hatası koşulları işletim sistemini devre dışı bırakmaz.

Genel olarak, işletim sistemi uygulama için yapılandırılamaz. RTOS, yalnızca belirli bir uygulama için gerekli hizmetleri içerecek şekilde yapılandırılmasına izin verir. Bu, gömülü sistemlerin oluşturulmasında temel bir husus olan bellek ve diğer kaynakların daha optimize kullanımına izin verir.

Bölüm Özeti

Donanım ve yazılım teknolojileri, uygun maliyetli işlemciler sağlamaya başladıkça, gömülü işlemciler daha yaygın hale geldiler. Bu bölümde, gömülü işleme mimarileri kavramı hakkında giriş niteliğinde açıklamalar yapılmıştır.

Kaynakça

Kallstrom,   M.   and   Thakkar,   S.S.,   ‘‘Programming   Three   Parallel   Computers,’’   IEEE   Soft- ware,  5,  1,  January  1988,  pp.  11–22.

Lewis,  D.W.,  Fundamentals  of  Embedded  Software,  Upper  Saddle  River,  NJ:  Prentice-Hall, 2002.

Pont,  M.J.,  Embedded  C,  London:  Addison-Wesley,  2002.

Shiva, S.G., Advanced Computer Architectures, Boca Raton, FL: Taylor and Francis, 2006. Silberschatz A., Galvin, P. and Gragne, G., Operating System Concepts, Addison-Wesley,

2003.

Simon,  D.E.,  An  Embedded  Software  Primer,  Boston,  MA:  Addison-Wesley,  1999. Stallings,  W.,  Operating  Systems,  New  York,  NY:  Macmillan,  2005.

Tanenbaum,  A.  and  Woodhull,  A.,  Operating  Systems,  Design  and  Implementation,  Upper Saddle  River,  NJ:  Prentice-Hall,  2006.

Vahid,  S.  and  Givargis,  T.,  Embedded  System  Design:  A  Unified  Hardware=Software  Intro- duction,  New  York,  NY:  Wiley,  2002.

Williams,  S.A.,  Programming  Models  for  Parallel  Systems,  New  York,  NY:  Wiley,  1990. Wolf,  W.,  Computers  as  Components—Principles  of  Embedded  Computing  System  Design,

San  Francisco,  CA:  Morgan  Kaufmann,  2001.

Yeralan,   S.   and   Emery,   H.,   Programming   and   Interfacing   the   8051   Microcontroller   in   C and  Assembly,  Gainesville:  Rigel  Press,  2000.

Comments