• Sonuç bulunamadı

File

System

Java Virtual Machine

G

ra

p

h

ic

L

ib

ra

ry

Application Layer

RTOS Middleware

D

S

P

CLDC 1.1 MIDP 2.0

KNI Custom Profile

Im

a

g

e

P

ro

c

e

s

s

i

g

L

ib

ra

ry

V

id

e

o

P

ro

c

e

s

s

i

g

L

ib

ra

ry

* y * n * n

C

o

n

tr

o

l

L

ib

ra

ry

L

ib

ra

r

Bluetooth

Stack

USB

Stack

IrDA

Stack

*

*

IP

v

4

FAT12 FAT16 FAT32

*

Pl

a

tf

o

rm

I

ndepende

nt

Pl

at

fo

rm

D

e

pe

ndent

*

IP

v

6

ùekil 1: Oluúturulan iúletim sisteminin blok diyagramı

Tayfun M. Karan, Yaúar Becerikli, Tunç TuralÕ

Not:* ile iúaretli çalıúmalar halen devam etmektedir.

4.2. Çekirdek

øúletim sisteminin geliútirilme çalıúmaları 2004 yılında,

“geliútirilen gömülü sistemler için standart bir yapı” ortaya

çıkartmak için baúlatılmıútır. Bugün gelindi÷i nokta ile sadece geliútirilen sistemler için de÷il, üçüncü úahıslar tarafından da tasarlanan baúka gömülü sistemlerde de kullanılabilir haldedir. Çalıúmalar sürdürülürken literatürdeki yüzlerce makale ve çalıúma incelenmiú, bu çalıúmaların artıları dikkate alınıp eksileri göz arda edilmiútir. Çalıúmanın baúladı÷ı günden bu güne kadar gösterdi÷i geliúme ve ilerleme dikkate de÷erdir.

Bir gerçek zamanlı iúletim sistemi tasarlamaya karar verirken önce çalıúılması planlanan donanım bileúenleri tespit edilmelidir. Buradaki donanım bileúeni aslında çalıúılacak mikroiúlemci/mikrodenetleyici ailesidir. Bunun nedeni çoklu görev yetene÷ine sahip bir iúletim sistemi için en önemli kısmın, görev yönetimi ve görev seçimi olmasıdır. Bu özellik bir takım standart yapıları desteklemek zorundadır. Bunun için kullanılacak mikroiúlemci belirlenip tüm özellikleri incelenmelidir.

ølk olarak çalıúmamız Renesas[10] M16C ailesi için baúlatılmıútır. Uzun ve zahmetli bir emekleme döneminden sonra yeni do÷an bu yapının ilk versiyonu çeúitli gömülü sistemlerde kullanılarak test edilmiútir. Sonuç oldukça iyidir. Yayınlanan bir bildiri[5] ile bu ilk versiyonun özelliklerinden bahsedilmiútir. Çalıúmalar tüm hızıyla sürdürülerek M32C ailesi içinde gerçekleme tamamlanmıútır. Ardından ARM9 [24] için olan çalıúmalar baúlamıú ve tamamlanmıútır. ARM9 için geliútirilen iúletim sistemini performansı oldukça tatmin edicidir. Bu geliúim sürecinde, görev seçim süresi oldukça kısaltılmıú, standart servis ça÷rıları geliútirilmiú, donanım soyut katmanı ile aygıt ara birimi sisteme eklenmiútir. Bu özellikler taúınabilirli÷i arttırarak di÷er mikroiúlemci aileleri için, ürün geliútirme sürecinin kısalmasına neden olacak etkiyi sisteme sa÷lamıútır.

Hazırlanan gerçek zamanlı iúletim sistemi çoklu görev özelli÷ine sahiptir. Yani sisteme eklenen görevler (task) önceliklerine bakılarak görev yöneticisi tarafından belli bir sıra ile iúletilir. øúletim sistemi Preemtive-Priority Based anahtarlamayı içerir. Yani sistemde en yüksek önceli÷e sahip görev iúletilir daha sonra izin verilen düúük öncelikli göreve hizmet edilir. Eúit önceli÷e sahip görevlerde ise Round Robin anahtarlama yöntemi kullanılır. Burada her bir görev önceden belirlenmiú olan zaman dilimi kadar çalıúır ve süresi dolunca bir sonraki göreve yerini bırakır.øúletim sisteminin bu görev yönetim özellikleri, gerçek zamanlı uygulamalar için elveriúli bir platform sunmaktadır.

Bunun yanında görevlerin birbirleri olan iletiúimleri ve senkronizasyon için standart servislerden olan Binary ve

Counting Semaphore, Mutex, Event ve Messaging

kullanıcıların hizmetine sunulmuútur. Ayrıca kullanıcı tarafından istenildi÷i zaman kullanılabilen tetiklenebilme özelli÷ine sahip zamanlayıcılar oldukça faydalıdır. Sistem

