Gömülü Sistemler Nedir?

LojikProb sayfamız ilk açıldığından beri belki birkaç istisna hariç yazdığımız tüm makaleler gömülü sistemlerle alakalıydı. Gömülü sistemler dahilinde bulunan platformları, bunlarla alakalı programlama dillerini, gömülü sistem donanımını ve mimarisini sizlere anlattık. Bütün bunları okuyan birisi gömülü sistemlerin sınırlarını ve kendisiyle ilgili konuları az çok bilecek olsa da çoğunlukla tek başıma yürüttüğüm bu internet sayfasında bütün konuları yazmaya vaktim olmuyor. Şimdi bir eksiklik olarak gördüğüm ve yazma ihtiyacı hissettiğim bir konuyu sizlere ayrıntılı olarak anlatacağım. Bu konu ise gömülü sistemlerin ne olduğudur.

Gömülü Sistemler Nedir? 

Gömülü sistemler, mikroişlemci ve mikroişlemciye ait birimlerin birlikte bulunduğu elektronik aygıtlardır. Mikroişlemci sistemi olmasından dolayı birer bilgisayar sistemi olduklarını söylesek de FPGA gibi programlanabilir mantık devrelerini de gömülü sistemlere dahil edebiliriz. Gömülü sistemler daha yalın bir anlatımla kapalı bilgisayar sistemleridir. Kapalı bilgisayar sistemi olması genel maksatlı bilgisayarlara göre farklı amaçlara yönelik olmasına ve farklı özelliklere sahip olmasına sebep olmaktadır. Gömülü sistemler adından da anlaşılacağı üzere pek göz önünde bulunmayan ve genellikle kapalı kutu içerisinde veya bir eşyanın kontrol birimi içerisinde saklanmış bilgisayar sistemleridir. Herkes evinde kaç adet bilgisayar olduğunu çok rahat söyleyebilir. Akıllı telefon ve tabletlerin de birer bilgisayar olduğunu çoğu kişi bilir. Fakat buzdolabının, bulaşık makinesinin, çamaşır makinesinin, fırının, kombinin içinde de bilgisayarlar olduğunu çoğu kişi bilmez. Günümüzde eşyaların dijitalleşmesiyle beraber bilgisayar sistemleri pek çok ev eşyasının içerisine girmiştir. Kombinin kontrol kartına baktığımızda işlemcisi, RAM ve ROM bellekleri olan bir mikrodenetleyiciyi görürüz. Bu mikrodenetleyici prensipte bilgisayar sisteminden farklı olmasına rağmen tek bir programı çalıştırmakta ve sadece tek bir işe yönelik donanıma ve programa sahip olmaktadır. Bu onun bilgisayar olduğu gerçeğini ortadan kaldırmasa da bu farklı bilgisayar sistemleri gömülü sistem olarak adlandırılarak normal bilgisayarlardan ayrı tutulmaktadır.

Gömülü sistemlerin en büyük özelliği bilgisayarla alakasız sistemlerin içerisine de gömülebilen ve amaca göre çeşitli işler yapmaya yönlendirilebilen sistemler olmasıdır. Biz bir kişisel bilgisayar aldığımızda o bilgisayarın donanımı bellidir ve yapacakları da az çok bellidir. Örneğin kişisel bilgisayarların hepsinde görüntü çıkışı, USB portu, ses çıkışı ve ethernet portu bulunmaktadır. Biz bir asansör veya otomatik kapı kontrol kartını bu bilgisayarla yapmak istesek bizim bunların hiçbirine ihtiyacımız olmayacaktır. Aynı zamanda ne yüksek işlem gücüne ne de işletim sistemine ihtiyacımız olacaktır. O sisteme gömülmesi gereken ufak bir bilgisayar sistemi basit bir işi yapmalıdır. Bunun için kendi bilgisayarımızı tasarlamalı ve sisteme entegre etmeliyiz. Biz bilgisayar alırken hazır sistemi alsak da gömülü sistemlerde sistemi, sisteme gömmek gereklidir.

Gömülü sistemlerin kullanım alanını sınırlamak oldukça güçtür. Bilinen kullanım alanlarının dışında sadece elektrikli aygıtlar için kullanılan bir sistem desek yine tam bir tanım olamayacaktır. Biz gömülü sistemlerle istediğimiz her eşyayı “akıllı” hale getirebiliriz. Örneğin bir akvaryumun aydınlatması, sıcaklık ölçümü, filtre ve hava motoru kontrolü ve otomatik yemleme sistemini yapabilir bunu da mikroişlemci sistemi ile kontrol altına alabiliriz. Elektrikle hiçbir alakası olmayan bir akvaryum bile bu noktadan sonra akıllı akvaryum olmuş olur. Biz yine de fikir oluşması açısından bazı gömülü sistem örneklerini size verelim.

