Arm Programlama Hangi Dil

Başlatan erkan06, 20 Mayıs 2008, 14:33:28

erkan06

arkadaşlar bu armlarla ilgili bir sorum olacak.. Pic'i C ve Assembly'le programlayabiliyoruz.
Armları programlamak için Assembly ve C yeterli olur mu yoksa C++ da gerekli mi?
İyi çalışmalar!
Ne mutlu Türküm diyene!

Cetinal

ansi-c olur ;)

keil , iar, winarm derleyicileri var arm için

keil i tek geçerim

controller

çoğu uygulama için c yeterli olacaktır. çok büyük projelerde c++ kullanmak gerekebilir. benim şu anda lpc2368 için yazdığım bir program var ve program git gide büyüyor. bu kadar büyüyeceğini tahmin etseydim baştan c++ ile yazmaya başlardım. c++ daki özellikle class yapısının çok avantajları var. ama dediğim gibi başlangıç için c yeterlidir.
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

erkan06

Sağolun arkadaşlar biz C ile olaylara girelim. Dediğiniz gibi C++ ile ilerleyen zamanlarda büyük projeleri yapmaya çalışırız artık.

Bir de bende uVision2 V2.40a ile uVision3 V3.0 var.
Bunlarda bir proje oluşturmak için başlangıçta mikroişlemci seçecek iken atmel altında geçen Arm7 tabanlı işlemciler mevcut. Anladığım kadarıyla Arm7.. ve Arm9.. vs şekilde mikrodenetleyicilerin olması gerekmez mi? Ya da benim Keil'lerin versiyonu mu eski acaba?
Ne mutlu Türküm diyene!

piedos

luminary micronun arm cortex i için keil ile C++ da basit bi program yazmıştım (oled lcdye)

Gerçekten C++ la yazmak çok heyecan verici, sınıf atlamış gibi oluyosunuz :D

Ama C ye göre acayip yer tutar hele memory allocation çok yer tutuyo, gereksizse C kullanmak mantıklı

bu arada pic18 için iar Compiler ile C++ yazabilirsiniz, tabii program kodu aynı şekilde şişiyor
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

erkan06

Evet, Cpp'la yapılan uygulamada programın hafızada daha fazla yer kapladığını duymuştum. Ancak dediğin gibi Class, nesne gibi OOP yi anımsatan yapıların embedded design içinde yerini alması ayrı bir güzellik ve profesyonellik gösteriyor. İşte sonuçta ihtiyaca göre C ile yeterli görülebilecek bir uygulamada C, daha kastırıcı bir proje için ise C++ düşünülebilir...  8)
Ne mutlu Türküm diyene!

chorckbey

ARKADAŞLAR ARM MİKRO DENETLEYİCİLERİNİ ANLATAN ÖRNEK ANLATIMLI KİTAP VEYA DÖKÜMAN YADA BUNUN KURSU VARMI BEN BUNU NASIL ÖĞRENEBİLİRİM ŞİMDİDEN TEŞEKKÜR EDERİM

riggs

NXP nin uygulama notlarını(aplication notes) ve sectiğin denetleyicinin(lpc2000 serisi olavilir) user manuel ini kullanara ogrenebilirsin...

Asof544

Merhaba arm için sadece assembly blilmek yeterli olurmu illa c dili mi gererkli?

MC_Skywalker

ARM için ASM ile kod yazmak sandığın kadar olay değil.

şurdan başlaya bilirisin ----> http://www.peter-cockerell.net/aalp/

stm

bu konular bazen kafamı çok karıştırıyor.

çok sayıda derleyici var programlama dilleri var bunları ortak yanları  öyleki kafamda soracağım soruyu bile oluşturamadım.

mesala c temel dili var

