İçeriğe atla

Gömülü yazılım

Gömülü yazılım, denetim makineleri ve bilgisayar sayılmayan aygıtlar için yazılmış yazılımlardır. Gömülü yazılımlar genellikle çalıştırılacakları donanıma göre özelleştirilir, zaman ve bellek kısıtlamalarına sahiptir.[1] "Gömülü yazılım" terimi bazen firmware terimi ile beraber kullanılır, fakat firmware bir bilgisayardaki, üstünde bir işletim sisteminin çalıştığı ROM tabanlı koda uygulanabilir. Oysaki, gömülü yazılım genellikle aygıttaki tek yazılım olarak bulunur.

Gömülü yazılımların belirgin ve değişmez bir özelliği ise, bu yazılımların çoğu işlevlerinin kullanıcı arayüzü değil, bilgisayar arayüzü aracılığıyla gerçekleştirilmesi ve denetlenmesidir.[2]

İmalatçı firmalar, gömülü yazılımlarını arabalar, telefonlar, modemler, robotlar, elektronik tehçizatlar, oyuncaklar, güvenlik sistemleri, kalp pilleri, televizyonlar ve set üstü cihazlar, dijital saatler gibi ürünlerinin içine yerleştirmektedir.[3] Bu yazılım işlem karmaşıklığı Yaklaşık Değer Hesaplama sistemi[4] (Rasgeleleştirilmiş algoritmaları baz alan bir yöntem) kullanılarak belirlenmiş, birkaç kilobaytlık hafızaya sahip olan bir 8-bit mikrodenetleyicide çalıştırılan bir ışıklandırma kontrolü kadar basit olabilirken, uçaklar, füzeler ve süreç denetimi sistemlerindeki uygulamarında çok daha karışık bir halde bulunabilirler.[5]

İşletim sistemleri

OS X, Windows veya GNU/Linux gibi işletim sistemlerini kullanan standart bilgisayarlardan farklı olarak, gömülü yazılımlar hiçbir işletim sistemini kullanmayabilir ya da işletim sistemi kullanımı söz konusu olduğunda, gerçek zamanlı işletim sistemleri genel tercih olmak üzere, çeşitli işletim sistemlerini kullanabilir. Bu çeşitlilik küçük, birer çalışma döngüsü ve zamanlayıcıdan oluşan tek kişilik işlemlerden, LynxOS, VxWorks, BeRTOS, ThreadX'e, Windows CE veya Linux (yamalı kernel kullanımıyla)'a kadar yükseltilebilir. Diğer seçenekler OpenWrt, PikeOS, eCos, Fusion RTOS, Nucleus RTOS, RTEMS, INTEGRITY, uC/OS, QNX, FreeBSD ve OSE'yi içerir. Yazılım kodu genellikle C veya C++ programlama dillerinde yazılır, fakat son zamanlarda mikrodenetleyiciler ve gömülü sistemlerde kullanılma amacıyla Python ve JavaScript gibi yüksek seviyeli programlama dillerinin kullanımı yaygınlaşmıştır.[6] Ada dili ise bazı askeri projelerde ve havacılık projelerinde yer almaktadır.

Uygulama yazılımından farkları

Çoğu tüketiciler, bilgisayara işlevsellik kazandıran uygulama yazılımlarına aşinadır. Gömülü yazılımlar ise, bu tür yazılımlardan daha basit olmamasına karşın, tüketicinin kullanımında daha az oranda görünür. Uygulama yazılımlarından farklı olarak gömülü yazılımlar kalıplaşmış, sabit donanım gereksinimlerine ve yeteneklerine sahiptir, üçüncü parti yazılım ve donanımların ilavesi katı bir şekilde kısıtlanmıştır.

Gömülü yazılımlar, gerekli tüm aygıt sürücülerini üretim esnasında içermek zorundadır ve bu sürücüler özelleştirilmiş donanımlara göre oluşturulur. Yazılım ise CPU ve özel olarak seçilen yongalara bağlı olarak yüksek derecede bağımlılık gösterir. Çoğu gömülü yazılım mühendisleri şema analizi ve bileşenlerin, girdi ve iletişim sistemlerinin kullanımını belirlemekte kullanılan veri sayfalarının analizi konusunda mutlaka geçmiş tecrübeye sahiptir. Ondalık, onaltılık ve ikili veri türlerinin dönüşümü bit manipülasyonu tekniğinin kullanımı kadar kullanışlıdır.[7]

