Gömülü sistemler, özel amaçlar için kullanılmak üzere tasarlanmış, sadece beklenilen görevleri yerine getirmeye programlanmış aygıtlardır. Belirli bir amaca yönelik olarak tasarlandıkları için, boyutları ve maliyetleri küçüktür. Taşınabilir müzik çalarlardan uzay araçlarına kadar hemen hemen her yerde gömülü sistem örnekleri bulabiliriz.
Kısaca tarihine göz atalım: MIT Instrumentation Laboratory‘da Charles Stark Draper tarafından geliştirilen “Apollo Guidance Computer”, ilk kayda değer örnektir. Bu araç, aya yapılan yolculuklar için kullanıldı. 1960’lı yıllarda, bütünleşik devrelerde (IC-integrated circuits) yapılan yenilikler ve kolaylıklar sayesinde, gömülü sistemlerin maliyetinde büyük düşüş oldu. Ayrıca, 1980’lerin ortalarında harici olarak kullanılan sistem parçaları, işlemci ile beraber aynı yonganın (çipin) içine girmeye başladı. Bunun sonucu olarak boyutta ve gömülü sistemlerin maliyetinde çok büyük düşüşler oldu. Bu tip tümleşik devrelere mikroişlemci yerine mikrokontrolör dendi ve gömülü sistemlerin yaygın bir şekilde kullanımı mümkün oldu. Günümüzde kullanılan gömülü sistemlerden birkaçı şöyle:
- Banka ATM’ leri
- Uçuş kontrol donanım/yazılımları ve havacılık elektroniği modulleri
- Cep telefonları
- Yönlendirici (router), time server ve firewall (güvenlik duvarı) gibi bilgisayar ağ donanımları
- Fotokopi makineleri
- Disket sürücüler (floppy disket sürücüler ve sabit disk sürücüler)
- Termostat, klima, güvenlik izleme sistemleri gibi ev otomasyonu ürünleri
- Hesap makineleri
- Mikro dalga fırınlar, çamaşır makinesi, televizyon setleri ve DVD oynatıcı/kaydedici gibi ev elektroniği ürünleri
- Tıbbi donanımlar
- Çok fonksiyonlu kol saatleri
- İnternet radyo alıcıları, TV set top box, ve dijital uydu alıcılar gibi çoklu ortam uygulamaları
- Çok fonksiyonlu yazıcılar
- PDA’ler gibi küçük avuç içi bilgisayarlar
- Endüstriyel otomasyon ve izleme için PLC’ ler
- Video oyun konsolları ve avuç içi oyun konsolları
- Taşınabilir bilgisayarlar
- Bazı otomobiller
- Ölçüm sistemleri (osiloskop, spektrum anizörü, enerji analizörü)…
Günümüzde, gömülü sistemlerden daha akıllı olması gerekenleri mikroişlemciler ile kontrol etme eğilimi çok yaygındır ve büyük bir hızla da yayılmaktadır (Buradan da mikroişlemcilerin sadece bilgisayarlarda kullanılmadığını anlıyoruz). Bilgisayarlardan farklı olarak, gömülü sistemlerde yarı kalıcı yazılımlar kullanılır. Cihazın içinde gömülü bulunan bu yazılımlara “Firmware” denir. Bu yazılımlar kişisel bilgisayarlardakilere oranla daha dikkatli geliştirilir. Çünkü daha belirgin bir amaca hitap eden yazılımlardır ve çalıştırdıkları donanım, bu yazılımları uzun süre hatasız çalışacak varsayımıyla üretilir. Bunun yanında, gömülü sistem her an ulaşabileceğimiz bir yerde olmayabilir (bir uzay aracında ya da petrol kuyusunun dibinde). Bu yazılım, sistemin hafızasında saklanır. Mikroişlemciler ve onun bağlı olduğu bütün elektrik, elektronik, mekanik, vs. alt sistemler ise donanımı oluştururlar. Mikroişlemci hafızadan yazılımı okur, ne demek istediğini anlar ve çalıştırır. Bir gömülü sistemin kullandığı mikroişlemcilerin sayısı genelde bu sistemin karmaşıklığı ya da sahip olduğu alt sistemlerin sayısı ile doğru orantılı olarak artar.
Gömülü sistemlerin genelde işletim sistemleri yoktur ya da özelleşmiş gömülü işletim sistemleri bulunabilir. Bunlara genelde gerçek-zamanlı işletim sistemleri (RTOS: real-time operating system) adı verilir.
Biraz da gömülü sistemlerin nasıl tasarlandığına değinelim. Öncelikle belirtmek gerekir ki, yukarıda da bahsettiğimiz gibi, mikroişlemci bulunduran gömülü sistemler hem yazılım hem donanım içerirler ki bu da işleri iyice zorlaştırır. Yazılım grubu ile donanım grubunun hem bireysel olarak, hem de sistem bakımından iletişim içinde olmaları gerekir. Bu da grupların bir arada çalışabilmeleri ve kullandıkları programlama dillerinin birbirlerininkini anlaması gerekiyor demektir. Bunun için özellikle C++ ve özel kütüphaneler kullanılmaktadır. Bilgisayar programcıları gibi, gömülü sistem tasarımcıları da derleyici, hata ayıklayıcı ve çevirici kullanırlar. Bunun yanında bazı hazır araçlar da kullanılır. Gömülü sistem tasarımlarında biri başlangıç kodu bulunur. Bu kod başlangıçta bütün kesmeleri (interrupt) devre dışı bırakır, sistemi kontrol eder ve uygulama yazılımını başlatır. Yazılım sürecinde çeşitli denetlemeler kullanılabilir. En yaygınlarından biri LED’leri kullanmaktır. Hata ayıklama işi ise genellikle bir devre emülatör ya da mikrokontrolör tarafından çalışan mikrokodu kesebilecek bir çeşit hata ayıklayıcı yardımıyla yapılır. Sistem çok kapsamlıysa daha farklı araçlar kullanılabilir.
Bunların yanında kendi kendini test edebilen gömülü sistemler vardır. Bunlar; CPU, RAM ve program belleğinin test edilmesi, batarya, giriş–çıkış ve çevre aygıtlarının testi, kablo, güvenlik, kimyasalların kontrolü gibi testleri kendi kendine yapabilen sistemlerdir.
Gömülü sistemler çok farklı mimarilerle karşımıza çıkabilir:
- Kontrol Döngüsü: Yazılım basit bir döngü içerisindedir. Çevreden veya zamanlayıcıdan kesme alabilir. Aldığı kesmeye göre de yapılacak işlemi belirler. Bu mimarinin zorlayıcı yanları vardır. Öncelikle, sistemin her hangi bir donanım tetiklemesine karşı ne kadar zamanda tepki verileceğinin garanti edilemez. Ayrıca, sisteme yeni özellikler ekleneceği zaman yapının aşırı karmaşıklaşmasıyla kodlama zorlaşır. Mimarinin avantajı, basit olması ve büyük oranda çalışma garantisi vermesidir. * Nonpreemptive Multitasking: Bu teknik “kontrol döngüsü tekniği” ne çok benzemektedir. Farklı olarak, bunda API saklıdır. Ayrıca sisteme yeni bir yazılım eklemek, kontrol döngüsü tekniğindekinden daha kolaydır. * Preemptive zamanlayıcılar (timers): Yukarıda özetlediğimiz iki teknikte, olaylar sırayla gerçekleşir, döngülerin işi bittikçe alt olaylara geçilirdi. Bunda ise, zamanlayıcı kesmesi kullanılır. Yani belirlenen bir zamana ulaşıldığında kesme (interrupt) oluşur ve diğer olaylara geçilir.
Bu tekniklerin dışında başka teknikler de kullanılmaktadır (Preemptive tasks, Office-style operating systems... gibi).
Sonuç olarak, gömülü sistemlerle her yerde karşılaşabiliriz.Masamızın üzerindeki küçük bir mp3 çalardan otomobillere, uydulardan yerin derinliklerindeki aletlere kadar her yerde gömülü sistemler kullanılmaktadir. Hem yazılım hem de donanım barındıran -genellikle- küçük ama önemli işler yapan, gün geçtikçe teknolojiyle karşılıklı olarak birbirlerini geliştiren sistemlerdir.