Adım Adım ARM Programlama yazı serimin ilkinde; ARM nedir, ARM programlamak için nelere ihtiyacımız var ve hangi deneme kartlarını kullanacağız bunlardan bahsedeceğim. Ayrıca yazılarım boyunca kullanacağımız program ve dosyaları yeri geldiğince sizlerle paylaşacağım. Bu yazı serisinin amacı; ARM programlamak isteyen ama karmaşık yapısından dolayı, programlamayı nereden başlayacağını bilmeyen arkadaşlara yol göstermek. İnternette, ARM programlamak üzerine çok fazla Türkçe kaynak bulunmamakta. Ayrıca ARM programlamayı sıfırdan belli bir düzeye kadar düzenli bir şekilde anlatan ders şeklinde yazılar bulmak da oldukça zor. Umarım yazılarım, bu eksikliği bir nebze olsun azaltır.
ARM nedir?
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. Cep telefonları, bilgisalarlar, tabletler gibi bir çok elektronik cihazda ARM mimarisine sahip işlemciler kullanılmaktadır.
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 sunmakta. 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 bulunmakta. 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ğinizde, aynı kütüphane ve özellikleri kullanarak Philips'in ürettiği ARM işlemcilerini programlayamazsınız. Philips'e geçmek için, üretici firmanın sağladığı kütüphaneleri indirip, kütüphanelerin kullanış şekillerini tekrardan öğrenmeniz gerekmekte.
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 İşlemciler.
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ğiyle de dikkat çekmekte.
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ı, kilimalar vs.), otomativ 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 edilmekte. 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 edilmekte.
Klasik ARM İşlemciler: İçerisinde ARMv7, ARM9 ve ARM11 ailelerini barındıran bu seri ARM firmasını 15 yııldır hizmet etmekte. Mimari yapısı günümüz teknolojilerine göre bbiraz eski kaldığı için, ARM firması tarafından bu işlemciler yerine Cortex-M/R serileri önerilmektedir.
SecurCore İşlemciler: Güvenliğin ön planda olduğu alanlarda bu işlemci tercih edilmekte. Günümüzde kullandığımız yüksek güvenliğe sahip tüm akıllı kartlarda(smart cards) SecurCore işlemciler tercih edilir.
ARM hakkında anlatılacak daha bir sürü bilgi olmasına karşın, yazımın amacından uzaklaşmamak adına bu konuyu burada noktalıyorum. Daha detaylı bilgi için www.arm.com sitesine ziyaret edebilirsiniz.
Programlama için Gerekli Ekipmanlar
ARM'ın bir mimari(çekirdek) olduğunu yukarıda belirtmiştim. ARM'ı programlamak demek, ARM mimarisini kullanılarak üretilen işlemcileri programlamak demektir. Piyasada birçok firma ARM mimarisi kullanarak kendi işlemcilerini üretmekte. Ben yazı serilerimin hepsinde ST firmasının işlemcilerini kullanacağım. ARM programlamayı öğrenmek istiyorsanız bir deneme kartı edinmeniz şiddetle tavsiye ederim. Ben yazılarım boyunca ST firmasının üretmiş olduğu iki farklı deneme kartını kullanacağım: STM32F10C-Eval ve STM32F4-Discovery. STM32F10C-Eval deneme kartı üzerinde STM32F107VCT Cortex-M3 serisi bir mikrodenetleyici bulundurmakta. Deneme kartı, bu işlemci ile yapılabilecek hemen hemen her donanıma sahip olduğu için gayet kullanışlı ve öğreticidir. STM32F4-Discovery deneme kartının üzerinde de STM32F407VGT6 mikrodenetleyici bulundurmakta. Diğer deneme kartına göre daha az özellikte olmasına karşın tercih edilmesinin en büyük sebebi fiyatıdır. ARM programlamayı öğrenmek için en azından bu deneme kartını almanızı öneririm. Deneme kartlarıyla ilgili gerekli kütüphaneleri yazımın sonunda bulabilirsiniz.
Yazılım geliştirebilmek için bir derleyiciye ihtiyacımız var. Keil ve IAR piyasada en çok kullanılan iki derleyicidir. Ben programlarımı zaman zaman Keil'da zaman zaman da IAR'da geliştirerek, her iki programı da sizlere göstermeyi hedeflemekteyim. Her iki derleyicide 32K'lık kod sınırı bulunmakta. 32K'lık kod uzunluğu başlangıç seviyesindeki projeler için çok çok büyük bir alan olduğundan dolayı, her iki derleyiciyi de ücretsiz olarak kullanabiliriz. Derleyicilerin indirme linkleri aşağıda verilmiştir.
İndirilmesi Gereken Kütüphaneler ve Programlar
STM32F10C-Eval deneme kartı kütüphanesini buradan indirebilirsiniz.
STM32F4-Discovery deneme kartı kütüphanesini buradan indirebilirsiniz.
Keil MDK-ARM programını buradan indirebilirsiniz.
IAR programını buradan indirebilirsiniz.
Adım Adım ARM Programlama-1 isimli yazımın sonuna geldim. Adım Adım ARM Programlama 2-GPIO isimli yazımda programlamaya ilk adımı atacağız.
Şimdilik sağlıcakla kalın...
Yorumlar
F4 Discovery üzerinde bulunan akselerometre ile hassas ölçümler yapmanız mümkün.
İyi çalışmnalar,
RSS beslemesi, bu iletideki yorumlar için