Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

ARM Assembler

Başlatan bunalmis, 09 Mart 2011, 09:42:07

z

ARM assembly icin Keil kullaniyorum. Fakat bana daha yetenekli assembler gerekiyor.

Bir komutun 16 bit yada 32 bit yazimi mumkun. Ben komutu yazip derledigimde derleyicinin daha kisa kod uretmek icin 16 bit komut is goruyorsa 16 bit komutu olmuyorsa 32 bit komutu kullanmasini istiyorum.

Ote yandan sabitlerin tanimli oldugu veri havuzlarini  romda oyle adreslere yerlestirsinki kodlarim 16 bit agirlikli kullanilacak sekilde uretilsin. (Bu bayagi bir zor islem)

Bu tip optimizasyonlar ancak bilgisayar yazilimi ile yapilabilir. Bunlar, program yazanin yeteneklerine birakilirsa bu tip optimizasyonlar yapmak o kadar zor ve usandirici ki isin bu boyutu ana is olan program yazimindan daha cok zaman alir ve sistematik bir seyler de yapmak, yazim cesitliligin fazlaligi acisindan nerede ise imkansiz.

Sonucta bu tip konularda yardimci olan assembler ariyorum.

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

z

Bu tur konulari nerelerde konusuyorlar? Bildigin bir form varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Elle optimizasyon yapmasina yapiyorum da ortaya cikan kodun bir de bahsettigim boyutunda optimizasyonu var. Ancak isin bu boyutu gicik.
Buna kafa yormaya kalkarsam hos olmaz. Bu yuzden isin bu kismini PC ye yikmam lazim.

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

z

Zaten oyle yapiyorum. Bosu bosuna kasmiyor, hiz gerektirmeyen kisimlari C ile gecistiriyorum. Fakat asm olmasi gereken fonksiyonlarimi bir kademe daha ileri optimize edildigini bildigim halde o optimizasyonu elle yapmak iskence gibi.

Sirf bu yuzden akilli bir sey ariyorum. Yoksa da boynumuzu bukecegiz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

CPU Clk 50Mhz ve kodlarimizi flashdan kosturuyoruz herhangi bir wait state gerekmiyor. Kodu flashdan rama tasirsam overclock yapmamda sakinca yok mu demek istiyorsun? Yoksa daha farkli bir aciklamasi mi var?

Eger Ramdan calisan kodun daha hizli calismasi flash'in yavasligindan kaynaklaniyorsa TI bu konuda cok iyi. Bir seminerde TI'in bu konuda DSP lerde oldugu gibi ARM ailesinde de lider oldugu, ustune basa basa vurgulanmisti.

C de yazilmis 3K lik programi  Asm ile 2.5K ya indirdim. Bu benim icin, heryeri C ile yazmamam icin yeterli bir neden.
Yazdigim kritik kodlarin kosma suresini surekli olarak scopla monitor ediyorum. Henuz netlesmese de, 40Mhz DSP ile gerceklestirdigim projemi 50Mhz CM3 de saf asm kodlama ile bile yapamayacakmisim gibi bir his olusmaya basladi. Proje henuz cok baslarda ve scoptaki goruntu beni korkutmaya baslatti.

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

z

Yukarida deginmistim ama simdi tam hatirladim.

TI ARM seminerinde, TI Flash teknolojisinde de lider ve tecrubelerini ARM islemcilere yansitti demislerdi.

Rakamlar tam aklimda degil ve soyle devam ettiler.

300MHZ ARM islemciyi diger firmalar da uretiyor fakat biz Flash'dan zero wait state ile kod kosturabiliyoruz. Diger firmalarin ciplerinde bu hizda calisabilmek icin ya flash erisimine wait state koymak zorunda kaliniyor yada kodlari ramdan kosturmalisiniz demislerdi. (Buradaki 300Mhz rakamindan emin degilim)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

