ts7200 platformu Üzerİnde...
TRANSCRIPT
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ı. Açıklama: 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.
Şekil 1: TS-7200 platformu ve çevre birimleri
Ethernet
USB
Seri Port
Seri LCD DIO
CPU
PC/104
DC
Compact Flash
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ı. Açıklama:
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
Open Serial Port
Init Serial Port
Read
Write
Close Serial Port
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ı. Açıklama: 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.
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ı. Açıklama: 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ş
Open Ethernet Port
Read
Write
Close Ethernet Port
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ı. Açıklama: 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ı. Açıklama:
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