pic c, pic ccs c , mikro c, jal    ortak yanları nelerdir.  yani bunların temeli aynımı birini öğrenince tüm c dilerinin temelini öğrenmiş olurmuyum?. aralarındaki farklar nelerdir değişken tanımlamalarımı fonksiyon yazım şekillerimi işlemci pin tanımlarımı ?
ben şimdiye kadar ccs c ile çalışıyordum işime yetecek kadar öğrendim eksiklerim var elbette ama temelini öğrendim diye düşünüyorum şimdi ise arm işlemcilere geçmek istiyorum stm32xx iler programlamak istiyorum mikro c  ile arm programlama kitabınıda aldım .
mikro c,  c dilinden nekadar farklı mikro c öğrenirsem c dilini öğrenmiş olurmuyum?.

birisi çıkıpta şu diller konusunu aydınlığa kavuşturacak bir yazı yazsa ne iyi olurdu.

MC_Skywalker

#11
C dili  tek bir dil dir. ANSI standarları ile tüm özellikleri belirlenmiştir. C++ gelince C dilin eksilerini ortadan kaldırmak amacıyla C dilinin temlleri alınarak geliştirilmiş bir dildir.
yani C++ ta C söz dizimi ile kod yazılır. Hatta nesne yönelim kısmını kullanmadan yazdıklarımız için C dersek yanlış dememiş oluruz.

fakat dil tek olsada derleyiciler tek değildir. bir çok firma CPU üretiğiiçin derleyicide çeşitidir.  C/C++ dilinde geliştirme yaptığımızda  tüm dosyalar tek tek derleninir OBJ kodu elde dilir daha sonra linker devreye gire ve tüm OBJ dosylarını varsa önceden derlenmiş LIB dosyalarını bağlar ve hedef CPU çekirdeğinin anlayacağı BIN/HEX formata dönüştürü.

C öğrendiğinizde PicC, CSC C vb sizin için fark etmez sonuçta aynı cümleri kullanarak kodyazarsınız ama ANSI C standardına uymayanlarda biraz o IDE/derleyicinin dökümanlarına göz atarak kod yazarsınız.

gelelim işin civcivli kısmına, yani Register (kaydediciler/yazmaçlar) arkadaşlara.  PIC sersinde  tüm serilerinde registerler aynıdır. fakat ARM çekirdeği kullanan farklı üreticilerin register isimleri ve boyutları değişmekte.

örnek vercek olursak STM, NXP de GPIO kontrol registerlerin 32bit olarak kontrol eder ve tanımlarsın fakat Ti de (Tivac C) 32bitlik register 8bit olarak bölümlenerek ayrı ayrı kontrol edilir.

JAVA

java C dili cümle yapısı ele alınarak CPU dan bağımısı eliştirilmiş bir dildir. JAVA ile yazılan kod derlenmez runtime adındaki ara katmanın anlayacağı şekilde byte coda çevrilir. Runtime de CPU ya kodları işlemesi için aracılık yapar. .NET java  ya rakiptir.

bir dil doğrudan çalıştırla bilri çıktı vermiyorsa o derleyiciye sahip değildir.  Yani PICBASIC ile yazdığınız da derle tuşuna bastığınızda yazdığınız kod yorumlanır ve ASM koduna çevrilip ASM derleyicisine gönrlirip derlenir ve HEX elde edilir.

Keil/cocox/lpcexpresso  bunlar entegre geliştirme ortamıdır. içinde kod yazacağınız bir metin editörü ve varsa kendilerine ait derleyeci yoksa üçüncü taraf derleyici barındırılar.

Asof544

Yani iyi derecede asm bilmek gerekiyor yoksa farklı o lan nedir arm a özel asm falan mı var?

z

ASM ile kod yazmanı gerektiren çok özel durumlar yoksa ARM işlemcilerle çalışmak için ASM bilmen gerekmiyor. Herhangi bir üst seviye dille çalışabilirsin.

ARM işlemcilerin komut kümesi çok zengin olduğu için komutları öğrenmen çok zaman alır. Fakat komutları öğrendikten sonra ASM program yazmak 8/16 bit işlemcilere ASM ile program yazmaya kıyasla daha kolaydır.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Asof544

ASM yazmak istiyorum bununle ilgili dökümanı olan varsa çok minettar kalırım.