Akademik Bilişim 2007
Dumlupınar Üniversitesi, Kütahya 31 Ocak-2 Şubat 2007, ? - ?
GÖMÜLÜ SİSTEMLER İÇİN ECLIPSE TABANLI TÜMLEŞİK GELİŞTİRME ORTAMI
Çağatay ÇATAL* , Burak Selçuk SOYER* , ve Bülent ÖZÜMÜT*
(*) TÜBİTAK, Marmara Araştırma Merkezi, Bilişim Teknolojileri Enstitüsü 41470, KOCAELİ
cagataycatal@ieee.org , burakselcuk.soyer@bte.mam.gov.tr , bulent.ozumut@bte.mam.gov.tr
ÖZET
Gömülü sistem uygulamalarını hedef kart üzerinde çalıştırabilmek için; kart üzerinde Açılış Önyükleme Yazılımı, Dosya Sistemi, Kart Destek Paketi ve İşletim Sistemi yer almalıdır. Genel olarak gömülü sistemler için geliştirilmiş Tümleşik Geliştirme Ortamlarında (TGO); işletim sistemi yapılandırma, çekirdek modül hazırlama, uygulama geliştirme, hata ayıklama işlemini gerçekleştirme, dosya sistemi oluşturma, hedefe dosya aktarma gibi kolaylıklar yer almaktadır. Eclipse; her türlü geliştirme aracını tümleştirmek, uygulama ve araç geliştirmek için genişletilebilir bir açık kaynak platformdur. Bu çalışma kapsamında; Eclipse platformu kullanılarak Linux işletim sistemi için İşletim Sistemi Yapılandırma Aracı (İSYA), Modül Kolaylık Aracı, İSYA aracını kolaylıkla kullanmak için İSYA Kopya Kağıdı (cheat sheet) uyumlu ekleri geliştirilmiştir. Ayrıca; C/C++ uygulamaları için CDT, Java uygulamaları için JDT ve versiyon kontrol amaçlı kullanılan Subclipse uyumlu ekleri de geliştirdiğimiz uyumlu eklerle tümleştirilerek gömülü sistemler için GİDE ismi verilen ürün haline getirilmiştir. Eclipse platformunun gömülü sistem araçları ve TGO geliştirmede önemli kolaylıklar sunduğu, uyumlu eklerin birer bileşen olması sebebiyle yeniden kullanılabilirliğin arttığı ve Eclipse içerisinde yer alan çerçevelerin uygulama geliştirme sürelerini önemli ölçüde kısalttığı sonuçlarına varılmıştır.
Anahtar Kelimeler: Eclipse, Gömülü Sistemler, İşletim Sistemi, Tümleşik Geliştirme Ortamı.
AN ECLIPSE-BASED INTEGRATED DEVELOPMENT ENVIRONMENT FOR EMBEDDED SYSTEMS
ABSTRACT
A bootloader, a file system, a board support package (BSP) and a suitable operating system should exist on a board to run embedded system application on a target board. Contemporary Integrated Development Environments (IDEs) developed for the embedded system market host many tools and facilities such as an operating system customization tool, kernel module creation, application development, debugging, file system customization and file transfer to target facilities. Eclipse is an extensible open source platform to integrate any development tools, develop applications and tools. In this study; an operating system customization tool called ISYA, a module facility tool, and a cheat sheet for dynamic help have been developed as Eclipse plug-ins. In addition to these three plug-ins, currently available mainstream plug-ins such as the CDT plug-in (C/C++ Development Tools) for developing C/C++ applications, the JDT (Java Development Tool) plug-in for developing Java applications, and the Subclipse plug-in for version control have been integrated to build a product named GIDE. We conclude that the Eclipse platform provides significant facilities to develop embedded system tools or IDEs, improves the reusability, because every plug-in is a component and the frameworks inside Eclipse shortens the application development time significantly.
Keywords: Eclipse, Embedded Systems, Operating System, Integrated Development Environment.
1. GİRİŞ
Eclipse; yazılım geliştirme araçlarını tümleştirmek, uygulama ve yazılım geliştirme aracı geliştirmek için kullanılan evrensel bir platformdur [1]. Son yıllarda, Eclipse tabanlı uyumlu ek (plug-in) geliştirmek için birçok firma çalışmaya başlamış ve varolan ürünlerini Eclipse tabanlı hale getirmiştir. Eclipse platformu yazılım geliştirme araçlarının kolaylıkla birarada çalışabilmesini sağladığı için Windriver, LynuxWorks, Timesys ve Montavista gibi gömülü sistemler konusunda lider firmalar Eclipse tabanlı ürünlerini geliştirmişlerdir. Windriver firmasının Workbench ürünü, LynuxWorks firmasının Luminosity, Timesys firmasının Timestorm ve Montavista firmasının DevRocket ürünleri gömülü sistem uygulaması geliştirmek için hazırlanmış Eclipse tabanlı tümleşik geliştirme ortamlarıdır (TGO). Bu tür TGO’lar genel olarak; uygulama geliştirme, işletim sistemini uygulamaya özel olarak uyarlama, modül hazırlama, uygulama veya işletim sistemi kodunda hata ayıklama, dosya sistemini uyarlama, hedef donanıma dosya transferini gerçekleştirme gibi konularda geliştiricilere önemli kolaylıklar sağlamaktadır. Ayrıca; hedef kart üzerindeki donanımları ilklendiren açılış önyükleme yazılımı da (bootloader) bu TGO’lar ile geliştirilebilmekte ve hataları ayıklanabilmektedir. Çalışmanın ilk bölümünde; Eclipse platformu kullanılarak uyumlu eklerin nasıl geliştirilebileceği, Eclipse tabanlı ürünlerin hazırlanma süreçleri ve Eclipse Zengin İstemci Platformu incelenerek Gömülü Sistem TGO için platform olarak kullanılabilirliği değerlendirilmiştir. Değerlendirmenin olumlu neticelenmesi sayesinde; Linux işletim sistemi için İşletim Sistemi Yapılandırma Aracı (İSYA), Modül Kolaylık Aracı ve İSYA Kopya Kağıdı (Cheat Sheet) uyumlu eklerinin geliştirilmesi hedeflenmiştir. Bu uyumlu eklerin geliştirilmesinin ardından uyumlu ekler bir araya getirilerek; İSYA özellik (feature) adı verilen yapı oluşturulmuştur. Özellik kavramı bu uyumlu eklere ilişkin bilgileri XML dosyasında saklayan Eclipse’e özel bir dosya olarak düşünülebilir ve bu özellikler, Eclipse’in içerisindeki özellik oluşturma sihirbazı sayesinde kolaylıkla oluşturulabilir. Bu özellik hazırlandıktan sonra, açık kaynak CDT (C/C++ Development Tools), JDT (Java Development Tool) ve Subclipse özellikleri de İSYA özelliği ile tümleştirilerek GİDE adı verilen ürün (product) ortaya çıkarılmıştır. Bu çalışma kapsamında görüldüğü gibi; Eclipse tabanlı bir TGO oluşturmak için öncelikle gerekli uyumlu ekler (plug-in) geliştirilmeli, bu uyumlu ekler uygun versiyonları ile bir araya getirilerek özellikler (feature) oluşturulmalı, gerekli açık kaynak özellikler (features) ve geliştirilen özellik kullanılarak nihai ürün (product) oluşturulmalıdır. Geliştirilen uyumlu ek çok büyük veya kapsamlı ise, parçalar (fragment) halinde geliştirilebilir, ancak çoğu durumda bir tek uyumlu ek olarak geliştirilmesi daha uygundur. Ürünün son kullanıcıları kendi ortamlarında Eclipse’e ihtiyaç duymadan, amaçlarına uygun işlemleri ürün içerisinde sunulan sihirbazlar (wizards) yardımıyla gerçekleştirebilmektedir. Eclipse platformu sayesinde GİDE (Gömsis Integrated Development Environment) ürünü hızlıca geliştirilebilmiş ve ürün haline kolaylıkla dönüştürülmüştür. GİDE ürünü, DPT (Devlet Planlama Teşkilatı) tarafından desteklenen TÜBİTAK-Marmara Araştırma Merkezi, Bilişim Teknolojileri Enstitüsü’nde yürütülen GÖMSİS (Genel Amaçlı Gömülü Uygulama Platformu) projesi kapsamında oluşturulmuştur. Bu projede kazanılan deneyimlerin; yeni oluşturulacak TGO’larda, geliştirilecek zengin istemci uygulamalarında veya amaca uygun olarak oluşturulacak uyumlu eklerde yarar sağlayacağı değerlendirilmiştir. Eclipse’in içerisinde bulunan ve sürekli zenginleştirilen açık kaynak projeler sayesinde, yeni teknolojilerin takip edilmesi, projelerde hayata geçirilmesi kolaylıkla gerçekleştirilecektir. 2. bölümde Eclipse platformu ve mimarisi, 3. bölümde geliştirilen uyumlu ekler ve GİDE, 4. bölümde sonuç ve gelecek çalışmalar, 5. bölümde referanslar verilmektedir.
2. ECLIPSE VE MİMARİSİ
Eclipse, Kasım 2001’de IBM, Object Technology International (OTI) ve 8 şirket tarafından açık kaynak platform olarak dünyaya duyurulmuştur. Eclipse 1.0 Kasım 2001’de, Eclipse 2.0 Haziran 2002’de ve Eclipse 3.0 Haziran 2004’de ortaya çıkmıştır. Bu sürümler arasındaki farklar Eclipse’in geldiği noktayı adreslemesi açısından oldukça önemlidir. Eclipse, 1.0 sürümünde bir Java tümleşik geliştirme ortamı (TGO) iken 2.0 sürümünde araç geliştirme platformu özelliğine kavuşmuştur. Bu sayede, yazılım yaşam çevrimi için gerekli olan tüm araçların birarada kullanılabilirliği ve geliştirilebilirliği sağlanmıştır. Araç geliştiriciler bu sayede Eclipse’i bir platform olarak benimsemiş ve Eclipse tabanlı uyumlu ekler (plug-in) geliştirmeye başlamışlardır. Yazılım geliştirme dünyasında sadece araç geliştiriciler ya da bu araçları kullananların olmadığı düşünüldüğünde, uygulama geliştiricilere de bazı kolaylıklar sunulması kaçınılmazdı. Eclipse 2.x sürümünün kullanıldığı dönemlerde bazı geliştiriciler, Eclipse içerisindeki TGO ile ilgili kısımları çıkararak zor da olsa kendi amaçları doğrultusunda Eclipse’i kullanan uygulamalar geliştirebiliyorlardı. Bir diğer ifadeyle, Eclipse’in geliştirme ortamı ile ilgili bileşenleri kodlardan ayrılarak sadece alt yapının kullanıldığı Eclipse’den tamamen bağımsız uygulamalar geliştiriliyordu. Geliştiricileri bu zorluklardan kurtarmak için, Eclipse 3.0 içerisinde TGO ile ilgili bileşenler ve normal uygulama için gerekli olan bileşenler ayrılarak Eclipse Zengin İstemci Platformu (Rich Client Platform) ortaya çıkmış oldu. Eclipse’in hayata geçtiği ilk zamanlarda böyle bir kullanım IBM de dahil olmak üzere hiçbir firma tarafından düşünülmemişti ve gelişim bu platformun oluşturulmasını sağladı. Bu sayede Eclipse; araç geliştirme, araçları tümleştirme, TGO olarak kullanma ve zengin istemci uygulaması geliştirme amacı ile kullanılabilecek bir platform haline dönüşmüştür. Bu noktada, platform ve genişleyebilir uygulama (extensible application) arasındaki farkı vurgulamak yararlı olacaktır. Genişleyebilir uygulamalar, monolitik bir uygulama üzerine zenginlik katmak için uyumlu eklerin (plug-in) veya eklentilerin (add-on) yazılabildiği uygulamalardır. Bu uygulamalarda, tüm parçaların her biri birer uyumlu ek değildir, bu nedenle mimari platformlarda olduğu kadar esnek değildir. Eclipse platformunda ise, tüm bileşenler birer uyumlu ektir ve çalışma zamanı (run-time) bileşeni üzerinde çalışırlar. Örneğin, Photoshop genişleyebilir bir uygulama iken Eclipse tüm bileşenleri uyumlu ek olan bir platformdur.
Eclipse platformuna işlevsellik sağlayan en temel birimler uyumlu ek (plug-in) olarak adlandırılmaktadır. Uyumlu ekler, Eclipse içerisinde varolan genişleme noktaları’nı (extension point) kullanarak platforma yeni özellikler katabilmektedir. Bu genişleme noktalarının kullanılması ile oluşan yeniliklere eklenti (extensions) adı verilmektedir. Örneğin Eclipse platformu için bir HTML editör uyumlu eki geliştirmek istediğinizi ve bu uyumlu eke özgü seçeneklerin ayarlanabilir olmasını istediğiniz durumu ele alalım. Bu durumda Eclipse içerisinde bu uyumlu eke özgü ayarların yer aldığı Preferences menüsüne yeni bir sayfa eklemek için org.eclipse.ui.preferencePage genişleme noktasını kullanmalı ve kendi eklentinizi (extension) oluşturmanız gerekmektedir. Eklentiniz kodlama açısından, bir arayüzü gerçekleştiren sınıftan başka birşey değildir. Verilen örnek için; IWorkbenchPreferencePage arayüzünü gerçekleştiren HtmlEditorPreferencePage sınıfı kodlanarak içerisindeki createFieldEditor metodunu yazmak gerekmektedir. Ayrıca; her uyumlu ekin sahip olması gereken plugin.xml dosyasında bu katkıya ilişkin bazı XML elemanları yazılmalıdır. Eclipse içerisindeki PDE (Plug-in Development Environment) uyumlu eki sayesinde bu elemanları da elle yazmadan editör ile oluşturmak mümkündür ve bu editöre uyumlu ek sihirbazı kullanıldığı durumda kolaylıkla erişilebilir. Eclipse içerisinde uyumlu ekler tembel yükleme (lazy loading) kuralına göre çalışmaktadırlar. Bu sayede, Eclipse açıldığı anda tüm uyumlu ekler yüklenmez sadece talep geldiği durumda yüklenmektedirler. Aksi halde, tüm uyumlu eklerin yüklenmeye çalışılması açılış süresini oldukça yavaşlatacaktı. Eclipse 3.0 ile birlikte Eclipse Zengin İstemci Platformunun (Rich Client Platform-RCP) belirgin şekilde ayrıldığını ve uygulama geliştiricilere kolaylık sağladığını ifade etmiştik. Eclipse RCP içerisinde; SWT (Standard Widget Toolkit), JFace, Çalışma Tezgahı (Workbench), Yardım (Help), OSGI (Open Services Gateway Initiative), Çalışma Zamanı (Run-time) bileşenleri yer almaktadır [2]. SWT; AWT veya SWING gibi platformdan bağımsız grafik kütüphanesidir. Ancak en önemli fark üzerinde bulunduğu işletim sisteminin yerli grafik sembollerini ve bunlarla ilişkin kodları (widget) kullanmasıdır. Bu sayede, Linux işletim sisteminde geliştirdiğiniz bir SWT uygulaması Windows işletim sisteminde bir Windows uygulaması gibi görünmektedir. Görüntü açısından kullanıcılar, ürünün hangi platformda geliştirdiğinin ayrımını yapamayacak ve bulunduğu ortamın bir uygulaması gibi görüntü ve his (look and feel) verecektir. SWT; MacOS X’de Carbon, Linux’da GTK, AIX’de Motif kütüphanelerini kullanmaktadır. C kütüphanelerine erişim Java içerisinden standart Java Native Interface (JNI) ile gerçekleşirilmiştir ancak SWT kullanıcıları bu detaylardan bağımsız sade bir API (Application Programming Interface) ile karşı karşıyadır. JFace, yaygın kullanıcı arayüz işlemleri için sınıflar sağlayan bir kullanıcı arayüzü çerçevesidir ve SWT ile birlikte kullanılabilmektedir [6]. Dialog pencereleri, Sihirbazlar, Preference sayfaları bu çerçeve kullanılarak kolaylıkla oluşturulabilmektedir. Eclipse içerisinde yer alan pencereler genel olarak 2’ye ayrılmaktadır [3]. Kullanıcı pencere içerisinde veriyi değiştirebiliyor ise bu pencerelere Editör, değiştiremiyor ve sadece bilgi amaçlı olarak sunuluyorsa Görünüm (View) adı verilmektedir. Belirli bir amaç için uygun editörler ve görünümlerin birarada yer aldığı yapıya perspektif adı verilmektedir. Örneğin kullanıcı bir Java uygulamasında hata ayıklamak istediği zaman, Java Hata Ayıklama Perspektifine geçerek gerekli pencereleri karşısında görebilmektedir. Eclipse içerisinde editör, görünüm ve perspektif sınıflarının gerçekleştirildiği bileşen Çalışma Tezgahı (Workbench) olarak adlandırılmaktadır. Yardım bileşeni sayesinde kullanıcı kodlama yapmadan sadece gerekli HTML dosyaları ve bir XML dosyası ile geliştirdiği araç ya da uygulama için çevrimiçi (online) yardım belgelerini kolaylıkla oluşturabilmektedir. Kullanıcıya adım adım ve interaktif olarak bu işlemleri yaptırmak için Eclipse Kopya Kağıdı (Cheat Sheets) bileşeni kullanılmaktadır. OSGI bileşeni, Java’ ya bileşen modelini sağlamaktadır. OSGI Birliği (Alliance); Nokia, Motorola, Philips, Siemens, Oracle firmaları tarafından oluşturulmuş ve orjinal misyonu gömülü cihazlar inşa etmek üzere Java bileşen ve servis modeli sağlamaktır. OSGI, Eclipse’den bağımsız olarak başlatılmış bir projedir ve şu anda Eclipse içerisinde Equinox alt projesi içerisinden kaynak kodlarına erişilebilmektedir. OSGI sayesinde; bileşen bağımlılık problemleri, yerelleştirme sorunları ve uygun versiyonların seçimi problemleri çözülmektedir. Bileşenlerin dinamik yüklenmesi, kaldırılması ve güncellenmesi sağlanabilmekte, sistemi yeniden başlatmaya gerek duyulmamaktadır. Eclipse platformunda bileşen modelinin yer alması sayesinde, bileşene yönelik yazılımların sağladığı genişleyebilirlik, idame edilebilirlik ve yeniden kullanılabilirlik gibi avantajlar geliştirilen ürünlerde karşımıza çıkmaktadır. Tüm bu özellikler Eclipse içerisinde yer aldığı için, geliştiricilerin OSGI ile doğrudan etkileşimine gerek kalmadan uygulama veya uyumlu ek geliştirilebilmesi sağlanmaktadır [5]. Güncel yazılımların son kullanıcılara ulaştırılabilmesi için Eclipse içerisinde Güncelleme (Update) bileşeni yer almakta ve bu bileşen kullanılarak son kullanıcılar için güncelleme siteleri (update site) oluşturulmaktadır. Zengin İstemci Platformuna, TGO ile ilgili özellikler eklendiği zaman karşımıza Eclipse platformu çıkacaktır. Platform içerisinde inşa betikleri (build script) için kullanılan Ant, interaktif yardım için Kopya Kağıt (Cheat Sheet), arama işlemleri için Arama (Search), ayıklama işlemi için Hata Ayıklama (Debug), versiyon kontrol araçlarını kullanabilmek için Takım (Team) [4], yazılım güncellemesi için Güncelleme (Update), kaynaklar için Kaynaklar (Resource) gibi çerçeveler yer almaktadır. Örneğin; C uygulamaları geliştirmek için bu çerçevelerden gerekli olanlar alınarak C uygulamaları için özelleştirilmiştir. CDT C/C++, JDT Java uygulamaları geliştirmek için bu kapsamda oluşturulmuş olan uyumlu eklerdir. GEF (Graphical Editing Framework) farklı grafiksel objeleri ya da uygulamaya özel bir palet oluşturmak için kullanılabilecek bir çerçevedir. EMF (Eclipse Modeling Framework), model güdümlü yazılım mimarisi (model driven architecture) uyumlu bir kod üretici çerçevedir. PDE (Plug-in Development Environment), Eclipse içerisinde Java ile uyumlu ek geliştirmek için oluşturulmuş bir bileşendir. WTP (Web Tools Platform), Java Web uygulamaları geliştirmek için kolaylıkların sunulduğu bir çerçevedir. VE (Visual Editor), elle SWT/Swing/AWT kodları yazmak yerine görsel olarak bu işlemleri gerçekleştirmek için kullanılmaktadır. TPTP bileşeni, test yapmak için kullanılan araçlardan oluşmaktadır. UML2 ise meta düzeyde UML2.0 diyagramlarını oluşturmada kullanılan bir bileşendir. Şekil 1’de yukarıda açıklanan Eclipse mimarisi gösterilmektedir.
Şekil 1. Eclipse Mimarisi
Eclipse değerlendirildiği perspektif açısından; Java tümleşik geliştirme ortamı (Java IDE), TGO Çerçevesi (IDE Framework), Araçlar Çerçevesi (Tool Framework), Uygulama Çerçevesi (Application Framework), Açık Kaynak Kod Topluluğu (Open Source Community), Ekosistem (Eco-system) ve bir Vakıf (Foundation) olarak tanımlanabilir. Eclipse içerisinde 10 üst seviye proje ve bu projelerin altında alt projeler yer almaktadır, yeni projeler önerilebilmektedir.
Eclipse açık kaynak projelerinin başarılı olmasının nedenleri; firmaların bu projelerde tam zamanlı elemanlarını çalıştırması, yapılacak işlerin önceden planlanması, proje belgelerinin oluşturulması, bu belgelerin herkesin erişimine açılması ve sahip olduğu esnek mimari olarak sıralanabilir. Eclipse platformu bu son derece esnek mimarisiyle ve geliştirilmekte olan açık kaynak projeler sayesinde, önümüzdeki dönemde de araştırma kurumlarının, üniversitelerin ve yazılım endüstrisinde çalışan firmaların en fazla önem verdiği yazılım platformlarından birisi olacaktır. Tüm kaynak kodlarının açık olması, Eclipse platformunun kullanıldığı durumda söz konusu olan EPL (Eclipse Public Licence) lisansının yazılım dağıtımında geliştiricilere kaynak kodlarını açmasına gerek kalmadan dağıtım imkanı vermesi ve telif hakkı sorunu oluşturmaması diğer sağladığı avantajlardır.
3. GELİŞTİRİLEN UYUMLU EKLER VE GİDE (GÖMSİS IDE)
Bu çalışma kapsamında Eclipse tabanlı uyumlu ek olarak Linux işletim sistemi için İşletim Sistemi Yapılandırma Aracı (İSYA), Modül Kolaylık Aracı ve İSYA Kopya Kağıdı (Cheat Sheet) geliştirilmiştir. Çalışmanın İSYA kısmında elde edilen deneyim, Modül Kolaylık Aracının çok kısa sürede geliştirilmesini sağlamıştır. Bu iki araç da, Eclipse sihirbazlarının yer aldığı sayfaya yeni katkıların yapılması ile gerçekleştirilmiştir.
3.1. İşletim Sistemi Yapılandırma Aracı (İSYA)
İşletim sistemi çekirdeğinin ve sürücü yazılımlarının uygulama ihtiyaçları (performans, kaynak kullanımı, zamanlama) doğrultusunda uygulama mühendisleri tarafından kolay ve zahmetsiz şekilde yapılandırılabilmesi gerekmektedir. Bu gereksinmeyi karşılamak her koşulda gömülü sistem projelerinin maliyetlerini düşürecek ve proje zamanının daha verimli kullanılmasını sağlayacaktır. Bu gereksinmeden hareketle, GÖMSİS projesi kapsamında yukarıda sözü geçen ortak çatının bir parçası olacak şekilde Linux çekirdeğini yapılandıracak İşletim Sistemi Yapılandırma Aracı (İSYA) geliştirilmiştir. İSYA, üretilecek olan tek kartlı bilgisayar donanımına yüklenecek gömülü Linux çekirdeğinin yapılandırılmasını sağlayan Eclipse platformuyla tümleştirilmiş bir yazılım sistemidir. Bu sistem; kullanıcıya yapılandırma seçeneklerini sunmak, kullanıcı tarafından seçeneklerin seçiminden itibaren işletim sistemi çekirdeğinin inşa sürecini otomatikleştirilmek ve derleme süreci için gerekli çapraz-derleyicilerin (cross-compiler) Eclipse’e tanıtılmasını sağlamaktan sorumludur.
Bu uyumlu ek için, tasarım aşamasında belirlenen paket diyagramı Şekil 2’de verilmektedir.
Şekil 2. İSYA Paket Diyagramı
gov.mam.bte.isya paketi; İSYA’ nın uyumlu ek olarak çalışmasını ve hata, bilgi, uyarı amaçlı dosyaya mesaj yazılmasını sağlar. gov.mam.bte.isya.ui.wizards paketi; kullanıcıya İSYA aracını kolaylıkla kullanmasını sağlamak için sihirbazlar sunar. gov.mam.bte.isya.ui.help paketi; İSYA çevrim içi yardım kitapçıklarını sağlamaktan sorumludur. com.swtdesigner paketi; COTS (Commercial Off-The-Shelf) olarak kullanılan ve grafiksel arayüzleri görsel olarak hazırlamayı sağlayan WindowBuilderPro isimli ürünün ürettiği kodları içermektedir. gov.mam.bte.isya.ui.editor paketi; kullanıcının işletim sistemi çekirdeğini uygulamanın ihtiyaçlarına göre yapılandırmasını sağlamak için tablo ağacı (TableTree) şeklinde kullanıcıya hiyerarşik yapı sunup bu yapı üzerinden değişiklikleri kabul etmesini sağlar. Tasarım aşamasında belirlenen bu paket; Linux çekirdeğinin yeni sürümlerinde konfigürasyon menü dilinin (Configuration Menu Language-CML) değişmesi sebebiyle gerçeklenmekten vazgeçilmiştir. Aksi halde sürekli bu dili ayrıştıran (parse) ayrıştırıcı tekrar tekrar kodlanmalı ve editörde buna uygun olarak yeniden yazılmalıdır. Geliştirilecek yeni işletim sistemleri için, konfigürasyon menü dili sabit olucaksa bu paket kullanılarak Eclipse içerisindeki MultiPageEditor sınıfı sayesinde bir editör yazmak mümkündür. gov.mam.bte.isya.build paketi; çekirdeğin inşa edilmesi için gerekli sınıfları içermektedir. Kullanıcının çekirdeğin içini temizlemesi ve xconfig konfigürasyon aracını kullanıcıya talep geldiğinde göstermesi için, bu durumlara uygun sınıflar bu paket içerisinde yer almaktadır. İnşa işleminden önce, kullanıcı proje ağacına sağ tuşla tıklayarak Clean Kernel seçeneğini seçer ve bu noktada bu paket içindeki sınıf çalışarak çekirdeğin içi sonraki yapılandırma için temizlenir. Configure Kernel seçeneğinin seçilmesinin ardından kullanıcıya xconfig aracı görüntülenerek uygun yapılandırmaları gerçekleştirmesi sağlanır. Build Kernel seçeneği sayesinde inşa işlemi gerçekleştirilir. gov.mam.bte.isya.ant paketinin amacı; inşa dosyalarını oluşturarak platformdan bağımsız şekilde farklı işletim sistemlerinde ISYA’yı inşa etmek, gecelik inşalarda kullanmaktır. gov.mam.bte.isya.parser paketi; tasarım aşamasında belirlenmiş bir pakettir. Linux işletim Sistemi için bu ayrıştırıcı yukarıda açıklanan nedenlerle gerçeklenmemiştir. Ancak farklı işletim sistemleri için, böyle bir paketin bulunması tasarım açısından oldukça yararlı sağlayacağı değerlendirilmiştir. gov.mam.bte.isya.ui.preferences paketinin amacı, kullanıcıya İSYA aracından erişmek üzere, araç zincirlerini tanımlamasını ve bu tanımların tüm oturumlarda saklanmasını sağlamaktır. Eclipse içerisindeki Preferences sayfalarına yeni bir sayfa eklenmesini sağlayarak ayarların o sayfadan yapılandırılması için kullanılır. gov.mam.bte.isya.tests paketinin amacı; İSYA’ nın gecelik inşalarda kullanılmak üzere gerekli olan testlerini tanımlamaktır. gov.mam.bte.isya.process paketi ise diğer paketlerde ortak kullanılan dosya işlemleriyle ilgili sınıfların toplandığı pakettir.
Şekil 3’de GİDE içerisinden İSYA uyumlu ekinin başlatılmasının ilk aşaması gösterilmektedir. Next düğmesine basılması ile birlikte sırasıyla; proje bilgi sayfası, çekirdek dizini, mimari ve araç zinciri bilgileri, seçimli olarak başlangıç RAM diski bilgileri kullanıcıdan istenmektedir. Bu arayüzler Şekil 4, 5, 6, 7’de gösterilmektedir. Bu işlemin ardından kullanıcının FINISH butonuna basması ile birlikte çekirdek yapılandırma proje ağacı oluşmaktadır. Bu projeye sağ tıklayarak; çekirdeği temizleme, uyarlama ve inşa etme işlemleri gerçekleştirilebilmektedir.
Şekil 3. İSYA’nın GİDE İçerisinden Başlatılması.
Şekil 4. Bilgi Sayfası.
Şekil 5. Çekirdek Dizini.
Şekil 6. Mimari Sayfası.
Şekil 7. RAM Disk Sayfası.
3.2. Modül Kolaylık Aracı
Bu araç kullanıcının İSYA ile oluşturduğu ya da dışarıdan belirteceği bir çekirdek için Linux çekirdek modülü oluşturan araçtır. Sihirbaz sayfalarından Module Project seçeneğinin aktif edilmesi ile oluşturulur. Bu işlemin ardından kullanıcıdan çekirdek dizini bilgisi, modül ismi, araç zinciri (toolchain) bilgisi istenerek karşısına şablon bir modül kodu çıkartılır. Kullanıcı bu dosyayı değiştirerek ya da yeni dosyalar ekleyerek kendisine uygun modülü gerçekledikten sonra, projeye sağ tıklayarak Build Module seçeneğini seçer. Bu sayede; bu dizindeki kaynak kodları ve belirtilen çekirdeğe özel modül oluşturulmuş olur ve proje ağacının bin dizinine kopyalanır. Kullanıcının Makefile yazmadan kolaylıkla modül oluşturmasına imkan verilmiştir. Bu uyumlu ek; daha sonra sağlanacak olan diğer kolaylık yöntemleriyle zenginleştirilecektir.
3.3. İSYA Kopya Kağıdı (Cheat Sheets)
Bu araç ile; İSYA’nın interaktif şekilde kolaylıkla kullanılması hedeflenmiştir. Şekil 3’de en sağ bölümde bu bileşen gösterilmektedir. Çevrimiçi yardım belgelerinden ziyade bu tür kopya kağıtlarının oluşturulması, son kullanıcılar için oldukça önemli kolaylıklar sağlamaktadır. Bazı eylemleri bu kopya kağıtlarına bağlayarak, kullanıcının karşısına o anda gerekli pencereleri çıkarmak mümkün olmaktadır. İleriki projeler için çevrimiçi yardım belgelerinin yanı sıra bu tür kopya kağıtlarının oluşturulması planlanmaktadır.
4. SONUÇ VE GELECEK ÇALIŞMALAR
Bu çalışma kapsamında; Eclipse’in gömülü sistemlerde TGO alt yapısı olarak kullanılması incelenmiş ve GİDE ürünü geliştirilmiştir. Sahip olduğu bileşen mimarisi sayesinde, uyumlu eklerin hızlıca geliştirilebildiği saptanmıştır. Yeni geliştirilecek TGO’lar ve uygulamalar için kritik bir platform olduğu değerlendirilmiştir. Bileşen yapısı sayesinde yeniden kullanılabilirliğin arttığı, çevik yazılım geliştirme için uygun olduğu, akademi ve endüstri için kritik bir teknoloji olduğu sonuçlarına varılmıştır.
Geliştirilen GİDE ürününde varolan uyumlu eklere yeni açık kaynak uyumlu ekler eklenerek zenginleştirilmesi sağlanacak, gömülü sistemlerde hedef donanıma dosya transferi ve dosya sistem uyarlaması için yeni uyumlu ekler geliştirilecektir. Bu sayede, GİDE ürünü kendisinden beklenen özellikleri tam olarak karşılayabilecek bir yapıya kavuşmuş olacaktır. Yeni uyumlu eklerin, elde edilen deneyim sayesinde kısa sürede geliştirilebileceği değerlendirilmektedir.
5. KAYNAKLAR
[1] Clayberg, E., ve Rubel, D., Eclipse Building Commercial Quality Plug-ins, Addison Wesley, 2004.
[2] Daum, B., Professional Eclipse 3 for Java Developers, Wrox, 2005.
[3] Holzner, S., Eclipse, O’Reilly, 2004.
[4] Holzner, S., Eclipse Cookbook, O’Reilly, 2004.
[5] McAffer, J., ve Lemieux, J. M., Eclipse Rich Client Platform, Addison Wesley, 2006.
[6] Scarpino, M., Holder, S., Ng, S., ve Mihalkovic, L., SWT/JFace In Action, Manning, 2005.
Dostları ilə paylaş: |