Rakkoc.Com Recep Akkoç / Rakkocun Yazıtları

24Nis/122

ARM Nedir

Bugün dünyada üretilen mikroişlemcilerin %2 gibi küçük bir bölümü kişisel bilgisayarlarda kullanılıyor. Geri kalan %98’lik kısım hayatımızdaki elektronik cihazların içerisinde. Şu günlerde elektronik alanındaki gelişmelere aşina olan birinin ARM ismini duymamış olmasına imkan yok. Başta cep telefonları olmak üzere hemen hemen bütün mobil cihazlarda ARM mimarisine sahip işlemciler bulunuyor.

ARM Firması:
Öncelikle şunu belirtmekte fayda var: Piyasadaki birçok ürün için ARM işlemcili denilse de aslında doğru ifade “ARM tabanlı işlemci” dir. Çünkü aslında kendi başına ARM işlemci diye bir ürün bulunmuyor. ARM firması çeşitli mimariler tasarlıyor ve bu tasarımlarını işlemci üreticisi firmalara “lisanslıyor.”. ARM firması işlemcilerin  fiziki olarak üretimi yapmıyor.

ARM Ailesi:
ARM mimarisi ailesini tanıyalım. ARM’ın kendi web sitesindeki tabloya bakacak olursak:


ARM Mimarisinin üyeleri

ARM mimarisi ailesi (Kaynak: ARM Inc)  http://arm.com/products/processors/index.php

ARM mimarisinde 3 temel grup bulunmaktadır:
1 – Klasik ARM işlemciler: ARM7, ARM9, ARM11
2 – Gömülü sistemlere yönelik ARM işlemciler: Cortex-M0,  Cortex-M0,  Cortex-M0,  Cortex-M0,  Cortex-M0,  Cortex-M0
3 – Uygulama seviyesindeki ARM işlemciler: Cortex-A5,  Cortex-A8,  Cortex-A9,  Cortex-A15

1- Klasik ARM işlemciler:
Bu gruptaki işlemciler daha çok mikrodenetleyicilerin çekirdeklerini oluşturmaktadırlar. Motor kontrolü, sinyal işleme gibi donanım seviyesine yakın işlemlerde kullanılmaktadır. Klasik ARM çekirdekleri en eski ARM ürünlerinden ve kullanımları giderek azalmaktadır. Bunların yerine Cortex M ve R serisi ARM çekirdeklerinin kullanımı tavsiye edilmektedir.

2 – ARM Cortex Embedded İşlemciler:

Cortex M ve R serileri: Bu seri, deterministik bir şekilde çalışması gereken gerçek zamanlı ve düşük güç tüketimi gerektiren uygulamalarda kullanılmaktadır. NXP Semiconductors, STMicroelectronics, Texas Instruments, ve Toshiba gibi işlemci üreticileri bu çekirdeğe sahip mikrodenetleyici ürünleri sunmaktadırlar.

3 – ARM Cortex Uygulama İşlemcileri:

Cortex –A Serisi uygulama işlemcileri
Son dönemde hayatımızda oldukça büyük yer tutan akıllı telefonlar, tablet bilgisayarlar gibi son kullanıcı ürünlerinin birçoğunda bu serideki çekirdeklere sahip işlemciler bulunmaktadır. Örnek vermek gerekirse iPhone, iPad, Samgung Galaxy Tablet, RIM Playbook gibi ürünlerde Cortex-A serisi ARM tabanlı mikroişlemciler bulunmaktadır. Bu seri daha çok yüksek performans gerektiren son kullanıcı uygulamalarının üzerinde çalışacağı platformlarda kullanılmaktadır.

Cortex-A8 Çekirdeğe sahip işlemciler:

Texas Instruments OMAP3xxx series, FreeScale i.MX51-SOC, Apple A4, ZiiLABSZMS-08, Samsung Hummingbird S5PC100/S5PC110 , Qualcomm SnapdragonQSD8x50(A)/MSM7x30/MSM8255, Marvell ARMADA 500/600

Ürünler:
HTC Desire, SBM7000, Oregon State University OSWALD, Gumstix Overo Earth,Pandora, Apple iPhone 3GS, Apple iPod touch (3rd and 4th Generation), Apple iPad (A4), Apple iPhone 4 (A4), Apple TV (Second Generation) (A4), Archos 5,BeagleBoard, Motorola Droid, Motorola Droid X, Motorola Droid 2, Motorola Droid R2D2 Edition, Palm Pre, Samsung Omnia HD, Samsung Wave S8500, Samsung i9000 Galaxy S, Samsung P1000 Galaxy Tab, Sony Ericsson Satio, Sony Ericsson Xperia X10, Touch Book, Nokia N900, Meizu M9, Google Nexus S,Sharp PC-Z1 “Netwalker”

