GÖMÜLÜ SİSTEMLER VE ARM PROGRAMLAMA

GÖMÜLÜ SİSTEMLER VE ARM PROGRAMLAMA

Bu yazımızda sizlere gömülü sistemleri tanıtmaya çalışacağız. İlk olarak gömülü sistemlerin ne olduğu,kullanım alanları ve avantajları  hakkında bilgi vermeye çalışacağız. Ayrıca ARM ailesi, programlama esnasında kullanılan temel register(kaydediciler) ve  TM4C1294XL kartı hakkında giriş bilgisi verilecektir. İlerleyen zamanlarda ise artık projeler üzerinden sizlere anlatım yapmaya devam edeceğiz . Uygulamalarımızda TM4Cx , STM32F4 , ARDUİNO ve PIC serisini kullanarak göstereceğiz bunun yanında  projeleriniz de  kullanabileceğiniz elektronik bilgileri de sizlere sunacağız. Ayrıca isterseniz youtube kanalımızdan da bizlere takip edebilirsiniz kanalımızda TM4Cx serisi uygulamaları ile birlikte anlatılmaktadır burada uygulamalarımızı güncel ve ayrıntılı bir şekilde anlatmaya çalışacağız .

https://www.youtube.com/channel/UCbPGfkBESdiHSCZNdjAC9pQ

GÖMÜLÜ SİSTEMLER NEDİR ?

 Gömülü sistem, bilgisayarın kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Örnek verecek olursak eğer kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir.

Ayrıca şu şekilde de tanımlayabiliriz.Gömülü sistem; bir ana yada alt sistem olarak birden fazla işlevin aynı elektronik kart üzerinde entegre hale getirilmesi ile bir mekanik hareketi gerçekleştiren sistemler biçiminde tanımlanabilir.

GÖMÜLÜ SİSTEMLER KULLANIM ALANLARI 

Gömülü sistemler artık her tarafımızı sarmış durumdadır. Dünyadaki devasa firmalar gömülü sistemlere her türlü uygulamalarını entegre etmeye çalışmaktadır. Bir gömülü sistem mekanik, elektriksel ve kimyasal bileşenleri bilgisayarda bir arada buluşturur. Bu bilgisayarlar tek çipli mikrodenetleyecilerdir. Bu mikrodenetleyiciler bilgisayarların beyinleridir. Kullanım alanlarına örnek verecek olursak eğer elektronik ev eşyaları,laboratuvar cihazları, uçaklar, ATM,bilgisayarlar  vs gibi tüm elektronik cihazlar örnek verilebilir.

GÖMÜLÜ İŞLETİM SİSTEMLERİ NELERDİR ?

Özel amaçlı işletim sistemleri bulunmaktadır. Şu şelikde sıralanabilir.

  1. Ecos
  2. freeRTOS
  3. Gömülü Linux
  4. JavaOS
  5. LynxOS
  6. Mobilinux
  7. NucleusRTOS
  8. PalmOS
  9. Prex
  10. VxWorks
  11. 11.Windows XP Embedded

 

ARM Nedir?

Yazımızın başında da dediğimiz gibi uygulamalarımızda TM4Cx ve SM32F4 serilerini de kullanacağımızı söylemiştik. ARM ailesinden  ARM Cortex M4 serisidir . Bu yüzde ARM ile ilgili kısa bilgi vermeye çalışacağız.

ARM; Acorn RISC Machine kelimelerinin kısaltılmasıyla adlandırılmış, 32-bit RISC(Reduced instruction set computing) işlemci mimarisidir. Yüksek hızlara çıkabilmesinden, 32-bit mimari yapısından, çok az enerji tükettiğinden ve zengin çevresel donanım imkanlarından dolayı ARM çekirdekli bir çok işlemci, birçok uygulamada tercih edilmektedir.

