ARM a başlamak...

Başlatan PROTECH_, 11 Haziran 2010, 02:22:48

PROTECH_

Selam,

Çoğu 8-bit işlemci(pic,atmel vs.)  kullanıcısının merak edip geçmeye niyetlendiği ama bir türlü geçemediği veya geçmek için neler gerektiği konusunda bir önbilgisi olmaması nedeniyle ertelediği bir konu olan ARM işlemciler üzerine başlangıç için bir önbilgi olabilecek bir kaç konudan bahsetmek istiyorum.

ARM nedir ?

ARM,  "Acorn Risc Machine"  in baş harflerinden oluşmaktadır.
Ne olduğu o kadar çok önemli olmayıp bir RISC işlemci çekirdeği tasarlayan firmadır. "Acorn Risc Machine" ilk olarak, acorn bilgisayar şirketinin,   VLSI technology firması ile birlikte 1983 yılında resmi olarak başlattığı projenin ismidir.
1985 yılında ilk işlemci tasarlanmıştır ve CMOS teknolojisi kullanılarak üretilmiş olan 32bitlik   bu işlemci çekirdeği ARM1 olarak bilinmek. İlerleyen çalışmalarda  ARM2  vs. şeklinde devam etmiştir.

peki ARM ı öne çıkaran şey nedir  nedir ?

Öncelikle  ARM işlemcilerini farklı yapan nokta güç tüketimleriydi. Gösterdiği performansa göre tükkettiği güç miktarının az olması onu diğer işlemcilerden daha öne çıkarmıştır. Bu nedenle bu işlemci  çekirdekleri  "TI, SONY, FUJITSU, SAMSUNG, ST OKI vs."  gibi firmalar tarafından lisanslanmış ve bu işlemci çekirdeklerine çevrebirimleri ekleyerek  kendi mikrokontrollerlerini piyasaya sürmüşlerdir. Şuanda dünyada kullanılan mobil cihazların çok büyük bir yüzdesi içerisinde ARM işlemci çekirdeği bulundurmaktadır.
32bit Mikrokontrollerlar ile çalışanların da tamamına yakını ARM çekirdekli işlemciler ile çalışmaktadır.

Bizim ilgilendiğimiz kısım gayet açık ve basittir: her firma ARM işlemci çekirdeğini alıp buna SPI, USART, ADC, ROM gibi arabirimleri ekleyip tek çip microcontroller olarak bizlere sunmaktadır. 

8bit -32bitARM  geçişi nasıl olacak ?

8-bit işlemciler aslında büyük projeler tasarlamak isteyen kişiler için büyük bir oyalanmadır!

8-bit işlemciler den ARM işlemcilere geçmek aslında DOS tan Windows ortamına geçiş gibidir. İlk başta biraz uyum problemi yaşayabilirsiniz ama geçtikten sonra sağladığı çalışma performansı ve çalışma alanın genişliği ile size ve projelerinize yeni ufuk kazandırır.

Aslında C ile ARM programlama ile pic programlama arasında nerdeyse hiç fark yoktur, İkisindede herhangi bir donanımı mesela adc veya usart kullanmak istediğiniz zaman açıp datasheet ten bakıp register ları amacınıza  göre konfigrasyonunu yapıp modülü rahatca kullanıyorsunuz. Olayı bu bağlamda ele aldığınız zaman 8bit ten 8bite mesela PICten ATMEL e geçmek ile ARM a geçmek arasında çok az bir fark vardır. PIC ten ATMEL e birileri size ATMEL'i birebir anlatmaksızın veya Türkçe kaynak karıştırmaksızın geçtiyseniz ARM a da aynı şekilde hiç zorlanmadan geçebilirsiniz. ARM size çok komplex görünebilir ama tam tersi bir durum söz konusudur çalışmaya başladıktan sonra gerisi çorap söküğü gibi gelir!

Arma geçerken komplex gelebilecek tek nokta kesmeleri ve iç clock sinyalinin ayarlanması işi olabilir. Bunun sebebide PICte kesme sadece iki vektöre sahip olmasından kaynaklanmaktadır yani çok basit olmasından.

