gömülü sistemlerde yazılım geliştirme

57
Gömülü Sistem Nedir? Gömülü bir sistem kişisel PC’ lere göre HW ve SW bakımından çok daha sınırlı yapıda olan sistemlerdir. Kendilerine adanmış bir fonksiyonu yerine getirirler. 1

Upload: rahman-usta

Post on 20-Jun-2015

5.533 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Gömülü sistemlerde yazılım geliştirme

Gömülü Sistem Nedir?

Gömülü bir sistem kişisel PC’ lere göre HW

ve SW bakımından çok daha sınırlı yapıda

olan sistemlerdir.

Kendilerine adanmış bir fonksiyonu yerine

getirirler.

1

Page 2: Gömülü sistemlerde yazılım geliştirme

Kayda değer ilk gömülü sistem MIT

Instrumentation Laboratory ‘da Charles

Stark Draper tarafından geliştirilen

Apollo Guidance Computer olmuştur.

2

Page 3: Gömülü sistemlerde yazılım geliştirme

İlk Ticari Üretim

İlk kitlesel gömülü sistem üretimi 1961

yılında yapılmıştır. Bundan sonra

birimlerin fiyatları 1000 $

Seviyesinden 3 $’ a düşmüştür.

Bu sayede teknolojik ürünler çok hızlı

bir şekilde uculamıştır.

3

Page 4: Gömülü sistemlerde yazılım geliştirme

Gömülü Sistemlerde Güvenlik

İddialı bir söylem olmakla beraber;

Gömülü sistemlerin %100 güvenli,

hata yapmayan birimler oldukları ifade

edilebilir.

4

Page 5: Gömülü sistemlerde yazılım geliştirme

Gömülü Sistem Üretimi

Dünyada üretilen mikroişlemcilerin %

98’inin gömülü sistemlerde kullanıldığı

ifade edilmektedir.

Ancak % 2’lik bir kısım Bilgisayar

üretiminde kullanılmaktadır.

5

Page 6: Gömülü sistemlerde yazılım geliştirme

İşlemci Üretim Miktarı

Gömülü sistem gereksiniminde her yıl 200 milyon adet ekstra artışın olduğu İleri sürülmektedir.

Dünyada 1 yılda ortalama 5-6 Milyar adet işlemci üretimi yapıldığı ifade edilmektedir.

Her işlemci için ortalama 10 $’lık bir fiyat öngörülürse, bunun 50-60 Milyar $’lık bir büyüklüğü ifade ettiği görülmektedir.

6

Page 7: Gömülü sistemlerde yazılım geliştirme

Gömülü Sistem Örnekleri

Atm (Automatic Tax Machines)

Cep Telefonları

Network Ekipmanları

Motor Denetleyiciler

Abs Fren Sistemleri

Ev Otomasyon Ürünleri

Hava Savunma Sistemleri

Tıbbi Ekipmanlar

Ölçüm Sistemleri gibi.

7

Page 8: Gömülü sistemlerde yazılım geliştirme

8

Page 9: Gömülü sistemlerde yazılım geliştirme

Gömülü sistemin çekirdeğini bir

mikroişlemci yada bir mikrokontrolör

oluşturur.

Genel amaçlı PC’ lerde kullanıcılar

uygulama yazılımı çalıştırabilirler. Buna

karşın gömülü sistem yazılımları

genelde sabittirler. Rom ve Flash

memory’ de saklanırlar. Firmware adıyla

anılırlar.

9

Page 11: Gömülü sistemlerde yazılım geliştirme

Tercih Edilenler?

Başlangıç uygulamalarında ve eğitim

öğretimde, ucuzluğu ve uygulama

çokluğu nedeniyle PIC çok tercih

edilmektedir.

Fakat; tutarsızlığı ve kalitesizliği

nedeniyle daha çok amatör projelerde

kullanılırlar.

11

Page 12: Gömülü sistemlerde yazılım geliştirme

Tercih Edilenler? (devam)

ARM mikroişlemciler, gömülü sistem

piyasasının %90’ına hakimdir.

Özellikle cep telefonu, tablet pc,

netbook, mp3 player gibi ürünlerde

tercih edilmektedir.