ASM dosyasi icinde asm kodlama yapilirken adres havuzunu kendimiz doldurmak zorunda kaliyorduk. Fakat asm kodlamayi C icinde fonksiyon bazinda yazarsak havuzu C derleyici kendisi olusturuyor, ustelik C kullanimi icin gerekli register tanimlari aynen kullanilabiliyor. Hiz optimizasyonu icin bu sekilde yazim bu tercih edilebilir.

Fakat kod uzunlugu acisindan optimizasyonda tum hamalliklarin elle yapilmasi gerekiyor ve kodlari asm dosyasinda yazmak avantajli hale geliyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Red Suite 4 de CM3 islemcilere aynen Keil'de oldugu gibi C uzantili dosya icinde asm fonksiyon yazabiliyormuyuz?

Derleyiciyi  kurdum ancak asm konusunda Keilin sunduklarinin hicbirini veremiyor izlenimine kapildim.

Bu derleyiciyi kullananlar genel hatlariyla Keil ile mukayese edebilirmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

faltun

Bizde STM32 ortamında Cortex-M3 kullanıyoruz. Yola Keil ve RTX işletim sistemi ile çıktık. Fakat Keil ARM'in olmasına rağmen Assemler'da sorunlar gördük ve C++ kodumuz hatalı olarak compile ediliyordu, hatta bazı standart C++ kalıpları compile edilemiyordu. Sorunlardan bıktık ve sonunda IAR & ThreadX RTOS ortamında karar kıldık. O gündür bu ikisini kullanıyoruz ve çok memnunuz. Ürünlerimiz oldukça optimize, hızlı ve güvenilir çalışıyor. Özellikle ThreadX basit görünmesine rağmen çok yetenekli ve hızlı bir RTOS

z

Keil'de Assembler kullanırken ne tip sorunlar yaşadınız?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

faltun

Temel ihtiyacımız C/C++ mixed kullanmaktı, bu soruna dönüştü. C++ inheritance kullandığımızda bazı interrupt'larımız çalışmıyordu, inheritance kalkınca herşey tekrar yoluna giriyordu. Keil support'ta bir açıklama getirememişti. Bir diğer konu class definition'unda kullandığımız public static değişkenlere diğer classlardan ulaşamıyoduk. Daha doğrusu ulaşıyorduk fakat olmadığı halde 0 değeri gözlemliyorduk. Aynı kod IAR'a geçtiğinde sorunlar ortadan kalkmıştı.

Elektroemre

Alıntı yapılan: gerbay - 17 Aralık 2012, 22:10:15




@gerbay hocam bu pencere sadece özel debuggerlar ile mi aktif oluyor?

speak48

#12
@z hocam hangi dsp nin kodunu cm3 taşıyorsunuz.
dsp den dsp ye fark var ,dsp 10mhz de olsa cm3 yetişemeyebilir. fpu yok simd hele hiç yok.

@ faltun büyük ihtimal keilde ayarlanması gereken bir yer eksik kalmıştır.
keil ds-5 in derleyicilerini kullanıyor.
arm ise ds-5 i öle böyle övmüyor ,
"şimdiye kadar hiçbir derleyici arm işlemcilerini bu kadar iyi anlamamıştır"  diye reklamını yapıyorlar.

@z hocam arm ın  keilin vs... kendi forum siteleri var.
olmadı uzakdoğu sitelerine balmak lazım.
Çin için ggle:  bbs. .cn konu_adı  bölge çin
tayvan kore rus ... nerde bulursan orda

z

Bire bir kod tasimadim da ayni projeyi ARM a gecirmistim.

CM3lere TMS320F240x serisinden tasindim.

Su anda DSClerin 300ns lik ADC haricinda hic bir seyini ozlemiyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

#14
ben olsam sizin yerinizde yine kızacaksınız ama.

ya yaptığım işlerle ilgili coprocessorü olan mcular secerdim.
yada kendim fpga ile yapardım.

o işlemciden bu işlemciye geçme derdi kalmazdı.