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.

18Nis/120

Expkitsin yeni EXS0* serisi

Merhabalar;

EXS01 daha onceden de yazilarimda sizinle paylastıgım bir cihazdi. Fakat suanda gordugum kadari ile EXS0* serisi 8'ye kadar gitmis

http://www.expkits.com/?s=urun_detay&urun=exs01_lpc1343.htm

http://www.expkits.com/?s=urun_detay&urun=exs02_lpc1769.htm

http://www.expkits.com/?s=urun_detay&urun=exs03_stm32f103.htm

http://www.expkits.com/?s=urun_detay&urun=exs03_stm32f205.htm

http://www.expkits.com/?s=urun_detay&urun=exs07_pic32.htm

http://www.expkits.com/?s=urun_detay&urun=exs08_atmega128.htm

Ana sayfalarinda urunlerin anlatim linkleri bulunmakta. Dogrusu suanda keske EXS02 olan urunu alsaydim diyorum ama artık is isten gecti 🙂 bir daha ki urun tedarigimde onu da almayi dusunuyorum.

5Nis/120

EXPKITS – EXS01’in ilk adımlar


Merhaba arkadaslar ARM konusunda yeni oldugum icin Expkits gibi bir firmanin profesyonel bir cihazla kodlamaya baslamak istedim.

Piyasaya daha yeni surmeye hazirlandiklari urunun tanitimlari kendi sitelerinde yapilirken urunden bir tane tedarik etmek istedigimi belirttim; Sagolsunlar firmanin sahibi Goktug bey beni kirmadi bir tane bu urunden gonderdi. Bende testlerimi gerceklestirdim. ARM'in ilk adimlarini LPC1343 ile attim. Kodlama konusuna daha sonra gecicegim. ama kodlama arayuzu "ARM programlamak icin KEIL" isimli yazimda mevcuttur. Burun hakkında internete ilk dusen fotoraflarinida sizinle paylasmistim (kendimi magazin yazari gibi hissetim - televizyon izlemedigim halde kulturumuzu bozuyorlar valla)

Gordugunuz uzere urun iceriginde :
1. USB kablo
2. Programlarin ve Orneklerin bulundugu CD
3. EXS01 Kartimiz <3

Cihazi elime aldigimda ilk fark ettigim sey urunun altinda bulunan plexy glass oldu. Onceden aldigim Expkits urunlarinde bu yoktu; Firma sahibi ile bir iki kez telefonda konustugum ve benim yeni is degistirmekte oldugumu bildiginden HEDİYE olarak mi gonderdigini merak ettim. Tabiki bunu yazarken de muallakta kalmamak adina firmayi arayip sordum 🙂 boyut olarak ufak kartlarinin HEPSINDE bu sekilde yaninda urun veriyorlarmis.

Cihaz Ufak olmasina ufak ama cok islevsel; uzerinde Ethernet cikisi; UART uzerinden Com cikisi; USB baglanti noktasi (bootloader i ile kullanimi cok guzel oluyor) 4 tane programlana bilir butonu Micro SD kart girisi, 4 tane programlana bilir LED ve buton;

Analog Dijital ceviricinin testleri  yapmak icin bir tane POT bulunduruyor; Urun LCD'si ile birlikte geliyor. urunun uzerinde SHT11 ve DS1820 girsileride mevcut.

Ve uzerinde bir buzzer var ne yazikki; Ne yazikki diyorum cunku bu buzzer benim cok canımı sıkıyor; uzerinde kapatma ile ilgili bir sey goremedim. programlama modunda surekli otuyor ve sesi sevmeyen insanlar icin (yani ben) tam bir dusman 🙂

Tarafsiz bir inceleme olmasi adına eksiklerini de bir gozden gecirmek gerek tabiki. benim gozume carpanlardan ilk eksik Buzzerin kapanma ozeligi iken kardesim direk bir power off tusu olmasi gerektigini dusunuyor.

ben bu mantikta boyle ufak ve pratik bir cihaz gelistirebiliyor olsaydim arduino gibi uzerine genisleme bolumleri birakip ihtiyaca gore eklene bilir moduller hazirlardim (bu sekilde picR kart diye bir projem vardi da askida kaldı)

 "ARM programlamak icin KEIL"

Güncelleme :

Buzzer hakkındaki görüşümü ürünü tasarlayan kişi ile paylaştım; Firmada buzzer olayını düşünmüş fakat LCD'nin altına geldiği icin bir Jumper koysalar cok saglikli kullanıla bilir olmayacağını belirtiler. Gece gelistirme yapanlar icin buyuk dert oldugunu belirtip Buzzeri sokmeyi dusundugumu belirttim. daha kolay olacak R29 10K drinci sokmemi onerdiler. ( O direnci yerine takana kadar bir daha buzzer calismayacaktir bilginiz olsun) Asagidaki resimde R29'a bakabilirisiniz.

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

 

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