Web uygulamaları nadir sıklıkla kullanılmaktadır, fakat XML dosyaları ve benzer çıktılar görüntüleme amacıyla bir bilgisayara aktarılabilir. Klasör içeren dosya sistemleri, SQL veritabanlarının olduğu gibi genellikle bulunmamaktadır.

Yazılım geliştirme işlemi, kodu bilgisayarda çalıştırabilen, ayrıca çalıştırılabilir kodu hedeflenen aygıta göre derleyebilen bir çapraz derleyici gerektirir. Hata ayıklama işleminde bir devre içi emulatör, JTAG veya SWD'nin kullanımı mecburidir. Yazılım geliştiricilerinin çoğu zaman kernel (İS) kodunun tamamına erişim imkânı vardır.

Depolama hafızasının ve RAM'in boyutu büyük ölçüde değişiklik gösterebilir. Bazı sistemler 16 KB Flash hafıza, 4KB RAM ve 8 MHz frekansla çalışan bir işlemciyle çalışırken, bazı sistemler donanım konusunda günümüz bilgisayarlarını geçebilir.[8] Bu tür hafıza gereksinimleri C++ yerine C veya Embedded C++ dillerinin daha fazla kullanımını gerektirebilir. BASIC gibi yorumlanan diller (Parallax Propeller gibi aygıtların kullandığı derlenen BASIC dışında) ve Java (Java ME Embedded 8.3[9] ARM Cortex-M4, Cortex-M7 mikrodenetleyicileri ve Raspberry Pi and Intel Galileo Gen. 2'de kullanılan eski ARM11 mikrodenetleyiciler için mevcuttur.) dillerinin kullanımı yaygın değildir; fakat yorumlanan bir dil olan Python 3 dilinin mikrodenetleyicilere özel uygulaması MicroPython özellikle 32-bit ARM-tabanlı mikrodenetleyici (Örneğin BBC micro:bit gibi) ve 16-bit PIC mikrodenetleyici kullanımına açıktır.

İletişim protokolleri

İşlemciler arası ve işlemcinin diğer sistem bileşenleri ile iletişimin kurulabilmesi oldukça önemlidir. Doğrudan bellek adresleme dışında, genellikle kullanılan protokollere I²C, SPI, Seri port ve USB örnek verilebilir.

Gömülü sistemlerde kullanım için tasarlanmış iletişim protokolleri InterNiche Technologies ve CMX Systems gibi şikretler tarafından kapalı kaynak yazılım olarak elde edilebilir. Açık kaynak protokoller uIP, lwip vb. diğer protokollerden gelmektedir.

Kaynakça

  1. ^ "Stroustrup on C++ for embedded (bottom p.2)" 29 Mart 2017 tarihinde Wayback Machine sitesinde arşivlendi. (PDF).
  2. ^ "I.C.S. on embedded software" 22 Mart 2013 tarihinde Wayback Machine sitesinde arşivlendi..
  3. ^ "Embedded Systems Methods and Technologies" 29 Ekim 2013 tarihinde Wayback Machine sitesinde arşivlendi..
  4. ^ Alippi, Cesare (2014), Intelligence for Embedded Systems, Springer, ISBN 978-3-319-05278-6 .
  5. ^ "Arşivlenmiş kopya" (PDF). 5 Temmuz 2010 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 17 Kasım 2016. 
  6. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015).
  7. ^ "Stroustrup on embedded software" 3 Şubat 2013 tarihinde Wayback Machine sitesinde arşivlendi..
  8. ^ "Example of embedded CPU" 15 Haziran 2012 tarihinde Wayback Machine sitesinde arşivlendi..
  9. ^ "Java ME Embedded" 19 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi..

Ayrıca bakınız

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

<span class="mw-page-title-main">Mikrodenetleyici</span>