Cortex A9 Çekirdeğine sahip işlemciler:

Texas Instruments OMAP4430/4440, ST-Ericsson U8500 / U5500, Nvidia Tegra2, Qualcomm Snapdragon QSD8672/MSM8260/MSM8660, Samsung Orion, STMicroelectronics SPEAr1310, Xilinx Extensible Processing Platform,[34] Trident PNX847x/8x/9x STB SoC, Freescale i.MX6

Ürünler:

LG Optimus 2X, Motorola Atrix 4G,Motorola DROID BIONIC, Motorola Xoom,PandaBoard, NGP(PSP2)

ARM ile oynamak:

Şimdi gelelim ARM ile haşır neşir olmak isteyenler neler yapabilir sorusuna? Ben de uzun zamandır ARM’lara kafayı takıp çok da vakit ayıramayanlardan biriyim. Hep beraber bakalım:

Öncelikle ARM ile uğraşmak diye birşey yok.  Yine yazımın başında söylediğim gibi ARM işlemci diye birşey yok, ARM çekirdekli mikroişlemciler/mikrodenetleyiciler var. Bugün elinizdeki cep telefonunuzda %99 ihtimalle bir ARM tabanlı işlemci bulunuyor.

ARM tabanlı mikroişlemci / mikrodenetleyici ayrımına bakacak olursak:

Mikroişlemciler genellikle sadece işlem ünitesi ve temel birimlerden oluşurlar, harici olarak bellek ve diğer giriş/çıkış birimlerine ihtiyaç duyarlar. Mikroişlemcileri daha çok “uygulama” yazılımlarının çalıştığı sistemlerde görüyoruz.

Mikrodenetleyiciler ise kendi içerisinde giriş-çıkış birimleri, çeşitli donanım birimleri (SPI,  I2C,  PWM),  RAM ve kalıcı hafıza (genellikle NOR veya NAND flash) bulunan “komple” sistemlerdir. Mikrodenetleyiciler daha çok elektronik tasarım alanında kullanılıyorlar. Yani çevremizdeki cihazlardan sadece cep telefonlarımız, tablet bilgisayarlarımız değil çamaşır makinalarımızda, otomobillerimize, fotoğraf makinalarımızdan yazıcılarımıza kadar birçok ürünün içinde ARM tabanlı işlemciler bulunmaktadır.

O zaman yapmak istediklerimize göre gruplama yapmak istersek:

Eğer elektronik tasarım alanında çalışacaksanız, işin donanım seviyesine yakınsanız, muhtemelen de daha önceden 8/16 bit mikrodenetleyiciler çalıştıysanız ARM tabanlı mikrodenetleyici ailelerine yönelmelisiniz. Bunlara örnek verecek olursak NXP Firmasının LPC1000, 2000 serileri, ST firmasının ST… serisi. ATMEL firmasının AT90SAM serisi…

Eğer uygulama yazılımlarıyla uğraşacaksanız aslında işlemcinin ARM olması sizi pek ilgilendirmemektedir. Eğer direk donanım seviyesinde yazılımlar geliştirmeyecekseniz muhtemelen üzerinde yazılım geliştirmek istediğiniz platformun size sağladığı araçlar ve kütüphaneleri kullanacaksınız. Örneğin akıllı telefon yazılımları geliştirmek için bugün çok popüler olan Android, iOS ve Windows Mobile gibi platformları kullanabilirsiniz. Burada odaklanmanız gereken şey bu platformlar olacaktır.

Eğer daha özel uygulamalar geliştirmeyi düşünüyorsanız BeagleBoardMini2440Pandaboard gibi geliştirme kartlarını kullanabilirsiniz. Bu kartlar üzerinde Win CE veya Embedded Linux kurararak üzerine kendi uygulamalarınızı yazabilirsiniz. Ben şahsi olarak Embedded Linux konusunda yoğunlaşmayı düşünüyorum. Son zamanlarda da bu konuda çalışıyorum.

Gömülü Sistemlerde Linux:

Benim gibi Linux ortamından uzun süre uzak kalmış kişiler için başlangıçta bu yol zor görünebilmektedir. Linux’un öğrenme süreci başlangıç için oldukça bezdirici. Ama üzerinde gidildiğinde ileride karşılığını fazlasıyla verecek bir yatırım olacağına inanıyorum. Açık kodlu yazılımların kullanımı gün geçerek artmaktadır. Linux da gömülü sistemler alanında her geçen gün kendine daha çok yer bulmakta. Bu nedenle gömülü sistemlerle uğraşacak arkadaşların Linux’a aşinalık kazanmaları faydalı olacaktır. Bu konu hakkında biraz daha heyecanlanabilmek adına Youtube’da bulunan “embedded Linux” ile alakalı videolara bakabilirsiniz :)

