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.
[ad]
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 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 BeagleBoard, Mini2440, Pandaboard 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