Uzay havacılığı : Seyrüsefer sistemleri, otomatik iniş sistemleri, irtifa kontrolü, motor kontrolü, uzay keşfi

Otomotiv : Enjeksiyon denetimi, ABS, hava yastığı kontrolü, ortam kontrolü 

Oyuncak : El atarisi, sanal bebek

İletişim : Uydular, hub, router(yönlendirici), modem

Bilgisayar çevre birimleri : Yazıcı, tarayıcı, klavye, fare, DVD sürücü, sabit disk

Ev eşyaları: Çamaşır makinesi, bulaşık makinesi, fırın, televizyon, ses sistemi, güvenlik sistemi, termostat, alarmlı saat, dijital radyo

Endüstri : Robotlar, üretim bantları, otomasyon, asansör kontrolü

Ölçüm aygıtları : Osiloskop, multimetre, elektronik malzeme ölçer, spektrum analizör, sinyal üretici, güç kaynağı 

Medikal aygıtlar : Görüntüleme sistemleri, termometre, hasta monitörleri

Ofis aygıtları : Faks makinesi, fotokopi makinesi, telefon ve yazar kasalar

Kişisel : Cep telefonu (eski olanlar), kol saati, video oyunları, mp3 çalar

Gömülü sistemlerin en büyük özelliklerinden biri amaca yönelik olarak istenildiği gibi düzenlenebilmesi ve sisteme uydurulabilmesidir. Örneğin düşük güç tüketimi, düşük alan ve maliyet gereken yerde tırnak ucu kadar bir çipi bile kullanabiliriz. Bu çip birkaç MHz saat hızına sahip olsa da bizim işimizi fazlasıyla görebilir. Bunun için şu an kullandığımız pahalı ve hızlı bilgisayarları kullanmak oldukça abes olacaktır. Pek çoğumuzun bildiği üzere bankamatiklerde Windows işletim sistemi kullanılmaktadır. Bu sistem aslında normal bir bilgisayarın bankamatiğe entegre edilmiş halidir. Gömülü sistemler geliştiği için artık bu bankamatiği koca bir bilgisayar kartı yerine tek bir çiple dahi kontrol etmemiz mümkündür. Çünkü en son çıkan mikrodenetleyiciler tek bir çiple yakın bir dönemin bilgisayarlarının yaptığı işleri bile yapabilmektedir. Burada yakın bir dönem dediğimiz 90’lı yıllar olsa da son yıllarda mikrodenetleyiciler büyük bir ivme ile gelişmeye devam etmektedir. Gömülü sistemler için çıkan her bir yeni mikroişlemci ve mikrodenetleyici öncekilerden çok daha hızlı ve kabiliyetli olmaktadır.

Resim: Yukarıda gördüğünüz NASA’nın marsa gönderdiği Mars Sojourner adlı bir arazi aracı. Bu araçta 8 bitlik 80C85 mikroişlemcisinin kullanıldığını biliyor muydunuz? 

Resim: Gömülü sistemleri görmek için yukarıdaki gibi uzaya çıkmaya gerek yok. Hepimizin yakından gördüğü içecek otomatları gömülü sistemler için güzel örneklerden biridir. Yukarıda Vendo V-MAX 720 makinesini görmekteyiz. Bu makine M68HC11 mikroişlemcisini kullanmaktadır. Elbette bu PIC veya AVR de olabilir.