RISC mimarili bir mikroişlemcidir.

Cep telefonlarında, daha çok OMAP

Arm işlemci kullanılır.

12

Page 13: Gömülü sistemlerde yazılım geliştirme

13

Page 14: Gömülü sistemlerde yazılım geliştirme

Tercih Edilenler? (devam)

Bu işlemciler diğer ARM işlemcilerden

farklı olarak, birde DSP(Digital Signal

Processing) modül içerirler.

Bu sayede, Video, Ses işlemleri ARM

işlemciye daha etkin kazandırılmış olur.

Bugün Microsoft ARM işlemciler içinde

bir işletim sistemi üreteceğini duyurdu.

14

Page 15: Gömülü sistemlerde yazılım geliştirme

TümDevre

Büyük hacimli gömülü sistem

tasarımında, tümleşik devre tasarımına

gidilmektedir.

Mikroişlemci ve Mikrokontrolör’den farklı

olarak yalnızca bir özel amaç için

üretilmiş donanım ve yazılım içeren

bütün bir entegre’dir.

15

Page 16: Gömülü sistemlerde yazılım geliştirme

Niçin Tümdevre?

Daha az kompenent

Daha az maliyet

Daha az alan

Daha az güç tüketimi

16

Page 17: Gömülü sistemlerde yazılım geliştirme

TümDevre (devam)

ASIC (application-specific integrated circuit)

Örnek olarak bir devre için adc ve adc ile

birlikte bir program kullanılıyor olsun eğer

satış adedi çok yüksek ise tasarlanacak bir

entegre ile daha uygun fiyatlara mal edilebilir,

işte bu tasarlanan özel entegre devrelere

ASIC denir.

17

Page 18: Gömülü sistemlerde yazılım geliştirme

TümDevre (devam)

FPGA (Field Programmable Gate Array )

Bu sistemlerde CPU dahil, tüm logic

birimler FPGA üzerinde gerçeklenir.

18

Page 19: Gömülü sistemlerde yazılım geliştirme

19

Page 20: Gömülü sistemlerde yazılım geliştirme

FPGA (devam)