ARMda her kesme için ayrı ayı kesme adresleri ve seviyeleri vardır. Buda çok güzel bir kolaylıktır. ARM işlemciler amacı gereği çok yüksek hızlarda çalıştıkların dan dolayı system clock u direkt olarak her modüle verilememektedir. Ve bunun için bir kaç küçük konfigrasyon yapılması gerekmektedir donanım kullanmadan önce. Bu işlem PIC teki ADC clock sinyalinin ayarlanmasının aynısıdır.
Yani aslında hiç bir farklı bir olay değildir.

peki ARM a başlamak için ne yapmak gerekir ?

1- ARM a başlamak için öncelikle basit bir kit edinmelisiniz.
Direk üzerinde lcd si linux sürülebilen bir kit almanız faydanıza değil tam tersinize zararınıza olacaktır çünki bu, işe direk balıklama dalmak olur o kadar şeyi bir anda öğrenmeye çalışmakta sizi bıktırır ve pes edersiniz.
Bu nedenle basit bir stamp halinde bir kit edinmeniz daha faydalı olacaktır. Çünki ilk iş işlemciyi tanımak işlemciye aşina olmaktır.
Basit giriş çıkış işlemleri yaparak(led yak söndür vs.)  kendinize olan güveniniz artacaktır ve komplex programlara kafa yormadan kısa sürede çalışma ortamına adapte olacaksınız.
Zaten adapte olduktan sonra artık at koşturmaya başlarsınız  ;) .

2- ARM a program yazmak için ücretsiz lisans problemi olmayan GCC ve ücretli Keil derleyicileri mevcuttur. Başlangıç için bolca  kaynak bulabileceğiniz derleyicilerdir. keil in sitesinden 32kb kod sınırı olan programını indirebilirsiniz. Veya kod sınırı ve lisans olayları ile hiç uğraşmayıp setup şeklince hazırlanmış, GCC tool chain i kullanabilirsiniz. Bu şekilde hazırlanmış programı www.yagarto.de sitesinden edinebilirsiniz.
GCC yi kullanmak için eclipse ideyi direk sitesinden indirip programı açıp bir kaç konfigrasyondan sonra özgürce gcc yi kullanabilirsiniz.

3- Başlayacağınız işlemciyi seçmeden önce o işlemci ile ilgili bir araştırma yapın ve temel bilgilerini anlatan kaynakların olup olmadığına bakın. Mesela STM32 bu konuda çok iyi www.hitex.com dan veya direk www.st.com dan stm32 ile ilgili insider guid ı indirip çok kısa sürede işlemciyi ve özelliklerini öğrenebilirsiniz sadece 96 sayfacık döküman.

4- İşlemciye program yazmadan önce mutlaka birkez datasheetin tamamına bir göz atmış olmanız gerekir. Ve program yazdığınız sırada ayarlama yaptığınız yer ile ilgili datasheet te ayrınıtılı olarak bilgi edinin böylelikle programınız için gereken konfigrasyonları tam olarak ayarlayıp gereksiz can sıkıcı hatalardan kurtulmuş olursunuz.


5- İlk programınızı yazmadan önce örnek programları inceleyip tamamen anlamaya çalışın hangi register ne için ayarlanmış datasheetten birebir değerlerin oluşturduğu ayarlara bakın. Örnek programı anladıktan sonra ilk programınızı yazamaya örnek programlar üzerinde değişikilikler yaparak başlayabilirsiniz. Bu daha kolay bir başlangıç sağlayacaktır.

6- Birşeyi anlamadan diğerine geçmeyin. Mesela keil veya GCC-eclipse kullanımın öğrenmeden program yazmaya derlemeye asla geçmeyin aksi takdirde çalışmalarınız hüsran ile sonuçlanır bıkarsınız.

7- İşlemciye program yüklemek için jtag zorunlu değildir. Genelde üreticilerin kendi bootloader programları mavcuttur(ST ve NXP ninkileri biliyorum).


Peki SONUÇ nedir ?
ARM dünyasına hoş geldiniz artık yapacağınız projelerde TFT leri gönül rahatlığı ile kullanıp doya doya kod yazıp, aklınıza gelen her türlü matematiksel işlemleri içeren programları rahatca yazıp; seri üretime geçirip satacağınız ürünler tasarlayabilirsiniz.

