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