ts7200 platformu Üzerİnde...

10
TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

Upload: others

Post on 29-Oct-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

Page 2: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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

Page 3: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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++ )

Page 4: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

{ 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.

Page 5: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

Ş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

Page 6: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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

Page 7: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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

Page 8: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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

Page 9: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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

Page 10: TS7200 PLATFORMU ÜZERİNDE SERİcemkefeli.com/file.axd?file=2009/2/Serial2Ethernet+Converter.pdf · Sistem için yazılım geliştirilebilmek amacıyla gömülü sistem üzerindeki

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