Gömülü sistemlerin kullanım alanlarının bu kadar esnek olmasının ardında güvenirlik, düşük maliyet ve performans yatar. Biz bir bilgisayar anakartını da yukarıdaki içecek makinesinin bir köşesine sabitleyip ilgili giriş çıkış kartlarıyla makineyi kontrol edebiliriz. Fakat bilgisayar anakartının termal macunlarının eskimesi bile ileride bir sıkıntı çıkaracak veya sistemde yazılımsal bir sıkıntı çıkma ihtimali daha yüksek olacaktır. Biz bilgisayarlarımızı formatlamadan kaç yıl geçirebiliyoruz? Gömülü sistemlerde yazılım sabit olduğu gibi basit ve güvenilirdir. Yazılım çoğu zaman ROM belleklerde saklanır ve bu belleklerin hata verme oranı düşüktür. Sistemin basit olması silikon çipten kaynaklanan ve ne zaman başımıza geleceği belli olmayan hatalardan da bizi korur. Çünkü çip karmaşıklaşınca arıza verme oranı yüksektir. O yüzden 64 bit çağında halen 8-bit sistemler kullanılmaktadır. Biz kişisel bilgisayarlarda hafif bir sorun olduğu zaman reset tuşuna basarak sorundan kurtuluyoruz. Fakat yukarıda örneğini verdiğimiz içecek otomatı 7 gün 24 saat çalışmak zorunda ve sorun çıktığında bunu resetleyecek biri de bulunmamaktadır. O yüzden gömülü sistemler genel maksatlı bilgisayarlara göre daha güvenilir bir seçenektir.

Gömülü Sistemlerde Kullanılan Teknolojiler

Bir gömülü sistem meydana getirmek istiyorsanız öncelikle bir kontrol sistemi ortaya koymak zorundasınız. Bu sistem merkezde yer alacak ve diğer bütün çevre birimleri buna bağlanacaktır. Bu merkezi birim bir işlemci, RAM ve ROM üçlüsüyle meydana gelebileceği gibi tek bir çipten ibaret olan mikrodenetleyiciler de olabilir. Aynı zamanda SoC yani çipte sistemler olabileceği gibi bizim konfigüre edeceğimiz bir programlanabilir mantık aygıtı olan FPGA da olabilir. Bütün bunlar seçenekler dahilinde olsa da genel kullanıma baktığımızda gömülü sistemler deyince akla mikrodenetleyiciler gelmektedir. Hani “PIC Programlamak” veya “Arduino öğrenmek” olarak tanımladığımız şeyin asıl tanımı gömülü sistemleri öğrenmek ve üzerinde çalışmaktır. Gömülü sistemler elbette sadece program çalıştıran veya programlanabilen mantıksal devrelerden ibaret değildir. ASIC adı verilen amaca yönelik tasarlanmış özel entegreleri de kullanma imkanımız vardır. Bu entegreler genellikle yüz binlerce üretilen Çin malı ürünlerin içerisinde görülse de bizim bunu ilk çözüm olarak kullanmamız pek mümkün değildir. Bizim burada bilmemiz gereken gömülü sistemlerde genel olarak mikrodenetleyicilerin, yüksek işlem gücü gereken yerde mikroişlemcilerin ve yüksek esneklik gereken yerde FPGA’ların kullanıldığını bilmemizdir.

Resim: Gömülü sistemlerin kullanım alanlarından bahsedip de Nokia 3310’dan bahsetmemek olmaz, değil mi?

Gömülü sistemleri buraya kadar biz sadece donanım yönüyle ele aldık. Gömülü sistemler normal bilgisayar donanımlarından farklı olduğu için bunların yazılımı da farklı bir kategori dahilinde ele alınır. Programlama dilleri her ne kadar bilgisayar için yazdığımız programlama dilleri ile aynı olsa da bir “ağız” olarak ele alabileceğimiz Embedded C, Embedded Java, Embedded C++ gibi çeşitleri bulunmaktadır. Elbette bu sadece uygulama alanından doğan değişikliğin ve farklı bir yönelimin sonucudur. Programlama dilinin aslında bir değişiklik yoktur.

Gömülü sistemler için kullanılan programlama dillerinin yanında gömülü yazılım içerisinde RTOS gibi yazılım paketleri de yer almaktadır. Bu yazılımlar ve kütüphaneler sayesinde gömülü sistemler üzerinde program yazarken belli bir yazılım iskeleti üzerine program yazma şansımız olur. Ama eskiden gömülü sistemlere yazılım yazmanın yazılım alanında tekerleği yeniden icat etmekten farksız olduğunu söylememiz gerekir. Günümüzde de yazılım desteği olmadan pek çok programcı gömülü sistemlere program yazarken sıfırdan program yazmaktadır. Bu yüzden diğer yazılım alanlarına göre zor bir alan olduğunu söyleyebiliriz.

Buraya kadar anlattıklarımız popüler bilgi niteliğinde olmayıp geliştirici adaylarını geliştirmeye yönelikti. Her ne kadar “nedir?” başlıklı bir yazı olsa da bu kapsamdan çıkıp geliştirici adaylarına yol gösterici bir rehber yazısı olmasını amaçladık.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.