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!
ansi-c olur ;)
keil , iar, winarm derleyicileri var arm için
keil i tek geçerim
ç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.
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?
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
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)
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
NXP nin uygulama notlarını(aplication notes) ve sectiğin denetleyicinin(lpc2000 serisi olavilir) user manuel ini kullanara ogrenebilirsin...
Merhaba arm için sadece assembly blilmek yeterli olurmu illa c dili mi gererkli?
ARM için ASM ile kod yazmak sandığın kadar olay değil.
şurdan başlaya bilirisin ----> http://www.peter-cockerell.net/aalp/ (http://www.peter-cockerell.net/aalp/)
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.
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.
Yani iyi derecede asm bilmek gerekiyor yoksa farklı o lan nedir arm a özel asm falan mı var?
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.
ASM yazmak istiyorum bununle ilgili dökümanı olan varsa çok minettar kalırım.
İnternette özellikle ARM'ın kendi sitesinde tüm komutlar anlatılıyor.
CRC basımevinin ARM Assembly Language diye bir kitabı var.
http://www.crcpress.com/product/isbn/9781439806104 (http://www.crcpress.com/product/isbn/9781439806104)
Daha ucuza da bulabilirsin. Almak istersen 100$ a veririm.
ARM and Thumb-2 Instruction Set Quick Reference Card
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001m/QRC0001_UAL.pdf (http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001m/QRC0001_UAL.pdf)