Sunday, June 19, 2011

Embedded Linux Teknolojileri

Embedded Linux Teknolojileri konusunda hazırladığım ve bu konuda genel bir fikir vermesini umduğum bu Türkçe döküman umarım konuyla uğraşanların işine yarayacaktır.

1.Giriş
Embedded cihazlar çevremizde gördügümüz bir çok elektronik aletin içinde bulunmakta. Bu embedded cihazların üzerinde çalısacak isletim sistemi olarak da masa üstünde kendini kanıtlamıs olan GNU-Linux ise her geçen gün daha da öne çıkmaktadır. Otomotivden, tıbbi chazlara, ag cihazlarından kullanıcı elektronigine kadar genis bir yelpazede kullanılmakta olan embedded linux teknolojisi gerçek innavosyonun yazılımda yapıldıgı günümüz sartlarında innovatif elektronik cihaz üreten firmaların vazgeçemiyecegi bir araç olma yolunda ilerlemektedir. Genis bir yazılım yelpazesinden beslenen açık kaynak kodlu yazılıma dayalı böyle çözümler firmaları tekerlegi yeniden icat etme durumunda bırakmadan hızlı bir sekilde pazarlamaya hazır, görece az yatırım gerektiren güvenilir ve stabil ürünler tasarlamalarını kolaylastırmıstır. Bu önemli rekabet avantajına sahip olmak ise embedded linux teknolojileri konusunda know-how’a sahip olmakla aynı kapıya çıkmaya baslamıstır. Bu know-how’a sahip olmak her zaman kolay olmadıgı ya da firmaların temel yetenekleri(core competence) baska konular oldugu için embedded linux teknolojilerine kendileri vakıf olmak yerine bu konuda danısmanlık satın olma yoluna gidebilmektedirler.
Bu bilgiler ısıgı altında bu raporda embedded linux ve çevresinde kullanılan teknolojiler, bu teknolojilere vakıf olmak için özümsenmesi ve bilinmesi gereken ana noktalara deginilmeye çalısılacaktır. Bu konuda danısmanlık/ürün hizmeti veren firmaların verdikleri tipik servislere bakılacak ve en son olarak embedded linux dünyasının tipik ve önemli açık kaynak kodlu yazılımları incelenecektir.

2.Embedded Linux temel teknoloji yapıtaşları