çok kritik zamanlamalar için bir de kritik sistem zamanlayıcısına sahiptir.

4.3. Donanım Soyut Katmanı ve Aygıt Arabirimi

øúletim sistemi, tüm dahili ve harici donanım bileúenlerine donanım soyut katmanı (Hardware Abstraction Layer-HAL) üzerinden eriúir. Bu çok büyük bir kolaylık ve esneklik sa÷lar. Sistem üzerinden yeni bir donanıma eriúmek gerekirse sadece HAL katmanına, eriúilecek olan donanım için hizmet fonksiyonları eklemek yeterli olacaktır. HAL gerçekte aygıt arabirimine (Device Layer) hizmet verir. Yani donanım bileúenlerine eriúim aslında aygıt arabirimi üzerinden olur. Aygıt arabirimi arka planda HAL’ı kullanır. Bu durum üçüncüúahıslar tarafından yazılmıú aygıt sürücülerini iúletim sistemi içerisinde kolaylıkla kullanmamızı sa÷lar.

4.4. Dosya sistemi

øúletim sistemleri için dosya sistemi oldukça önemli ve gereklidir. Dosya sistemi için açık kaynak “embedded file

system library” [20] kullanılıp test edilmiútir. Gerekli görüldü÷ü taktirde dosya sisteminin yeniden ele alınıp kodlanması planlanmaktadır. Kullanılan dosya sistemi kütüphanesi FAT12, FAT16 ve FAT32 yi desteklemektedir. Saklama ortamı olarak da SD hafıza kartı kullanılmıútır. Bu donanım bileúeni için gerekli olan aygıt sürücüleri ise iúletim sistemine dahil edilmiútir.

4.5. A÷ Katmanı

øúletim sistemini a÷ katmanı için uIP [21] açık kaynak protokol yı÷ınını kullanmaktadır. Gerekli olan tüm düzeltme ve çevirim iúlemleri gerçekleútirilip WEB tabanlı kontrol uygulamalarında kullanılmıútır. ùu an lwIP [22] protokol yı÷ının iúletim sistemine uyumlu hale getirilmesi ile u÷raúılmaktadır. Bu yı÷ın uIP’ye göre daha geliúmiú ve daha fazla kaynak tüketen bir yapıya sahiptir.

4.6. Yardımcı Kütüphane Fonksiyonları

øúletim sistemi içerisine bir takım yardımcı sistem ça÷rıları ve aygıt sürücüleri eklenmiútir. Bu ça÷rılar sayesinde metin ve grafik ekran kullanımı, kontrol uygulamalarında PID, Self-Tune, Bulanık Denetleyici kullanımı mümkün kılınmıútır. Sinyal iúleme, görüntü iúleme, video iúleme yardımcı fonksiyonlarının, iúletim sistemi içerisine gömülme çalıúmaları devam etmektedir.

4.7. JavaTM Deste÷i

øúletim sistemimizin en önemli özelliklerinden biridir. Java uygulamalarının bir sistem üzerinde çalıútırılabilmesi için sistemin Java Sanal Makinesine sahip olması gerekir. Sanal makinenin tasarlanması ve kodlanması çok zorlu ve zahmetli bir iútir. Bir Java sanal makinesi için sahip olunması gereken en önemli özellik, herhangi bir ortamda yazılan Java uygulamalarının sorunsuz olarak çalıútırmasının sa÷lanmasıdır. Bu konudaki araútırmalar ve incelemeler do÷rultusunda Sun MicroSystems’in Java Micro Edition 2.0

Java Destekli Gerçek ZamanlÕ øúletim Sistemi ve Bir Uygulama

Connected Limited Device Configuration [23] ile birlikte gelen Java sanal makine gerçeklemesinin kullanılmasına karar verilmiútir. Sun MicroSystems Java2ME Hotspot adı altında ticari olarak geliútirilen bir sanal makinenin satıúını da yapmaktadır. Bunun yanında CLDC 1.1 referans gerçeklemesini açık kaynaklı olarak yayınlamaktadır. Geliútirdi÷imiz iúletim sistemi için bu implementasyonu kullanarak sistemin Java uygulamalarını da çalıútırabilmesini sa÷lamıú olduk.

ùekil 2. NetBeans ile yazılan Java uygulaması örne÷i

4.8. Uygulama Örne÷i

Uygulama olarak basit bir giriú çıkıú iúlemini gerçekleútiren, ekrana günün tarihini ve saatini yazan basit bir program Java ile yazılmıútır. Bu örnek sadece Java dilinin kullanımının di÷er iúletim sistemlerindeki kullanımından herhangi bir farkı olup olmadı÷ını göstermek için seçilmiútir.