Mikrodenetleyici bir VLSI entegre devre çipinde küçük bir bilgisayar'dır. Mikrodenetleyici, bellek ve programlanabilir giriş/çıkış çevre birimleri ile birlikte bir veya daha fazla CPU kapsar.

<span class="mw-page-title-main">Macintosh</span> dizüstü ve masaüstü bilgisayarlara yönelik geliştirilen işletim sistemi

Macintosh, kısaca Mac olarak bilinen ve adını McIntosh Amerikan 1949 ses firmasından alan patent sorunu yaşamamak için Macintosh olarak yazılan, kişisel bilgisayar üreten Apple Computer Inc.'in bir ürünüdür. Ürün yelpazesi 1984 yılında başlamış ve piyasada fare ve grafik arayüz kullanan ilk başarılı bilgisayar serilerinden biri olmuştur. Bu başarıdan dolayı, 1986 yılından itibaren şirketin Lisa, Apple II, Apple III gibi yelpazeleri sonlandırılıp tüm bilgisayarları Macintosh serisi altında toplanmıştır.

<span class="mw-page-title-main">AmigaOS</span> Amiga kişisel bilgisayarının işletim sistemi

AmigaOS, Amiga kişisel bilgisayarının işletim sistemidir. Grafik arabirimi olan Workbench, CLI komut satırı arabirimi ile birlikte AmigaDOS ve çoğu Amiga modelinde ROM'da yer alan Kickstart'tan oluşur.

<span class="mw-page-title-main">PowerPC</span>

PowerPC, AIM olarak bilinen Apple-IBM-Motorola ittifakının 1991'de geliştirdiği bir RISC mikroişlemcisidir. Genel olarak kişisel bilgisayarlar içindir. PowerPC merkezi işlem birimleri (CPU) gömülü (embedded) ve yüksek performans işlemcileri olduğu için popüler olmuştur. PowerPC 1990'da AIM' in ve PReP'in temel taşı oldu, fakat mimari Apple'ın Macintosh'unun 1994–2006 modellerinde daha başarılı bulundu.

<span class="mw-page-title-main">BIOS</span> EPROM adı verilen bir yonga üzerinde ROM Bellek biçiminde yer alan yazılım

BIOS,. EPROM adı verilen bir yonga üzerinde ROM Bellek biçiminde yer alan bir tür yazılımdır. Bilgisayar açıldığı anda işlemciye tüm diğer donanımları sırasıyla tanıtır. Donanımların temel iletişim protokollerini belirler. İşletim sisteminin başlangıç öğelerinin herhangi bir sürücüden yüklenmesini sağlar. İşletim sistemi çalışırken donanım ve işletim sistemi arasındaki ilişkileri düzenler.

Betik dili, betik yorumlamak için yazılmış özel çalışma-zamanı sistemlerinin yorumlayabileceği programlama dilleridir. Diğer programlama dilleri ile yazılan kodlar makine koduna çevrilip çıkan program doğrudan çalıştırılırken betik kodları interpreter tarafından doğrudan okunur ve yorumlanarak işlemler yorumlayıcının kendisi tarafından yapılır.

<span class="mw-page-title-main">Java (yazılım ortamı)</span>

Java, Sun Microsystems tarafından üretilen ve yazılım uygulamaları geliştirmeye yardımcı yazılımlar bütünüdür. Java'nın kullanım alanı gömülü aygıtlardan cep telefonlarına, kurumsal sunuculardan süper bilgisayarlara uzanmaktadır. Cep telefonları, Web sunucuları ve kurumsal uygulamalarda sıkça kullanılan Java'nın masaüstü bilgisayarlardaki kullanımı daha az yaygındır. Ne var ki, bu ortamda çalışan Java uygulamacıkları Dünya Çapında Ağ üzerinde gerçekleştirilen işlemlerde kullanım kolaylığı sağlamaktadır.

<span class="mw-page-title-main">Giyilebilir bilgisayar</span>

Giyilebilir bilgisayar, vücuda giyilen bilgisayarlardır. Giyilebilir bilgisayar teknolojisi etkin bir araştırma alanıdır ve insan bilgisayar etkileşimi, giyilebilir teknoloji, taşınabilir teknolojiler ve kablosuz teknolojilerden yararlanır. 2010 yıllarından sonra popüler olmuştur.