ARM tek başına bir işlemci özelliği taşımaz. Birçok firma, ARM firmasından bu işlemci mimarisini satın alıp, mimarinin özelliklerini kendi kültürlerine göre şekillendirerek, kendi isimleriyle piyasaya sunmaktadır. ST(STMicroelectronics), TI(Texas Instruments), Philips, ATMEL gibi daha birçok firma işlemcilerini, ARM mimarisi kullanarak üretirler. Ancak mimari içindeki özellikleri her firma kendine göre şekillendirdiği için, her markanın kendine özgü ARM kütüphaneleri bulunmaktadır. Bu yüzden; her ne kadar ARM programlamak temelde C diline dayansa da, çiplerin değişen kütüphaneleri ve özelliklerinden dolayı, programlama da her firmaya göre değişecektir. Örneğin; ST firmasının ürettiği ARM işlemcilerini programlamayı öğrendiğinildiğinde, aynı kütüphane ve özellikleri kullanarak Philips’in ürettiği ARM işlemcilerini programlanamaz. Philips’e geçmek için, üretici firmanın sağladığı kütüphaneleri indirip, kütüphanelerin kullanış şekillerini tekrardan öğrenilmesi gerekmektedir.

ARM mimarisinin tamamı 6 kategoride gruplandırılmıştır: Cortex-A50 Serisi, Cortex-A Serisi, Cortex-R Serisi, Cortex-M Serisi, Klasik ARM İşlemciler, SecurCore İşlemcilerdir.

ARM işlemci ailesi;

Cortex-A50 Serisi

Bu kategorideki işlemciler 32-bit olmasına rağmen 64-bit’lik veri işleyebilme kabiliyetine sahipler. ARMv7 grubundaki işlemcilere oranla daha performanslı çalışan Cortex-50 Serisi, yeni eklenen güç tasarrufu özelliği ile dikkat çekmektedir.

Cortex-A Serisi

Yüksek hız gerektiren uygulamalar için geliştirilmiş bir seridir. Görüntü işleme, yüksek özelliklere sahip işletim sistemleri kullanımı, zorluk derecesi yüksek ve karmaşık hesaplamaları kapsayan uygulamalar gibi performans gerektiren tüm alanlarda bu işlemciler tercih edilir. Telefonlarda, tabletlerde, otomativ sektöründe, bilgisayarlarda, netbook’larda ve bir çok yüksek teknolojiye sahip cihazlarda Cortex-A serisi kullanılır.

Cortex-R Serisi

Gerçek zamanlı çalışan işlemcilerdir. Daha çok teknik cihazlarda kullanılırlar. Yazıcılarda, modemlerde, kameralarda, harddisk sürücülerinde, evde kullanılan elektronik cihazların birçoğunda(mutfak robotları, çamaşır makinaları, buzdolapları, klimalar vs.), otomotiv sektöründe yer alan elektronik cihazların bazılarında, hastanelerdeki tıbbi cihazlarda ve endüstride Cortex-R Serisi işlemciler tercih edilmektedir.

Cortex-M Serisi

Elektronik sanayide hemen hemen birçok alanda Cortex-M serisi tercih edilmektedir. Düşük güç tüketimi, kolay kullanımı ve yüksek performansı ile piyasada bulunan 8 ve 16 bitlik işlemcilere karşı çıkartılmış bir seridir. Düşük maliyetli olmasından dolayı çok fazla tercih edilmektedir.

REGISTER(Kaydediciler)

TM4Cx serisini programlanması hakkında da bilgi vereceğiz ilk önce bazı temel bilgilere ihtiyacımız olacaktır.

Mikroişlemcinin içindeki ikili tabandaki sayıları tutmaya yarayan geçici hafızadır, bu sayılar program kodu ya da veri olabilir. ALU ve FPU bu kayıtlardaki ara ve son değerleri depolanır. İşlenmiş veri, kayıtlardan veri ön belleğe ve sonra da ana hafızaya döner. Bütün ARM işlemcileri 32 bit ve üstü kaydediciler kullanır.

