ARM7 Assembly – Port On/Off
|Merhaba, Şimdiki uygulamamız ARM7 assembly diliyle port on/off (led on/off veya röle vs yapılabilir) işlemini gerçekleştireceğiz. Microcontroller’lara ilk olarak assembly diliyle başladığım ve işlemci donanımını tanımayı kolaylaştırdığı için arm işlemcilere de ilk geçtiğimde arm assembly dilini inceledim. Çok fonksiyonlu bir komut seti var ama tabii ki kullanımı oldukça zor. Ayrıca 32bit ile çalışmanın getirdiği zorluklarda var. Gerçek hayatta gerektiği yerde C içinde inline kullanmak daha mantıklı. İnternette arm assembly örnekleri gerçekten çok az bu nedenle blogumda arm7 asm’den bazı örnekler olsun istiyorum ve ayrıca arm assembly’nin nasıl olduğunu merak edenler olabilir.
İlk projemiz oldukça basit, port on/off yapacağız, derleyici olarak keil kullanacağım. Bilindiği gibi keil, C compiler’ın yanısıra assembler/simulatör ve debugger olarakta kullanılabilmektedir. Detayları için www.keil.com’dan öğrenebilirsiniz.
Kullanacağım işlemci (LPC2148) ARM7TDMI tabanlı bir işlemci olduğu için ARM7TDMI assembly komut setini kullanıyoruz. Ayrıca buna ek olarak asm için http://www.peter-cockerell.net/aalp/html/frames.html adresinden faydalanabilirsiniz.
;**************************************************************************** ; Aykut ULUSAN , Elektronik Mühendisi , IZMIR ; Arm7 assembly ;**************************************************************************** INCLUDE LPC2294.inc ; header ekliyelim LED EQU 0x02000000 ; led portu P0.25 EXPORT __main ; Main fonksiyonu program disinda kullanilabilir AREA LED_ONOFF,CODE,READONLY ; __main LDR R0,=PINSEL0 ; PINSEL0'in adresini R0 registerine at MOV R1,#0x0 ; R1=0 STR R1,[R0] ; PINSEL0=0 LDR R0,=PINSEL1 ; PINSEL1=0 STR R1,[R0] LDR R0,=IO0DIR ; Led pini cikis LDR R1,=LED ; led adresini yukle STR R1,[R0] ; led adres icerigini IO0DIR'a LOOP LDR R1,=LED ; led adresini yukle ; led LDR R0,=IO0SET ; port set STR R1,[R0] BL DLY ; led LDR R0,=IO0CLR ; port low STR R1,[R0] BL DLY ; altprograma B LOOP DLY MOV R7,#0x000FF000 ; DLY_1 SUBS R7,R7,#1 ; R7-=1 BNE DLY_1 MOV PC,LR ; link registerini geri yukle ALIGN ; memory dizilisi 4'er byte LTORG ; ARM komutlari icin PC+/-4K, Trumb komutlari icin PC+/-1K END
Sonuç olarak ;
Proje resimleri aşağıdadır. Önce scop probları , LPC2148 Board’ta ilgili port pinine bağlanır ve sonuç scop ekranında görülmektedir.
Sayfanızı takip ediyorum, fakat sizden bir ricam olacak.arm7 ile ilgili türkçe dökümanlara ulaşmak istiyorum.Bu konuda yardımcı olabilirseniz sevinirim.İlginize şimdiden teşekkür ederim.Mailinizi sabırsızlıkla bekleyeceğim.
Mrb,
Benim bildiğim kadarıyla Arm7 ile ilgili türkçe döküman neyazık ki yok. İngilizce kaynaklardan öğrenebilirsiniz. Bende ingilizce kaynaklardan öğrendim ve halen de yeni bilgiler öğrenmeye çalışıyorum. Yeterli İngilizceye sahip bir kişi, elimde türkçe kaynak olsun diye çeviri yapmaz, bu nedenle türkçe kaynak bulmanız güç.
İyi çalışmalar.
merhaba
elımde bulunan bır program var ve bu program ın ghost unu uygun bır bılgısayara kurdugumda program calısıyor ve rs232 de portundan cıkıs verıyor bu programın rs232 cıkıs kodlarınıogrenmek mumkunmu ona gore devre tasarımı yaptıracagım (devre seması elımde var ) yardımcı olursanız sevınırım
ıyı calısmalar