Bilgi işlem platformu, bir uygulama yazılımı çalıştırmak için donanım mimarisi ve bir yazılım çerçevesi, yazılım, çeşitli bazı kombinasyon veya sıralamalarını içermektedir. Tipik platformlarda bir bilgisayar mimari, işletim sistemi, programlama dilleri ve ilgili kullanıcı arabirimi içerir.

<span class="mw-page-title-main">Gömülü sistem</span> Belli bir fonksiyonu yapmaya yönelik bilgisayar sistemi

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Yazılım uyarlama, varolan bir yazılımın oluşturulduğunda çalışmasının amaçlanmadığı başka bir bilgisayar ortamında çalışması amacıyla yapılan bir uyarlama sürecidir. Bu terim, yazılım veya donanımın farklı ortamlarda kullanılabilir hale getirilmesi için değiştirildiği durumlarda da kullanılır.

<span class="mw-page-title-main">Yazılım iskeleti</span>

Bilgisayar programlamada yazılım iskeleti, yazılım çerçevesi ya da yazılım çatısı, standart fonksiyonların hazır olarak sunulduğu ancak programcı tarafından bu fonksiyonlardan arzu edilen kısımların ek kodlarla istenildiği şekilde güncellenebildiği sistemlerdir.

<span class="mw-page-title-main">Yongada sistem</span> Bir entegre devre türü

Yongada sistem bir entegre devre türüdür. Tek başına bir bilgisayarda bulunan bütün parçaları içerebilir. Aynı zamanda analog, sayısal, karışık sinyal ve radyo iletişimi işlevlerini bünyesinde toplayabilir. Yongada sistemlere düşük güçle çalışan mobil elektronikte sıkça rastlanır. En yaygın kullanım alanı gömülü sistemlerdir. Yongada sistemlerin mikrodenetleyicilerden en büyük farkı işlem gücü ve yüksek hafızasıdır. Ayrıca yongada sistemler harici flash depolama, RAM ve çok çeşitli başka elemanlarla aynı anakart üzerinde onları yöneterek çalışabilirken mikrodenetleyicilerde bunun gibi çok parçalı bir yapı yoktur. Daha doğrusu bir gömülü sistem eğer bir mikrodenetleyici ile kurulduysa ROM, RAM gibi bileşenler mutlaka mikrodenetleyicinin içerisinde bulunurken yongada sistemde böyle bir zorunluluk yoktur. Ayrıca yongada sistemlerin gücü son kullanıcıların kullandığı Windows, Macintosh, iOS, Android vb. işletim sistemlerini çalıştırmaya yeterken mikrodenetleyiciler çok daha spesifik alanlarda ve çok kısıtlı ROM ve RAM'ler ile çalışırlar. Nihayetinde mikrodenetleyiciler örneğin bir çamaşır makinesini kontrol ederken yongada sistemler akıllı telefon, tablet ve hatta bilgisayarlara bile can verebilirler.

<span class="mw-page-title-main">XNU</span>

XNU, MacOS işletim sisteminde kullanılmak üzere Aralık 1996'dan beri Apple'da geliştirilen ve Darwin işletim sisteminin bir parçası olarak ücretsiz ve açık kaynaklı yazılım olarak piyasaya sürülen bilgisayar işletim sistemi çekirdeğidir. Ayrıca, iOS, tvOS ve watchOS işletim sistemlerinin çekirdeği olarak da kullanılır. XNU, "X Not Unix"'in bir kısaltmasıdır.

BSD / OS, Berkeley Software Design, Inc. tarafından geliştirilen BSD işletim sisteminin durdurulan tescilli bir sürümüdür. (BSDi).

RIOT, düşük güçlü kablosuz nesnelerin interneti (IoT) cihazlarına odaklanan, ağa bağlı, belleği kısıtlı sistemler için tasarlanmış küçük bir işletim sistemidir. GNU Kısıtlı Genel Kamu Lisansı (LGPL) altında yayınlanan açık kaynaklı bir yazılımdır.