public static void main(String[] args) { new JTest(); GPIO.setBit(GPIO.PORT9,0x20,1); System.out.clear(); System.out.print("Hello world..."); OS.Delay(2000); System.out.clear(); System.out.print("This is JavaME"); OS.Delay(2000); GPIO.setBit(GPIO.PORT9,0x20,0); while (true) { if (updateTime()) {

Calendar cal = Calendar.getInstance(); cal.setTime(getDate()); int h = cal.get(Calendar.HOUR_OF_DAY); int mn = cal.get(Calendar.MINUTE); int s = cal.get(Calendar.SECOND); int d = cal.get(Calendar.DATE); int m = cal.get(Calendar.MONTH); int y = cal.get(Calendar.YEAR); //System.out.clear(); System.out.gotoxy(1,1); System.out.print("Date>"+d+"/"+m+"/"+y); System.out.gotoxy(1,2); System.out.print("Time>"+h+":"+mn+":"+s); }//if GPIO.setOutput(GPIO.PORT3,0xFE); OS.Delay(100); GPIO.setOutput(GPIO.PORT3,0xFD); OS.Delay(100); GPIO.setOutput(GPIO.PORT3,0xFB); OS.Delay(100); GPIO.setOutput(GPIO.PORT3,0xF7); OS.Delay(100); }//while }//main

Burada Java uygulamasıùekil.3 deki örnek geliútirme kitinin üzerine takılan SD hafıza kartı içerisine yüklenmiútir. Tüm donanım eriúim fonksiyonları iúletim sistemi tarafından sa÷lanır. Uygulamanın hafıza kartından belle÷e yüklenmesi Java sanal makinesi tarafından gerçekleútirilir. Java tamamıyla nesne tabanlı bir dil oldu÷u için sanal makinenin bellek yönetimi çok önemli ve kritiktir. Sanal makine yazılan Java uygulamaları için belle÷i yönetirken, iúletim sisteminin bellek yönetim ünitesi ise farklıdır. øúletim sistemi kendi içerisindeki görevlerin (task) kullandı÷ı bellek alanlarını korumak ve gözetmek zorundadır.

Örnek uygulamada tarih ve saat bilgisi, ekrana bilgi yazma ve giriú çıkıú uçlarına eriúimler görülmektedir. Bu eriúimler için Java sanal makinesi iúletim sisteminin sistem ça÷rılarını kullanır. Fakat bu sistem ça÷rılarının sanal makineye tanıtılması gerekir. Sun MicroSystems bu iú için Java Native

Interface diye bir standart geliútirmiútir. Java MicroEdition için bu standart K Native Interface olarak de÷iútirilmiútir. Bu arabirim üzerinden sanal makine iúletim sistemi servislerine kolaylıkla eriúir.

Örnek uygulamadaki ekrana bilgi gönderme komutu bizim gömülü sistemimizde, karakter LCD’ye bu bilgiyi gönderir. Tarih ve saat bilgisi de gömülü sistem üzerinde bulunan gerçek zamanlı saat bileúeninden bu bilgiyi alır. Di÷er arabirim fonksiyonları da bekleme ve giriú çıkıú iúlemlerini gerçekleútirmek için kullanılır.

Burada gömülü sistem üzerindeki hangi bileúenlere Java üzerinden eriúilece÷i,tamamıyla iúletim sistemi servis ça÷rıları ile sınırlıdır. Bu durum her türlü sensörden bilginin alının iúlenmesi ve sonuçların tekrar sisteme bildirilmesi gibi iúlevleri Java ile yapabilmemizi olanaklı kılar. Bu kullanıcının donanım bileúenlerinin ayrıntıları ile ilgilenmeden sadece kendi uygulaması ile ilgilenmesini olanaklı kılar. Bu sebepten uygulama geliútirme son derece hızlı ve düúük seviyeli ara yüzden ba÷ımsızdır.

øúletim sistemi uzun test aúamalarından geçirildi÷inden kullanıcı yazılım hatalarından ba÷ımsız sadece kendi uygulaması ile ilgilenir. Bu özellik uygulama yazılımının güvenilirli÷ini arttırmaktadır.

ùekil 3. Deneme kartı ve çalıúan Java uygulaması

Tayfun M. Karan, Yaúar Becerikli, Tunç TuralÕ

5. Sonuçlar

Gerçekleútirilen iúletim sistemi temelde endüstride ve son kullanıcı cihazlarında kullanılmak için tasarlanmıútır. Fakat taúınabilir ve ölçeklenebilir olması itibari ile son zamanlarda önemli yer tutan akıllı sensör a÷larında da uygulanmıútır [15-19]. Firmamızın gerçekleútirdi÷i birçok yurt içi ve yurt dıúı projede kullanılan standart üretimimiz olan PLC ve HMI ürünlerinde çalıúan tüm uygulamalar, bu iúletim sistemi üzerinde oluúturulmuútur. Bunun yanında WEB tabanlı ölçme ve kontrol uygulamalarında da baúarıyla kullanılan bu iúletim sistemi, taúınabilir ve daha geniú kitlelere hitap edebilir özelli÷ine sahip baúka gömülü sistemlerde de kullanılabilir hale gelmiútir. Bunun yanında ölçme ve kontrol uygulamalarında spesifik iúlevlerin, iúletim sistemi ça÷rılarının yardımıyla do÷rudan Java uygulamaları ile yazılabilmesi, büyük bir esneklik ve zaman tasarrufu sa÷lar. øúletim sistemi uygulama geliútirme aúamasında kullanıcı için úu sonuçları sa÷lar;

x Hızlı geliútirme süreci x Taúınabilir mimari x Güvenilir kod

6. Kaynakça

[1] A..M.K.Cheng, “REAL-TIME SYSTEMS Scheduling,

Analysis, and Verification”, A John Wiley & Sons, 2002

[2] Q.Li, C.Yao, “Real-Time Concepts for Embedded

Systems”, CMP Books, 2003

[3] T.M.Karan,“Bulanık Mantık Kontrollü DC Motor Sürücü”, Kocaeli Üniversitesi Bilgisayar Müh. Bölümü,

Bitirme çalıúması,2005.

[4] Y.Becerikli, T.M.Karan,“Bulanık Mantık Kontrollü DC

Motor Sürücü”, TOK’05,Türkiye Ulusal Otomatik

Kontrol Kurultayı, 2005, østanbul

[5] T.M.Karan,Y.Becerikli,T.M.Turalı,“Kontrol Sistemleri

için Gerçek Zamanlı Çoklu Görev øúletim Sistemi”,TOK’06,Türkiye Ulusal Otomatik Kontrol

Kurultayı,2006, Ankara

[6] K.H.Kim(Kane),”Middleware of Real-Time Object Based

Fault Tolerant Distrubuted Computing Systems”,IEEE

0-7695-1414-6/0., 2001

[7] Portable Operating System Interface(POSIX) - Part 1:System Application Programming Interface (API)[C Language] ISO/IEC 9945-1:1996, IEEE

[8] M. Chen, G. Wei, “Scheduling Algorithm for Real-time

VBR Video Streams Using Weighted Switch Deficit Round Robin”, Proceedings of the 28th Annual IEEE

International Conference on Local Computer Networks (LCN’03)

[9] X. Zhang,L.N. Bhuyan ”Deficit Round-Robin Scheduling

for Input-Queued Switches”, IEEE Journal on selected

areas in communication,vol. 21, no. 4, May 2003 [10] Renesas Microcontroller, http://www.renesas.com

[11] J.Ledin, “Embedded Control Systems in C/C++: An Introduction for Software Developers Using MATLAB”, CMP Books, 2004

[12] M.J.Pont, “Embedded C”,Addison-Wesley, 2002

[13] AVRX Real-Time Multitasking Kernel for the Atmel AVR series of micro controllers,

http://www.barello.net/avrx/index.htm.

[14] J. Labrosse, “MicroC/OS-II: The Real-Time Kernel”, 2nd edition, CMP Books, November 1998.

[15] P. Levis and N. Lee. “Simulating Tinyos Networks”. http://www.cs.berkeley.edu/ pal/research/tossim.html. [16] P. Levis, D. Culler ,“Mate: a Virtual Machine for Tiny

Networked Sensors”, ASPLOS, Oct. 2002.

[17] W. Ye, J. Heidemann, D. Estrin, ”An Energy-Efficient

MAC Protocol for Wireless Sensor Networks”, In

Proceedings INFOCOM, New York, NY, USA, June, 2002.

[18] A. Sheth, B. Shucker, R. Han, ”VLM2: A Very

Lightweight Mobile Multicast System for Wireless Sensor Networks”, IEEE Wireless Communications and

Networking Conference (WCNC) 2003, New Orleans, Louisiana.

[19] J. Luo and N.K. Jha, ”Battery-Aware Static Scheduling

for Distributed Real Time Embedded Systems”, Proc.

38th Design Automation Conference, ACM Press, 2001, pp. 444-449.

[20] Embedded File System Library, http://efsl.be/

[21] uIP TCP/IP Stack for Embedded Microcontrollers,

http://www.sics.se/~adam/uip/

[22] lwIP - A Lightweight TCP/IP stack,

http://savannah.nongnu.org/projects/lwip/

[23] Sun MicroSystems, Connected Limited Device Configuration Version 1.1 Reference Implementation,

http://www.sun.com/software/communitysource/j2me/cld c/download.xml

[24] Advanced Risc Machines, www.arm.com

Java Destekli Gerçek ZamanlÕ øúletim Sistemi ve Bir Uygulama