TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI
22 Eylül 10 Ekim (3 Hafta) : TS-7200 gömülü sisteminin incelenmesi, çevrebirimlerin fonksiyonlarının araştırılması ve yazılım geliştirme ortamları hakkında bilgi edinilmesi. Geliştirilecek sistemin tasarlanması. Tecnologic System(TS) firması tarafından üretilen ve uygulama geliştiricilerin hizmetine sunulan TS-7200 platformu, üzerinde 200 MHz çalışma frekansında ARM9 serisi işlemci bulunduran bir uygulama geliştirme platformudur. Bu platform üzerinde seri arayüzler, USB arayüzü, Ethernet arayüzü, sayısal giriş çıkış birimleri ve veri saklamak için kullanılan compact flash arayüzü bulunmaktadır. Sistem üzerinde bulunan ARM işlemci compact flash ya da kart üzerindeki flash bellek üzerindeki işletim sistemlerini koşturmaktadır. Tercihe göre bu iki bellek üzerindeki herhangi bir Linux versiyonu seçilmekte ve bu Linux versiyonu sistemin boot sistemi olarak kullanılmaktadır. Compact flash üzerinde bulunan Debian Linux versiyonu kullanıcılara daha ileri seviyede olanaklar sunmasına rağmen gerçek zamanlı çalışmalar için dahili flash bellek üzerindeki TSLinux tercih edilebilmektedir. TSLinux bu donanım sistemi için TS tarafından hazırlanan ve kernel seviyesine daha yakın bir Linux versiyonudur. Bu Linux versiyonunda klasik masaüstü Linux sistemlerine göre bazı özellikler kernelden çıkarılmış veya disable edilmiştir. Böylece işletim sisteminin donanım ile olan haberleşme özelliklerine önem verilmiş ve gerçek zamanlı uygulamalar için daha verimli bir ortam sağlanmıştır. Şekil 1 de çevre birimler şekil üzerinde gösterilmiştir. PC/104 DC Seri Port Compact Flash USB CPU Ethernet Seri LCD DIO Şekil 1: TS-7200 platformu ve çevre birimleri
Sistemin farklı gereksinimleri göz önünde bulundurularak eklenti özellikler yapılabilmesi için PC/104 adı verilen ve PC lerdeki PCI slotu andıran bir genişleme yuvası bulunmaktadır. Bu genişleme yuvası sayesinde sisteme yeni bellekler, sayısal giriş çıkışlar, GPS ve GPRS modülleri dahi eklenebilmektedir. Şekil 2 de TS-7200 platformuna eklenmiş bir gerçek zamanlı saat entegresi gösterilmektedir. Bu slot yardımı ile yapılan eklemelerin sayısı besleme kaynağının çekebildiği güç ve slotu adresleyen saklayıcı ile sınırlı olup üst üste birkaç kat oluşturulması dahi mümkündür. Şekil 2: TS-7200 platformu üzerindeki PC/104 slotunun kullanılması Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki GCC derleyicisi kullanılabilmekte ve direkt olarak platform üzerinde derleme yapılabilmektedir. Fakat bu çalışma süresinde PC ortamının sunmuş olduğu IDE avantajlarından faydalanabilmek için PC tarafındaki RedHat Linux üzerinde gömülü platform için hazırlanan cross-toolchain ler kullanılacaktır. Cross-toolchain ler kullanılarak elde edilen çalıştırılabilir dosyalar daha sonra gömülü siteme FTP ile bağlanılarak gönderilecek ve platform üzerinde çalıştırılacaktır. Aşağıda basit bir programın derlenmesi için uygulanması gereken komut ve bu işlem sonrasında oluşan ekran çıktısı verilmektedir. main.c /*----------------------------------------------------------------------------------------------------------------------------------------------------*/ // KÜTÜPHANELER #include <stdio.h> // Standard input/output definitions #include <string.h> // String function definitions /*----------------------------------------------------------------------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------------------------------------------------------------------*/ main() { int i; for( i=0 ; i<10 ; i++ )
{ printf("\nmerhaba... i= %d",i); sleep(100); } } /*----------------------------------------------------------------------------------------------------------------------------------------------------*/ Programı derleyebilmek için gerekli komut satırı root# /home/cem/ts7200/usr/local/opt/crosstool/arm-linux/gcc-3.3.4-glibc-2.3.2/bin/arm-linux-gcc main main.c Derlenmiş programın çalıştırılması ve çıktıların oluşması root#./main Merhaba... i= 0 Merhaba... i= 1 Merhaba... i= 2 Merhaba... i= 3 Merhaba... i= 4 Merhaba... i= 5 Merhaba... i= 6 Merhaba... i= 7 Merhaba... i= 8 Merhaba... i= 9 Gerçekleştirilecek sistem seri port ve Ethernet ara yüzlerine ihtiyaç duymaktadır. Seri port üzerinden alınan veriler IP üzerinden Ethernet portu kullanılarak belirlenen hedefe gönderilecektir. Şekil 3 ile gerçekleştirilmek istenen sistemin işleyişi için basit bir gösterim verilmektedir. Sistem sunucu ile haberleşebilmek için istemci modunda çalıştırılacaktır. Şekil 3: Gerçekleştirilmesi düşünülen sistem için temsili gösterim.
Şekil 4: Gerçekleştirilmesi düşünülen haberleşme yapısı 13 Ekim 24 Ekim (2 Hafta) : Gömülü platform üzerinde seri port haberleşmesi uygulamalarının yapılması. Open Serial Port Init Serial Port Read Write Close Serial Port Sekil 5: Seri portun kullanımının sağlanması için yapılması gerekenler Bu çalışmada seri port kullanımı için Linux sisteminin API lerinden faydalanılmıştır. Bu API ler sayesinde kernel seviyesinde donanım yönetimi uygulamalarına girilmesine gerek kalmadan seri port üzerinden haberleşme gerçekleştirilmiştir. Haberleşme çift taraflı olarak da
sağlanabilmektedir ve uygulama içerisinde de çift taraflı olarak kullanımı gerçekleştirilecektir. Yukarıdaki şekilde seri port haberleşmesi için yazılımsal basamaklar gösterilmektedir. Ek-1 de seri port kullanımı için gerekli olan aşamalar verilmekte ve detayları kod satırlarının yanına yazılmaktadır. 27 Ekim 07 Kasım (2 Hafta) : Gömülü platform üzerinde ethernet haberleşmesi uygulamalarının yapılması. Bu çalışmada ethernet portunun kullanımı için Linux sisteminin API lerinden faydalanılmıştır. Bu API ler sayesinde kernel seviyesinde donanım yönetimi uygulamalarına girilmesine gerek kalmadan ethernet üzerinden full dublex haberleşme gerçekleştirilmiştir. Haberleşme çift taraflı olarak da sağlanabilmektedir ve uygulama içerisinde de çift taraflı olarak kullanımı gerçekleştirilecektir. Ek-2 de ethernet kullanımı için gerekli olan aşamalar verilmekte ve detayları kod satırlarının yanına yazılmaktadır. Open Ethernet Port Read Write Close Ethernet Port Sekil 6: Ethernet kullanımının sağlanması için yapılması gerekenler 10 Kasım 14 Kasım (1 Hafta) : Çok katmanlı yazılım mimarisinin incelenmesi, multithreading uygulaması yapılması. Gerçek zamanlı uygulamalar çoğu zaman aynı anda birden çok işin takip edilmesini gerektirebilmektedir. İşlemcili sistemlerde paralel bir işlem yapılması ise mimarinin getirmiş olduğu kısıtlar nedeniyle mümkün değildir. Ancak çok katmanlı programlama sayesinde iş
birimleri küçük iş parçacıklarına bölünerek sırası ile yapılmakta, böylece bir derece istekleri paralel olarak gerçekleştirilmesi sağlanabilmektedir. Fakat iş birimlerinin toplam iş süresi değişmemektedir. Ek-3 te TS-7200 platformu üzerinde çok katmanlı çalışmayı gerçekleyen kod blokları verilmektedir. Aşağıda bir multithread uygulaması için kabaca blok gösterim verilmektedir. Görüldüğü gibi iş parçacıkları farklı bölümlere ayrılarak küçük parçacıklar halinde işlenmekte ve bu şekilde sanki eşzamanlı bir işlem gerçekleştirilmektedir. Sekil 7: multithreading icin katmalardaki is paketleri Aşağıdaki şekilde bir multihread uygulamasında threadler için yapılabilecek işlemler ve bu threadler arasındaki durum değişimi için gösterim verilmektedir. Bir thread oluşturulmakta, çalıştırılmakta, gerektiğinde durdurulmakta ve işlemleri bittiğinde ise sonlandırılmaktadır. Sekil 8: multithreading uygulamasında threadlerin durumu
24 Kasım 5 Aralik (2 Hafta) : Seri port ve Ethernet haberleşmesi uygulamalarının tümleştirilmesi. Multithreading ile uygulanması. Daha önceki çalışmalarda da belirtildiği üzere gerçek zamanlı uygulamalarda çok katmanlı yazılım mimarisinin kullanılması çoğu zaman bir gerekliliktir. Bu bölümde daha önce yapısı hazırlanan çok katmanlı yazılım için her bir katmanın fonksiyonel işlevleri tamamlanacaktır. Yazılım içerisinde toplam üç farklı katman kullanılarak seri port ve ethernet giriş-çıkış işlemleri yapılmaktadır. Üçünücü katmanda ise yazılımı genel özellikleri itibari ile yöneten ve yönlendiren ana katman bulunmaktadır.. Ek-4 te TS-7200 platformu üzerinde çok katmanlı çalışmayı gerçekleyen kod blokları ve seri-ethernet giriş-cıkış işlemlerini gerçekleştiren kod blokları verilmektedir. 08 Aralik 19 Aralik (2 Hafta) : PC tabanlı arayüz tasarlanması. Sekil 9: HyperTerminal programı için ayarların yapıldığı pencere. Bu çalışmada uygulamanın çalışabilirliğinin sağlanması amacı ile ethernet üzerinden akan verilerin yakalanması icin PC tabanlı bir Graphical User Interface(GUI) kullanılmıştır. Yazılımın tüm geliştirme aşaması Microsoft firmasının geliştirmiş olduğu Visual Studio IDE(Integrated Development Environment) si üzerinde gerçeklenmiştir. IDE genel anlam
itibari ile kullanıcılara tümleşik bir geliştirme ortamı sunan ve kullanıcıların o dil ile geliştirme yaparken kullanabileceği her şeyi onlara sunan yapılara verilen bir isimdir. Seri port ile ilgili giriş-çıkış işlemleri için ise Windows OS ile birlikte varsayılan olarak gelen HyperTerminal yazılımından faydalanılmıştır. HyperTerminal Seri port acma, kapama; seri porta veri yazma ve okuma işlemlerinin kolaylıkla yapılması için sıklıkla kullanılmaktadır. Aşağıda HyperTerminal için ekran görüntüsü verilmektedir. Yukarıdaki şekilde geliştirilen GUI için örnek görüntü verilmektedir. Sistem mimarisi ve yazılım mimarisi gereği gömülü sistem tarafındaki ethernet soketi istemci olarak uzak makineye bağlanmakta ve ilgili post üzerine sorgu yapabilmektedir. PC GUI ise sunucu görevini yerine getirerek belirlenen bir portu dinlemekte ve o port üzerine gelen istemci kayıtlarını kabul etmektedir. Sekil 10: C# ile geliştirilen GUI
Sekil 11: C# ile geliştirilen GUI Yukarıdaki şekilde Ethernet üzerinden gönderilen verinin seri porta ulaşması ve hyper terminal ile görüntülenmesi verilmektedir. Aşağıdaki şekilde ise telnet ile gömülü sisteme bağlanılması sonucu hedef programın çalıştırılması ve çalışan program gösterilmektedir. Sekil 12: C# ile geliştirilen GUI