R0-R12 General Purpose Register (GPIO)

Arasında toplam 13 tane genel amaçlı kaydedici vardır.

R13 Stack Pointer(SP)

Hafızadaki herhangi bir hücre adresini üzerinde bulundurur. Herhangi bir dallanma alt programlara gitme ve kesme istekleri anında mikroişlemcinin o andaki bilgilerini dönüş anında kullanmak üzere saklamak gerekir. Bunun içinde geçici olarak yığın göstergecinin RAM üzerinde göstermiş olduğu adresten geriye doğru bir veri yığını oluşturulur. SP ise bu veri yığınının oluşturulacağı adres başlangıcını üzerinde tutar. Yığına son atılan bilgi ilk alınır. Yığının kapasitesine bağlı olarak içi içe dallanmalar yapılabilir. Eğer yığının kapasitesi yetersiz ise yığın taşması (stack overflow) problemi ortaya çıkar.

R14 Link Register(LR)

Dönüş Adresi Kaydedicisi olarak adlandırılır. Programda yapılan dallanmalarda dönüş adresini yedeklemeye yarar. Dallanmadan önce programın kaldığı nokta buraya yedeklenir.

R15 Program Counter(PC)

Program Sayacı olarak adlandırılır. İşletilecek bir sonraki komutun hafızada bulunduğu adresini gösterir. Gerçekleştirilen her okuma işlemden sonar PC otomatik olarak artar.(

Ayrıca özel kaydediciler içinde üç tane durum kaydedicisi vardır. Bunlar;

Application Program Status Register(APSR):Uygulama program durum kaydedicisidir.

Interrupt Program Status Register(IPSR):Kesme program durum kaydedicisidir.

Execution Program Status Register (EPSR):Çalışma program durum kaydedicisidir.Bu üç kaydedici ayrı ayrı değerlendirilebilir veya PSR’de bu kaydedicilerin bileşimi vardır. Dolayısıyla PSR’ye bakılarak işlem yapılabilir.

İnternet üzerinde daha ayrıntılı bir şekilde araştırarak bulabilirsiniz.

TM4C1294XL

Diğer yazılarımızda yavaş TM4Cx serisi ile uygulamalar yaparak anlatmaya devam edeceğiz. Bu yüzden kartın teknik bilgilerini burda verip daha sonra uygulamara giriş yapmaya çalışacağız.

TM4C129XL kiti üzerinde ARM Cortex M4 tabanlı 120 MHz’lik bir mikrodenetleyici (TM4C1294NCPDT) bulunmaktadır. ARM Cortex M4 mimarisi DSP (sayısal işaret işleme) fonksiyonlarını içeren, üzerinde ondalıklı işlemler için tasarlanmış ek bir birim olan FPU (floating point unit) ünitesini barındırmaktadır.Şekil 1’de kart gösterilmiştir.Özelliklerini sıralayacak olursak eğer;

Özellikleri:
1-Üzerinde Tiva TM4C1294NCPDT ARM CORTEX M4 tabanlı mikroişlemci
2-USB uygulamaları ve bilgisayar ile bağlantı/DEBUG için USB Micro-A micro-B konnektör
3- Yeşil Ledler
4- İki adet kullanıcı butonu
5-İşlemcinin pinlerinin kullanılabileceği 2 adet header pin
6-On-Board ICDI
7-Güç Girişinin seçimi için anahtar
8-Reset ve Wake-Up Butonu
9-Ethernet Portu
10-2 ADC Modülü
11-20 ADC Kanalı
12-Saniyede 2 Milyon maksimum örnekleme

LaunchPads LM4F TM4C — Pins Maps 13 34 1024x861
Şekil 1-TM4C1294XL kartı

Temel Clock Kaynakları
Hassas Dahili Osilatör(PIOSC): Hassas dahili osilatör çip üstü clock kaynağıdır. Bu clock reset vektörünün başlagıcında veya kod uygulamalarının başlangıcında kullanılır. Bu kaynak ekstra bir malzeme gerektirmez ve 16 MHz ±FPIOSC kadar clock frekansı sağlar.

Ana Osilatör(MOSC): Ana osilatör iyi doğrulukta frekans clocğu sağlar. Dahili veya harici birimden Kristal osilatörden giriş alabilir.

Düşük Güçlü Dahili Osilatör(LFIOSC): Düşük güçlü dahili osilatör göstermelik olarak 33 KHz çalışır. Düşük güç gerektiren uyku modu uygulamalarında kullanılır.

Gerçek Zamanlı Osilatör(RTCOSC): Gerçek zamanlı zamanlı çalışan uygulamalarda kullanılır. Clock frekansı olarak 32.768 KHz’lik frekans kullanır. Düşük güçlü veya yüksek güçlü uygulamalarda kullanılabilir.

Şekil 2.6’da işlemcinin ana clock şeması verilmektedir. Mikrodenetleyicinin kendisine verilen komutları işleyebilmesi için, saat (clock) denilen, kare dalga işareti gerekir. Bu işareti, mikrodenetleyici içerisinde bulunan bir osilatör devresine, dışarıdan bağlanan bir kristal üretir. Üretilen işaret, komutların işlenmesinde zamanlamayı sağlar.

Launchpadın üzerinde 16 MHz Kristal osilatör bulunmaktadır. PLL kaydedicisinde yapılan ayarlamalar ile 120 Mhz’lik maksimum işlemci hızını elde etmiş oluruz. İşlemcide her ne işlem yapılacak ise onun ilk olarak Clock’u aktif edilmelidir. Lauchpad’da bu işlem RCC registerinden gerekli ayarlanmaların yapılması ile kristal osilatörün çalışma hızı ayarlanır.

Şekil 2’de gösterildiği gibi ana osilatörün hızı faz kilitlemeli devre ile 480 MHz’e çıkarılır. Tabi ki bu işlemcinin karşılayabileceği bir hız değildir. Bu hız prescaler ile düşürülerek 120 MHz düşürülür. Şekildeki multiplekserlar ile bu bölümlendirme işlemi gerçekleşir. Bütün çevresel birimlerin clockları bu şemadan sağlanır.

TM4CX
Şekil 2 -Ana Clock Şeması

 

Bu yazımızda gömülü sistemlere kısaca giriş yaptık ve ardından ARM ile ilgili bazı bilgiler verildi ve ARM Cortex-4 ailesinden TM4c1294ncpdt mikrodenetleyicisinin kulanıldığı kart hakkında bilgi verildi. Daha öncede  dediğimiz gibi diğer yazılarımızda uygulamalar üzerinde anlatım yapılacaktır . Ayrıca elektronik bilgilerde verilecektir gerektiği zamanlar da devre şemaları da yazılarımızda paylaşılacaktır. Kanalımızdan da bizleri takip edebilirsiniz . Umarım faydalı olmuştur . Eğer bir yanlışımız olmuş ise şimdiden özür dilerim . Okuduğunuz için teşekkür ederim.

 

Fatih KAHRAMAN

Elektrik&Elektronik Mühendisi

Referanslar

1. https://tr.wikipedia.org/wiki/G%C3%B6m%C3%BCl%C3%BC_sistem

2. http://tr.wikipedia.org/wiki/Kategori:G%C3%B6m%C3%BCl%C3%BC_i%C5%9Fletim_ –     sistemleri

3. http://www.keil.com/dd/docs/datashts/ti/tm4c123/tm4c123gh6pm.pdf

4. http://www.ti.com/lit/ds/spms433b/spms433b.pdf

5.http://www.muhammetefe.com/makalelerim/programlama/arm/9-adim-adim-arm-programlama-1.html

Yorum yapın