FPGA gerçeklemek için, HDL (Hardware

Definition Language Kullanılır.

VHDL ( Very-High Hardware Definition

Language)

Verilog ( Verilog HDL )

VHDL batı toplumlarında, Verilog ise

daha çok uzakdoğu’da tercih

edilmekteler.

20

Page 21: Gömülü sistemlerde yazılım geliştirme

FPGA’nın avantajları

Donanım sınırlılıklarını ortadan kaldırır.

Hem görsel hemde kodsal tasarıma sağlar.

ASIC (Uygulamaya Özel Tümleşik Devre) tasarlamak ve tasarım sonrası modifiyeetmek güçtür. Bu yüzden ASIC tasarlamada ve ASIC oluşturmadan direkt olarak kullanılırlar.

Donanım kaynaklarının yettiği ölçüde, gerçek anlamda paralel processing’e olanak tanır.

21

Page 22: Gömülü sistemlerde yazılım geliştirme

FPGA’nın dezavantajları

Bilgisayar ortamında yazılan programın

derlenmesi çok fazla vakit alır.

Bu yüzden güçlü bir sistem gereklidir.

Aynı işlevi gören bir ASIC’e göre daha

fazla alan kaplar.

22

Page 23: Gömülü sistemlerde yazılım geliştirme

23

Page 24: Gömülü sistemlerde yazılım geliştirme

Standartlar

Gömülü sistem tasarımında, standartlar

bilgisi çok önemlidir. Standartlar

bilinmeden çıkılan yol çıkmaz yoldur.

24

Page 25: Gömülü sistemlerde yazılım geliştirme

Standartlar (devam)

• TCP/IP (Wired / Wireless)

• TAPI, RAS

• Bluetooth

• USB, Firewire

• Serial, Parallel

• ATAPI, SATA

• CompactFlash, PCMCIA, SDIO

• vs..

25

Page 26: Gömülü sistemlerde yazılım geliştirme

Cross-Compiler (Çapraz Derleyici )

Kavramı

Bilgisayar yazılımlarında, derleme ve koşturma aynı makinede gerçekleşebilir.

Gömülü sistemlerin kısıtlı donanım kaynaklarından dolayı, derleme kısmı, daha güçlü donanım ve yazılım kaynağı barındıran kişisel bilgisayarlarda yapılır.

26

Page 27: Gömülü sistemlerde yazılım geliştirme

Host ( Ana makine / PC )

Target ( Hedef makine / Board )

Ana makinede hedefin anlayacağı makine

kodu oluşturulur, ve hedef makineye yazılır

27

Page 28: Gömülü sistemlerde yazılım geliştirme

Yazılım dillerinin gelişimi..

28

Page 29: Gömülü sistemlerde yazılım geliştirme

Assembler, Compiler ve Interpreter

Assemler : Asm kodunu makine diline

çevirir.

Compiler ( Derleyici ) : Yüksek seviyeli

bir dilden düşük seviyeli bir dile çeviri

yapar ( Assembly veya Makine Kodu)

Interpreter ( Yorumlayıcı ) : Makine

koduna veya java byte koda çevrilen

programı satır satır işlemcide işletir.

29

Page 30: Gömülü sistemlerde yazılım geliştirme

Makine Kodu

Donanımın anladığı gerçek dildir.

1 ve 0 lardan oluşmaktadır.

Tüm üst programlama dilleri,

nihayetinde mevcut kodu, makine

koduna çevirmek zorundadır.

30

Page 31: Gömülü sistemlerde yazılım geliştirme

Assembly dili

0 ve 1 ler yerine belirli bir söz dizimine

bağlı olarak, kullanıcıya kolaylık

sunması amacı ile geliştirilen bir dildir.

Donanıma bağımlı bir dildir.

Yani bir işlemciye ait assembly dili ile

başka bir işlemciye ait assembly dili

mimari farklılığından dolayı farklı

olmaktadır.

31

Page 32: Gömülü sistemlerde yazılım geliştirme

C dili

İşte bu farklılıkları soyutlamak için, C dili geliştirilmiştir.

Standart bir C kütüphanesi mevcuttur. (C99)

Donanıma bağımlı bir dil değildir.

Yeni bir donanımı desteklemesi isteniyorsa, üretici tarafından o işlemciye ait C kütüphanesi oluşturulur.

Söz dizimi assembly’e göre kat kat iyidir.

32

Page 33: Gömülü sistemlerde yazılım geliştirme

C++

C dilinin modifiye edilmiş halidir.

Aslında C dili çok yetenekli ve yeterli bir dildir fakat nesneye dayalı bir dil değildir.

Tercih sebebi ;

Büyük uygulamalarda modüler kod yapısından dolayı tasarım, geliştirme, test ve bakım aşamalarında kolaylık sağlamasıdır.

33

Page 34: Gömülü sistemlerde yazılım geliştirme

C++ (devam)

Diğer bir tercih sebebi ise;

Security, Exception Handling,

namespace, type-security gibi gelişmiş

yapıları barındırmasıdır.

34

Page 35: Gömülü sistemlerde yazılım geliştirme

35

Page 36: Gömülü sistemlerde yazılım geliştirme

C source code

36

Page 37: Gömülü sistemlerde yazılım geliştirme

C/C++ header file

37

Page 38: Gömülü sistemlerde yazılım geliştirme

38

Page 39: Gömülü sistemlerde yazılım geliştirme

JAVA

C++ gibi nesneye dayalı bir dildir.

JVM (Java Virtual Machine) üzerinde

çalışmaktadır.

Assembly, C ve C++ dillerindeki gibi,

Host makinede exetuable oluşturmak

gerekmez.

Çünkü JVM target içinde bulunur ve

Java Byte kodları otomatik olarak

makine koduna yorumlanır.

39

Page 40: Gömülü sistemlerde yazılım geliştirme

40

Page 41: Gömülü sistemlerde yazılım geliştirme

Script dilleri

Perl, JavaScript, Html

Yüksek seviye dillerin haricinde bu diller

direkt olarak makine koduna çevrilirler.

Daha doğrusu compile edilmeden

işlemcide yorumlanırlar.

41

Page 42: Gömülü sistemlerde yazılım geliştirme

IEC-61131-3 standart dilleri

Ladder diagram (LD) graphical

Function block diagram (FBD) graphical

Structured text (ST) textual

Instruction list (IL) textual

Sequential function chart (SFC)

42

Page 43: Gömülü sistemlerde yazılım geliştirme

LADDER

43

Page 44: Gömülü sistemlerde yazılım geliştirme

FBD

44

Page 45: Gömülü sistemlerde yazılım geliştirme

Interpreter

45

Page 46: Gömülü sistemlerde yazılım geliştirme

Gömülü İşletim Sistemleri

Bir mikroişlemci yada mikrokontrolör

içerisinde bir firmware bulundurur

demiştik.

Daha büyük uygulamalarda ise mevcut

Runtime yetersiz gelebilmektedir.

Bu yüzden donanımın daha etkin ve

kontrol altında kullanılması için Gömülü

İşletim Sistemleri Kullanılmaktadır.

46

Page 47: Gömülü sistemlerde yazılım geliştirme

Gömülü İşletim Sistemleri (devam)

İki özel amacı vardır.

A. Programlanan yazılımın hardware’den

soyutlanması

B. Uygulama yazılımlarına konak

oluşturması.

47

Page 48: Gömülü sistemlerde yazılım geliştirme

Gömülü İşletim Sistemleri (devam)

İşletim sistemi bulunmayan gömülü

sistemlerde uygulama yazılımı ve

Middleware koşturulmaz.

Eğer kullanıcı yazılımı koşturmak

istiyorsak bir konak işletim sistemi

kullanılmalıdır.

48

Page 49: Gömülü sistemlerde yazılım geliştirme

Application Programs

Uygulama yazılımlarına örnek olarak

Cep telefonlarında kullandığımız ve

yüklediğimiz yazılımlar söylenebilir.

Opera mini, Skype, Sözlük gibi..

49

Page 50: Gömülü sistemlerde yazılım geliştirme

Middleware

Bu yazılımlar aslında bir uygulama

yazılım denebilir.

Farkı ise daha çok üreticilerin gömülü

sisteme eklediği ara yazılımlar olmasıdır.

Örneğin JVM bir Middleware’ dir ve bunu

kullanıcı platforma kurmaz. Üretici bunu

zaten kurmuştur.

50

Page 51: Gömülü sistemlerde yazılım geliştirme

51

Page 52: Gömülü sistemlerde yazılım geliştirme

52

Page 53: Gömülü sistemlerde yazılım geliştirme

Gerçek zamanlı sistemler

Gerçek zamanlı sistemler; kendi

fonksiyonlarını, tanımlanan zaman

diliminde yerine getirebilme ve

beklenmedik olaylara cevap verebilme

yeteneğine sahip ortamlardır.

53

Page 54: Gömülü sistemlerde yazılım geliştirme

RTOS ( Real-Time Operating System )

Gerçek zamanlı işletim sistemi ise,

görevler arasında geçiş süresini ve

kesilme sürecini en-kötü şartlarda

görevlere atanan öncelikler ve kesme

karakteristikleri doğrultusunda garanti

eden işletim sistemi türüdür.

54

Page 55: Gömülü sistemlerde yazılım geliştirme

RTOS ( Real-Time Operating System ) (devam)

Çok keskin zaman kısıtlarına sahip olansistemlere (hard real time)

Katı Gerçek Zamanlı İşletim Sistemi bir olaya, hangi şartlar altında olursa olsun belirlenen yanıt verme süresini garanti etmektedir. Bu süre milisaniye yerine mikrosaniye (µs) seviyesindedir.

Daha esnek zaman kısıtlarına sahipolan sistemlere (soft real time)‏sistemler denir.

55

Page 56: Gömülü sistemlerde yazılım geliştirme

RTOS’ özellikleri

Süreç yönetimi (çok görevlilik) (Real-time

scheduling and process management)‏

Süreçler arası iletişim (IPC – interprocess

communication) semafor, kilit, mesaj kutuları

Kaynak yönetimi

Uygulama gereksinimlerine göre büyüyüp

küçülebilme

İyi başarım, daha az bellek kullanımı

değişik donanım platformlarına taşınabilme

56