saygılarımla..


     
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

death_free

Eline koluna sağlık dostum.gercekten güzel ve acıklayıcı bi metin olmus.benim gibi baslangıc seviyesinde olan arkadaslar için rahatlatıcı bir yazı  ;)

gcc le aramız iyi yavas yavas keyif alarak öğrene öğrene ilerliyoruz.ama ben keile gecmek istiyorum ufak bi sorum olacak sample bi programın en basite indirgenmiş hali gccde calısıyor iken keil de neden calısmaz?

Yeni yazılar yazman dileğiyle...  :)
<<<<<Aslana sormuşlar ensen niye kalın ? Aslan : "Kendi işimi kendim görürüm " demiş>>>>  World Of Warcraft Cataclysm  /// REalm : Frostmane  Nightwalkér

arm-beginner

Birde buna bir 8 eklesek?
8- Çat pat inglizce öğrenmeden bu konuya hiç bulaşma

PROTECH_

@death_free
Iki derleyicide işlemci ileilgili tanımlamaların yer aldığı farklı  header dosyalarını kullanmaktadır. Bu nedenle çalışmadığın tahmin ediyorum.
GCC bence çok güzel ve kullanışlı gcc de devam etmeni öneriririm.

@arm-begginer
Evet ingilizce olmadan bu iş olmuyor. Elektronik ile uğraşan herkese ingilizce şart.
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

death_free

@ PROTECH_
Tavsiye için teşekkür ederim.Öyleyse Gcc le yola devam. ;)
<<<<<Aslana sormuşlar ensen niye kalın ? Aslan : "Kendi işimi kendim görürüm " demiş>>>>  World Of Warcraft Cataclysm  /// REalm : Frostmane  Nightwalkér

muhittin_kaplan

Açıklamalar için teşekkür ederim. PIC i istediğimi yapacak düzeyde öğrendikten sonra "yahu bu da nesi" dediğim ARM ile çalışmak istiyorum.(Kesin Geçiş değil, istediğimde kullanmak istiyorum). Usb Cihazlar ile çalışıyor ve geliştiriyorum ne tür bir kit almalıyım. hangi programı kullanmalıyım (yukarda verilmiş ama indirmeyi beceremedim)

PROTECH_

@muhittin_kaplan
Olimex in kitleri bu konuda iyi, birçoğunda usb bağlantıları mevcut.
Çinden de daha uygun fiyatlara kit edinebilirsiniz fakat çinden gelen kitlerde genelde ingilizce döküman problemi yaşanıyor.

aşağıdaki linkte adım adım gcc derleyicisi için gerekli olanlar anlatılıyor.
http://yagarto.de/index.html

bu linkte ise ARMgcc için eclipse ide ne şekilde ayarlanacağı resimli olarak anlatılmakta
http://www.sparkfun.com/datasheets/LCD/ANBS1_00_06_Setting_up_with_Eclipse_and_GNU.pdf

burdada yapılmış güzel bir usb örneği :
http://www.teslachip.com/oslskp.html
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

teknikelektronikci

hocam elinize kolunuza saglik

tek bir sorum olacak

calistiigm firmada hep fpga gal kullaniyorlar

ve benimde elimde su an bir türlü 4 aydir düzgünce baslayamadigim  cyclone 3 fpga kiti var

peki niye fpga degilde ARM  ? veya fpga ARM  den üstünmü ? veya tersinemi ? mantigim fpga ögren diyor ama kalbim hep ARM dan yana
o yüzden söyle bir cesaret toplayip da baslayamadim ( tabi bunda halen cnc projesinin sürmesinin etkisi var :D )

kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

PROTECH_

@teknikelektronikci

Hocam aslında FPGA hepsinden iyi, profesyonel bir çalışmada Fpganın üzerine yoktur diye düşünüyorum.
Hız ve  performans  arıyorsan bunu karşılayabiliecek şey FPGA ve ASIC lerdir.
Aslında bana göre ARM, FPGA ile karşılaştırılamaz.  Yanlız bilindiği üzere FPGA ile çalışmak biraz zahmetlidir fiyatlarına bakılacak olursakta tamamen profesyonel işler içindir.
Mesela savunma sanayisinde inceleme fırsatı bulduğum Görüntü işleme video işleme gibi komplex işler yapan cihazlar da FPGA lar kullanılıyor.
FPGA ile oynamak büyük oynamaktır bence, belki ülkemizde FPGA ile çalışan herkesin iş bulması biraz sıkıntı olabilir ama avrupada harıl harıl FPGA çalışanı aranıyor.
Ben bizzat ünivrsitedeki hocama gelen iş ilanlarından biliyorum. Hep FPGA bilen ve toefl vermiş eleman aranıyordu. Vel hasıl murat hocam FPGA projelerini bekliyoruz :)

Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