2.1 Bootloader
Embedded linux dünyasının en önemli yapıtaslarından biri embedded cihazın açma kapama dügmesine basıldıktan sonra ilk kontrol eden yazılım olan bootloader’dır. Bootloader masaüstü bilgisayar dünyasındaki BIOS teknolojisinin benzeridir. Donanım üzerinde çok temel ayarlamaları yapan mikro bir isletim sistemi olarak da görülebilir bootloader. Su anda piyasadaki en popüler linux embedded bootloader’ı Uboot olarak bilinen açık kaynak kodlu yazılımdır. Yeni tasarlanan bir board eger linux embedded ile birlikte kullanılmak isteniyorsa yeni tasarlanmıs donanımın gerekli ilk ayarlarını yapması için Uboot’un board spesifik kaynak kodlarında yapılacak ekleme ve düzenlemeler sayesinde Uboot yeni donanım üzerinde kosabilecek konuma getirelebilir. Uboot donanım üzerinde çalısan embedded linux isletim sisteminin güncellenmesi (Supportability) senaryolarında da sıkça kullanılan bir yazılım parçasıdır. Bu yazılım su anda Denx ( http://www.denx.de ) danısmanlık firması tarafından desteklenmektedir. ( http://www.denx.de/wiki/U-Boot )

2.2 Kernel
Embedded Linux isletim sisteminin kalbi Türkçe çekirdek olarak da bilinen kısmıdır. Embedded
Linux İsletim sistemi tasarlanan gömülü olarak kullanılacak donanıma uyarlanırken yapılması gereken degisikliklerin bir kısmı da çekirdek üzerindedir. Linux çekirdeginin donanım spesifik genisletilmesi gerek direkt çekirdege link edilecek degisiklikler olarak gerek linux modülleri olarak bilinen yazılım parçaları olarak hazırlanabilirler. Eger gerçek zamanlı gereksinimler varsa yine mevcut açık kaynak kodlu yamalar aracılıgı ile (xenomai, rtai (http://www.xenomai.org http://www.rtai.org )gibi) linux çekirdegi mevcut donanıma uygun bir sekilde yamanarak amaca uygun hale getirelebilir.

2.3 Device Drivers
Bir gömülü sistemin is görebilmesi için mikroislemci ile birlikte gelen board ya da direkt chip (SoC) üzerinde bulunan iletisim ve interaksiyon araçları da donanım spesifikasyonlarına uygun yazılım parçaları tarafından kontrol edilmek isterler. Peripheral olarak da bilinen bu çevre birimlerini kullanabilmek için donanım sürücüleri yazılması gerekir. Özellikle gömülü sistemler dünyasında standard olmayan, donanım tasarımı yapan firmaya özel çevre birimleri kullanıldıgı için donanım sürücüleri katma deger yaratılabilen önemli bir alan olarak görülebilir. Gerektiginde yüklenebilen linux kernel modülleri de bu kontext içinde anahtar kelime olarak ismi anılması gereken teknolojilerden biridir.

2.4 Cross Compiler
Çapraz derleyici olarak Türkçe’ye tercüme edebilecegimiz bu kavram gömülü sistemlerde sık kullanılan bir derleme seklidir. Genelde ARM mimari üzerinde kosan embedded linux yazılımları x86 mimarisi üzerinde ARM tabanlı hedef cihazı için derlenirler. Açık kaynak kod dünyasında sıkça kullanılan gcc kod derleyicisi bu tarz çapraz derlemeye uygun gelistirilmistir. Embedded linux dünyasında bu tarz çapraz derlemeye hazır, toolchain olarak bilinen stabil gcc sürümleri yayınlayan Linaro ( http://www.linaro.org/ ), Yocto ( http://www.yoctoproject.org/ ) gibi projeler bulunmaktadır. Bir embedded linux projesi için seçilen çapraz derleyebilen gcc toolchain ve versiyonu oldukça önemlidir. Çünkü proje ilerledikten sonra bu derleyiciyi degistirmek çok kolay olmayabilir. Farklı gcc versiyonları aynı kaynak kodtan farklı runtime sonuçları üretebilen makina kodları derleyebilir. Bu da çalısır durumdakı bir embedded linux çözümünü tekrar hatadan arındırmak anlamına gelebilir.

2.5 Development Environment(IDE)
Embedded linux projeleri üzerinde çalısan yazılım mühendisleri kaynakları sınırlı hedef donanım üzerinde direkt gelistirme yapamıyacakları için kendi host bilgisayarları üzerinde araçlara ihtiyaç duyarlar. Bu araçlar debugger, derleyici, editor gibi birden fazla etmen içerebilir. Her embedded linux projesi kendine has bir donanıma ve gereksinime sahip oldugu için yine her proje için spesifik araçlar ve çözümler gerekebilir. Bu projeye özel araçlar ile birden fazla yazılım mühendisi hedef donanım için hızlı ve verimli gelistirme yapabilir. Bu alanda gdb, ddd, eclipse ve gcc gibi açık kaynak kodlu araçlar firma ve proje ihtiyaçlarına göre (gdb scripts, eclipse plugins vs.) ince ayarlanabilir. Bu tarz araçlar üzerindeki know-how, embedded linux proje ekosistemleri için oldukça önemlidir ve önemli katma deger yaratmaya müsaittir.

2.6 Embedded Web 2.0İ
İnternet dünyası üzerinden tanıdıgımız Web 2.0 teknolojileri (hızlı yüklenen, interaktif zengin içerikli, masa üstü uygulamaları yerine geçebilecek web sayfaları) embedded dünyası için de oldukça önemlidir. Bir çok gömülü cihaz son haline ulastıgında bir ekrana sahip olmaz.(headless) O yüzden gömülü cihazları genelde ethernet üzerinden kurulacak bir baglantı ile web tabanlı bir arayüzle baska bir cihaz üzerinden yönetmek sıklıkla karsılasılan bir durumdur. Bu baglamda en son web sunucu özelliklerini bünyesinde bulunduran linux çözümlerini çapraz derleyip hedef gömülü cihazda çalısabilecek hale getirmek ve buna baglı çözümler sunmak oldukça ilginç bir embedded linux alanı olarak karsımızda durmaktadır.

2.7 Virtualization
Son yılların masaüstü dünyasındaki sıcak konusu sanal makinalar embedded dünyasında da kendine yer bulmustur. Özellikle hedef donanıma fıziksel bir baglantı gerekliligi bir zorluk oldugu için embedded linux projelerde host üzerinde hedef embedded donanımı emüle eden sanal makinalar sıkça görülmeye baslamıstır. Bu x86 mimarı üzerinde ARM tabanlı bir sanal makina anlamına gelebilmektedir. Bu baglamda en önemli anahtar kelime QEMU’dur. Bu açık kaynak kodlu sanal makina çözümü üzerinde iyi bir know-how’a sahip olmak yeni board/donanım destekleri sunmak/sunabilmek aynı zamanda embedded linux projelerı için ciddi bir katma deger yaratma anlamına gelebilir.( http://wiki.qemu.org )

3. Embedded Linux üzerine çalışan danışmanlık firmaları ve sundukları hizmetler

3.1 Denx
http://www.denx.de
Açık kaynak kodlu yazılım ve embedded linux teknolojileri üzerine uzmanlasmıs uboot bootloader’ın ana gelistiricisi konumunda Alman danısmanlık firması. Sundugu hizmetleri özetlemek istersek:
• Firmware ve isletim sistemlerini spesifik donanımlara port etmek.
• Donanım sürücüleri gelistirmesi.
• Donanıma yakın yazılım çözümleri sunmak.
• Performans optimizasyonu sunmak.

3.2 Pengutronix
http://www.pengutronix.de
Açık kaynak kodlu yazılım ve embedded linux teknolojileri üzerine uzmanlasmıs Alman danısmanlık firması. Sundugu hizmetleri özetlemek istersek:
• Linux Board Support Package gelistirimi. (Yeni donanıma linux port etmek)
• Qt GUI gelistirmesi. Ekranı olan embedded linux cihazlar için Qt tabanlı arayüz tasarımı/gelistirimi.
• Kernel gelistirmesi. Donanım sürücüleri gelistirmek.
• Gerçek zamanlı embedded linux çözümleri.
• Embedded Web 2.0 konusunda çözümler ve danısmanlık.

3.3 Embitel
http://www.embitel.com/
Açık kaynak kodlu yazılım ve embedded linux teknolojileri üzerine uzmanlasmıs Hintli danısmanlık firması. Sundugu hizmetleri özetlemek istersek:
• Linux Board Support Package gelistirimi. (Yeni donanıma linux port etmek)
• Qt GUI gelistirmesi.
• Eclipse Plug-in gelistirmesi.
• Donanım sürücüleri gelistirmek.
• İletisim protokolleri tasarımı ve gerçeklestirimi.

3.4 Windriver
http://www.bsdi.com/services/linux-practice/
Intel tarafından satın alınan kendine ait sanal makina çözümleri de içeren bir embedded linux dagıtımı olan amerikan danısmanlık firması. Sundugu hizmetleri özetlemek istersek:
• Legacy gerçek zamanlı gömülü sistemleri embedded linux’e aktarmak.
• Kernel ince ayarları.
• Paket birlestirme danısmanlıgı.
• Kernel gelistirmesi. Donanım sürücüleri gelistirmek.

3.5 MontaVista
http://www.mvista.com/
Kendine ait bir embedded linux dagıtımı ve ekosistemi olan amerikan danısmanlık firması.
Sundugu hizmetleri özetlemek istersek:
• Android tabanlı çözümleri ticarilestirmek
• Kernel gelistirme ve ince ayarları.
• Performans optimizasyonu.

3.6 Sysgo
Kendine ait PikeOS ve ElinOS adında iki embedded linux dagıtımı olan alman menseyli firma.
Sundukları danısmanlık ve çözümler genelde kendilerine ait bu iki dagıtım üzerindendir.

4. Çok kullanılan açık kaynak kodlu Embedded Linux Yazılımları
4.1 Yocto Project
http://www.yoctoproject.org/
Embedded linux gelistirmek ve amaca özel bir ‘dagıtım’ hazırlayabilmek için gerekli araçları bünyesinde getiren bir açık kaynak kodlu proje. Gcc toolchain, Debugger, Emülasyon araçları

4.2 LTIB
http://www.bitshrine.org/ltib/
Proje ismi Linux Target Image Builder’ın bas harfleri. Yocto’ya benzer alternatif bir embedded linux dagıtımı/Board Support Package(BSP) hazırlama platformu. Web sayfalarında yaptıkları isi su resimle özetlemisler.










4.3 Uboot
http://www.denx.de/wiki/U-Boot
Denx firmasının ana destekçilerinden biri oldugu en popüler embedded linux bootloader.

4.4 Qemu
http://wiki.qemu.org/
Popüler bir embedded platform emülasyon ve sanal makina aracı. ARM platformlarını x86 sistemler üzerinde emüle edebilmesi embedded linux çözümleri için ilginç bir araç olmasına neden oluyor. En büyük dezavantajı her ARM SoC için ayrı bir QEMU destek kodu istemesi.

4.5 Linaro
http://www.linaro.org/
Yocto’ya benzer alternatif bir embedded linux dagıtımı/Board Support Package(BSP) hazırlama platformu.

4.6 Xenomai
http://www.xenomai.org
Embedded linux kernel’ini gerçek zamanlı hale getirebilmek için kullanılan bir patch. Aslında nano kernel olarak donanımın üzerinde çalısan bu çözüm, interrupt kontrolünü kendi eline alarak linux kernelini deterministik bir yapıya büründürüyor. Temelinde Adeos donanım abstraksiyonunu kullanır.

4.7 RTAI
https://www.rtai.org/
Real Time Application Interface’in bas harflerinden olusmus bir açık kaynak kodlu proje ismi. Xenomai gibi Adeos donanım abstraksiyonunu kullanarak linux çekirdegine deterministik bir yapı kazandırır. Xenomai’den ise implementasyon detaylarında ayrılmaktadır.

5. Sonuç
Yukarda açıklanmaya çalısılan embedded linux teknolojilerinde de görülecegi gibi bu konu oldukça genis bir yelpazeye ve bilgi altyapısına dayanmaktadır. Bu teknolojilere dayalı bilgi ve knowhow satısı ve çözüm üretimi yapan firma sayısı görece az olmakla birlikte hızla gelisen ve ihtiyaç duyulan bir alan oldugu için daha da ilginç çözülmeyi bekleyen problemler ortaya çıkaracagı süphe götürmez görünmektedir.

No comments:

Post a Comment