Kaynaklar:

1 – ARM Inc. http://www.arm.com

2- Wikipedia. http://en.wikipedia.org/wiki/ARM_architecture

3- Coskun Tasdemir http://coskuntasdemir.net/arm

18Nis/120

ARM’i taniyalim

Iyi geceler sevgili okurlarim. Bu gece biraz uyku tutmadi ve arm uzerine yazmak istedim. Arm islemci kelimesini genelde Gomulu sistem terimi ile birlikte duymaya basladik. Yada son kullanici noktasinda Cep telefonlari, Tablet PC'ler ile birlikte. Android ile gelisen ARM üzerindeki coklu mimari gucu git gide artan bir pazarida ortaya cikartmis oldu. Arm'n kelime anlamina bakcak olursakta Advanced RISC Machines kelimelerinin ilk harfleri cikmakta.

Benim blogda bahsettigim ARM üzerinde bir isletim sistemi bulundurmadan direk yazilmis keil C kodlarini calistiriyor olacak. internetten derledigim bazi yazilar ile de aciklmalari su sekilde birlestirip size sunayim :

ARM  Nedir ?

ARM uzun adı Advanced RISC Machines olan bir işlemci mimarisidir. Mimari 32bitlik olmasının yanında düşük maliyeti ile günümüzde çok tutulan işlemci çekirdeklerinin ortaya çıkmasına neden olmuştur. ARM  ürettiği çekirdekleri çeşitli firmalara lisanslandırarak bu firmaların değişik uygulamalar yapmasına olanak sağlamaktadır. Yani ARM firması tümleşik devre üretimi gerçekleştirmemektedir. Bunun yerine  Samsung, Hp, Altera, Micronas, Mitsubishi, Motorola, Sanyo, Triscend gibi birçok firma ARM çekirdeklerini alıp bunun üzerine uygulmalarını geliştirmekte veya ARM tabanlı kendi işlemcilerini piyasaya sürmektedir.

Bayağı uzun sürecek yazı dizimizde ARM komutlarına değineceğiz. Sitede ARM ile c programlama örnekleri başka konularda yer alabilir ancak biz konularımızı ARM komut seti ile devam ettireceğiz. Çünkü bir mikroişlemciyi tanımak için bence onun komut setini, registerlarını öğrenmekle mümkün olur. Zaten c programlama bildikten sonra bu bilgilerinizi daha efektif bir şekilde kullanabilirsiniz.

Temel olarak ARM komut setleri 2 alt kısma ayrılır bunlar  16 bitlik THUMB ve 32 bitlik ARM komut setleridir. Biz öncelikle 32 bitlik komut setlerine değineceğiz. Bu işlemlerimizi sırasında herhangi bilgisayar veya board kullanımı gerçekleştirmeyi düşünmüyorum ancak vakit bulabilirsem birkaç bütünleyici uygulama yapıp görsellerini paylaşabiliriz. ARM uygulamalar içinde elimde bulunan geliştirme kiti aşağıda görülmektedir.

ARM Özellikleri

ARM tam olarak olmasa da RISC sınıfı bir işlemcidir. (Reduced Instruction Set Computer) yani komut seti azaltılmış bir işlemcidir. Neden tam olarak RISC işlemci olmadığını açıklayalım. Öncelikle R1 den R16’ya kadar 32 bitlik registerlara sahiptir ayrıca bütün komut setlerini conditional yani durumsal olarak kontrol edebiliriz ve son olarak 32bitlik barrel shifter’a sahiptir bu da bilindiği üzere combinational bir devredir yani saat sinyalinden bağımsız olarak bir saat darbesinde birkaç işlem yapmaya olanak sağlar. Saydığımız tüm bu özellikler ARM işlemcileri tam olarak RISC sınıfı bir mikroişlemci yapmaz.

ARM toplamda 6 tane işlem moduna sahiptir ve 37 tane register yani yazmaçdan oluşmaktadır.  Bu yazıcılarda 31 tanesi 32bitlik genel amaçlı yazmaçlar, 6 tanesi durum yazmaçları ve R0’dan R14’e kadar 15 adet programcı tarafından programlanabilen yazmaçlara sahiptir.  Genel olarak little endian sisteme sahip olmakla birlikte istenirse big endian olarak da ayarlanabilir. Burada Little Endian ve Big Endian’nın tam olarak türkçelerini bilemediğimden dolayı türkçelerini yazmıyorum J. Litlle endian gösterim formatı bildiğiniz üzere en düşük adresli konumda yazmaç içindeki en düşük değerli (least significant bit) bit tutulur.