teknikelektronikci

Alıntı yapılan: PROTECH_ - 11 Haziran 2010, 20:14:38
@teknikelektronikci

Hocam aslında FPGA hepsinden iyi, profesyonel bir çalışmada Fpganın üzerine yoktur diye düşünüyorum.
Hız ve  performans  arıyorsan bunu karşılayabiliecek şey FPGA ve ASIC lerdir.
Aslında bana göre ARM, FPGA ile karşılaştırılamaz.  Yanlız bilindiği üzere FPGA ile çalışmak biraz zahmetlidir fiyatlarına bakılacak olursakta tamamen profesyonel işler içindir.
Mesela savunma sanayisinde inceleme fırsatı bulduğum Görüntü işleme video işleme gibi komplex işler yapan cihazlar da FPGA lar kullanılıyor.
FPGA ile oynamak büyük oynamaktır bence, belki ülkemizde FPGA ile çalışan herkesin iş bulması biraz sıkıntı olabilir ama avrupada harıl harıl FPGA çalışanı aranıyor.
Ben bizzat ünivrsitedeki hocama gelen iş ilanlarından biliyorum. Hep FPGA bilen ve toefl vermiş eleman aranıyordu. Vel hasıl murat hocam FPGA projelerini bekliyoruz :)


hocam cevap icin sagol

günde nerden baksaniz 10-20 adet fpga chipi veya karti söküp takiyoruz ayni anda var olan programi atiyoruz ama bir türlü 1 led yak söndür bile yapabilcek zemini hazirlayamadim ki kit de almama gerek yok is yerindeki bir kac ürünü söylesem ücretisz alirim max2 altera cyclone 2 virtex4 (power pc) lattice hepsi elimde olcak ama gelin görünki 1 üsengeclik 2 zaman 3 biraz cesaret  bunlari bi türlü toplayamiyorum tabi dediigm gibi zamanimin cogunu cnc ile dernek aliyor neyse insallah dediginiz gibi 1 led yak söndür dahi olsa yapacam :)  sizinde tekrar elinize kolunuza saglik
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

Gökhan BEKEN

Pic'teyim Atmel'e geçeceğim ordanda ARM düşünüyorum kafamda sorular var aydınlatırsanız sevirim.
ARM mikrodenetleyiciler için kit almak zorundamıyız?
ARM mikrodenetleyicileri programlamak için basit devreler var mı?
Deneme devresi yerine bread board kullansak olmaz mı?
ARM'ları Türkiyede bulabileceğimiz internetten alışveriş yapabileceğimiz yerler var mı?
ARM nin hızı hakkında bilgi verirmisiniz? Mesela picte en çok kullanılan en basitlerden sayılan 16f84 4mhz ile çalışıyor ARM nin en çok kullanılan basit denetleyicileri kaç mhz?
Fiyatları ne kadar?
Özel mesaj okumuyorum, lütfen göndermeyin.

ahmet2004

Arm için Kit almak zorunda değilsin Proteusta ARM var animasyon yaparak kullanabilirsin başlangıç için.

f15eagle

Merhaba

St bir yarışma başlattı ve katılanlara bedava ARM geliştirme kartı veriyor. Çok gelişmiş bir işlemci değil ama yeni başlayanlar için güzel olur diye düşündüm

http://e2e.cizgi-tagem.org/?p=4091 bu yarışmanın duyurusu

http://www.st.com/internet/evalboard/product/250863.jsp  buda gelen kartın özellikleri.

aykut54

STM32 hibe programından kit alanlar oldumu?

Kaç günde elimize ulaşır....

electronblue

Başvuralı 1 ay oldu.. kart mart yok hala ortada