The Definetive Guide to the ARM CORTEX-M3 kitabını okumaya başladım şuanda komut setinin anlatıldığı "Instruction Sets" bölümünü okuyorum. Hâliyle ASM olarak anlatım var. Kitabı yazan yazar Mentor Graphics in "Sourcery CodeBench Lite" kitap içinde vermiş olduğu az sayıdaki örnekte bu aracı kullanmış. Bende bu lite versionu edindim. Fakata daha örneklere gele bilmek biraz daha okumam ve iyice özümseme gerek
Bu kitap daha çok Cortex-M3 çekrideğini detaylı anlatmış. Ben ARM için ASM ile kodyazmayı da öğrenmek istiyorum.
Google amca bana bir çok kaynak sunmakta ama bir güzergaha ihtiyacım var nasıl başlamalıyım. yani kısaca bir LED ' flash yaptıracak duruma gelmek için izleyeceğim yol, yöntem ne olmalı?
Teşekürler.
Teşekürler.
Amacım oturup tamamen ASM ile kodyazmak değil. bu işlemcinin çalışmasını bilmeme yetecek kadar. sanırım bu da LED yak södür seviyesine gelmek yerli diye düşünüyorum.
araştırmaya devam.
Assembler öğrenmek istiyorsan daha basit bir mimari seç hocam. 8 bit mesela.
Ama bece C falan kullan. Assembler işini makinaya bırak...
Şu adresteki yazıdan başlamaya karar verdim. http://www.peter-cockerell.net/aalp/html/frames.html (http://www.peter-cockerell.net/aalp/html/frames.html)
The Definetive Guide to the ARM CORTEX-M3 kitap ı ile birlikte okuyacağım. ARM ASM merak edenler için tavsiye ederim.
neden asm?
ARM Cortex çekirdeğinin çalışmasını anlamak isitiyorum.
Yeni başladım bu işlemciye The Definetive Guide to the ARM CORTEX-M3 kitabı içinde sürekli ASM ile örnekler verilmiş.
startup_LPC17xx.s
içeriğini yeni yeni anlamaya başladım. Keli oturmuş bizim için vectör tablosu oluşturmuş. belki kendi projenmizde kendi vektör tablosu oluşturabilir(miy)iz (Nested Vectored Interrupt Controller Table)
The Definetive Guide to the ARM CORTEX-M3 kitabın da verilen örnekleri denemek için bir derleyici gerekmekteydi. Kitapta bunun için Sourcery CodeBench Lite Edition tavsiye ediliyordu.
Kısa bir arma sonunda Mentor Grapichs firmasının bu yazılımı üreten firmayı satın almamış olmasıyal derleyiciyi bu http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ (http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/) adresten download etme gerktiğini keşfettim.
Sourcery CodeBench Lite Edition for ARM EABI. sürümünü seçip kısa bir üyelik formunu doldurdıktan sonra indirme linki adresimize gönderliyor.
Komut satırı derleyicisi olduğu için herhangi bir IDE ortamı bulunmamakta.
kitapta veliren örnekleri denedim bu akşam paylaşacağım.
link için teşekürler.
Adı F ile başlayan bir asm derleyici daha vardı onu ARM sürümünü kullanmayı denedim kitaptaki örnekleri derlemedi hata verdi. Ben raha birşekilde kitaptaki örnekleri yapayım bana yeter. Zira Arm ASM ile kodyazmak beni aşarıyor. :) tabi gerekirsen inline asm kullanılır.
Alıntı yapılan: haydarpasamikro - 27 Nisan 2012, 20:14:37
neden asm?
bu yıl otomasyon fuarını gezenler image processing in yaygın olduğunu görmüşlerdir.benimde bu yaygınlık dikkatimi çekti bir yerli firma yazılımı kendilerinin yazdıklarını söyledi.onlara yazılımı C ile mi yazdınız diye sordum.bana verdikleri cevap
Assembly
sanırım hız önemliyse assembly kullanmak gerekiyor
Hocam sizin inceldeğiniz ve sorduğunuz nasıl bir sistemdi bilmiyorum ama, yerli piyasada yapılan görüntü işleme işlerinin bir çoğu hazır toollar kullanılarak yapılmakta, labwiev gibi antin kuntin toollarla yapıyorlar.
Konu dağılmasın ama yeri gelmişken ekleyeyim görüntü işleme için NI nin Vision Builder programı da çok iş görüyor.
http://www.ni.com/vision/vbai.htm (http://www.ni.com/vision/vbai.htm)
örnek:
ornek1.s
/* 10+9+8+7+5+4+3+2+1 toplaması */
.equ STACK_TOP, 0x20000800
.text
.syntax unified
.thumb
.global _start
.type start , %function
_start:
.word STACK_TOP, start
start:
movs r0, #10
movs r1, #0
loop:
adds r1, r0
subs r0, #1
bne loop
deadloop:
b deadloop
.end
Programımız yukarıda görüldüğü gibi. derleyicimiz komut satırı derleyicisi olduğu için tüm herşeyi elle yapmamız gerekmekte.
c:\>arm-none-eabi-as -mcpu=cortex-m3 -mthumb ornek1.s -o ornek1.o
yukarıda ki ilk komutumuzda; Assembler kullanarak Cotrex M3 işlemcimize thumb komut kümesi ile Obje dosyamızı oluşturuyoruz.
c:\>arm-none-eabi-ld -Ttext 0x0 -o ornek1.out ornek1.o
yukarıda ki ikinci komutumuzda linker kullanarak Obje dosyamızdan OUTput çıktı dosyamızı oluşturuyoruz.
c:\>arm-none-eabi-objcopy -Obinary onrnek1.out ornek1.bin
Yukarıdaki üçüncü komutumuzu kullanarak elde etiğimiz OUTput çıktı dosyamızı BINary formata çeviriyoruz.
c:\>arm-none-eabi-objdump -S ornek1.out > ornek1.list
Son komutumuz ile Disassembled listemizi oluşturuyoruz.
ornek1.out: file format elf32-littlearm
Disassembly of section .text:
00000000 <_start>:
0: 20000800 .word 0x20000800
4: 00000009 .word 0x00000009
00000008 <start>:
8: 200a movs r0, #10
a: 2100 movs r1, #0
0000000c <loop>:
c: 1809 adds r1, r1, r0
e: 3801 subs r0, #1
10: f47f affc bne.w c <loop>
00000014 <deadloop>:
14: f7ff bffe b.w 14 <deadloop>