Bugünluk giriş konusu yeter sanırım. Bundan sonraki konumuzda ARM hakkında yavaş yavaş teknik konulara değineceğiz ve örneklendirmelere geçeceğiz. Konumuzu bitirmeden yazının daha iyi anlaşılması için okuyucu arkadaşların RISC, Little Endian, Big Endian gibi terimleri tekrar ederek bilgilerini pekiştirmesinde fayda var. İlerleyen yazılarımızda görüşmek üzere iyi günler.

5Nis/120

ARM programlamak icin KEIL

Merhaba sevigili okurlarim, Biraz bos vaktim oldugunda burasi icin bir seyler yapmaya calisiyorum.

Suan sizinle ARM Programlamakta da kullanilan bir C derliyicisinin kurulumu ve firmware dosyasi olusturmayi analatacagim.

ilk olarak exeyi klasik sekilde next next diyerek kuralim. ve adimlari daha rahat anlatmak icin size hazirladigim videoyu kurulum klavuzu olarak kullana bilirsiniz.

Kisisel bilgileri istedigi bir ekran gelecektir karsiniza bu ekranda Ad (first name), Soyad (last name), firma (Company), ve mail adresi bilgisini isteyecektir bunlari girdiginizde dosyalarin kopyalama ekrani cikacak.

kopyalama ekrani bittiginde similasyon donanim secenegini secip ileri diyiniz. ccalc.exe dosyasini Keil\Arm\Bin40'in icine koyduktan sonra projenin derlendikten sonra calistirilacagi kodlara asagidaki kodlari ekliyoruz.

C:\Keil\ARM\BIN40\fromelf.exe --bin --output .\Obj\led_blink.bin .\Obj\led_blink.axf
C:\Keil\ARM\BIN40\CSCalc.exe .\Obj\led_blink.bin 32

Cihazimizi Boot konumunda baslatigimizda icine .bin dosyasini koymamiz yeterlidir; CSCalc'n mantigini kavramak isterseniz "CSCalc Nedir Ne is yapar." yazimi okuyabilirsiniz.

Videoda gecen CD'nin orjinal urunu EXS01 olup internete dusen ilk goruntuleri yine tarafimdan sergilenmisti

 

23Mar/122

ARM Lpc1343 gelistirme karti

LPC1343 Development Board adli bir baslik gormustum ve dogrusu hosuma gitti Atmel AVR'mi ARM'mi diye soracak olan herkeze ARM demekten cekinmem.

Kendi board tasarimi ile ugrasmak isteyen arkadaslar icin bu dosya ise yarayacak bir sey olmasina ragmen Profesyonel olarak bir board talep eden arkadaslar varsa onlara Expkits'n  LPC1343 kartini öneririm.

Yunus Emre Sürücü kendi blogunda PCB dosyalarinida paylasmis talep edenlerin kendi imkanlari ile gelistirme kartinin montajini yapmasi mumkundur bilginize.

19Mar/122

Expkits’in yeni ürünü “EXS01 LPC1343”

Ürün hakkinda ayrıntılı bilgiyi barindirilan sayfa suanda tasarlanmakta. Bir ürün almak için firmanin sitesine girmistim ve ana sayfada kisa bir tanıtımını fark edince konunun devamina baktim. Suanda fiyatı hakkında bilgim olmayan urunun boyutlarının ortalama bir el buyuklugunde filan oldugu belli oluyor. Usb; Ethernet; Uart arayuzlerinin olusu urunun bir cok projede kullanimini cok rahatlatacaktir.

Cihazin islemcisi "ARM Cortex-M3" 72 Mhz'ye kadar destek veriyor. Fakat resimlerde gordugum kadari ile uzerinde 12 Mhz bir kristal bulunmakta. Bunun sebebinin ne oldugunu kartin tasarimcilari ile goruserek ogrenecegim ve siz degerli okuyucularim ile paylasacagim.

Bazi aldigim haberlere gore bu yakinlarda 7 farkli modelin piyasaya surulecegini duymustum 🙂 bu urunleri ogrenip sizin ile paylasmak; Hatta elde edip testlerini yapip ozelliklerini karsilastirmak istiyorum bakalim zamanla insallah. Simdilik bu urunun sitesindeki gorsellerini sizinle paylasayim.

 


Toplam 2 sayfa mevcuttur; 1. sayfayi okuyorsunuz...12