gömülü sistemlerde yazılım geliştirme
TRANSCRIPT
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
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
İ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
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
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
İş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
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
8
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
Platformlar
ARM ( Nxp, Texas Instrument, .. )
MIPS
PowerPC ( Apple, IBM, Motorola )
X86 ( intel )
PIC ( Microchip)
8051 (intel )
Atmel AVR
FPGA ( Xilinx , Altera ..)
10
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
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
13
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
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
Niçin Tümdevre?
Daha az kompenent
Daha az maliyet
Daha az alan
Daha az güç tüketimi
16
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
TümDevre (devam)
FPGA (Field Programmable Gate Array )
Bu sistemlerde CPU dahil, tüm logic
birimler FPGA üzerinde gerçeklenir.
18
19
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
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
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
23
Standartlar
Gömülü sistem tasarımında, standartlar
bilgisi çok önemlidir. Standartlar
bilinmeden çıkılan yol çıkmaz yoldur.
24
Standartlar (devam)
• TCP/IP (Wired / Wireless)
• TAPI, RAS
• Bluetooth
• USB, Firewire
• Serial, Parallel
• ATAPI, SATA
• CompactFlash, PCMCIA, SDIO
• vs..
25
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
Host ( Ana makine / PC )
Target ( Hedef makine / Board )
Ana makinede hedefin anlayacağı makine
kodu oluşturulur, ve hedef makineye yazılır
27
Yazılım dillerinin gelişimi..
28
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
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
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
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
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
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
35
C source code
36
C/C++ header file
37
38
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
40
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
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
LADDER
43
FBD
44
Interpreter
45
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
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
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
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
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
51
52
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
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
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
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
En çok kullanılan RTOSes
Ecos (RedHat’s GNU)
FreeRTOS ( GNU & Ticari Lisans)
VxWorks ( Askeri projelerde tercih ediliyor)
LynxOS
QNX
RTLinux
Windows CE
OSE
Embedded XP
57