STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

z

#345
Alıntı YapARM mimarisinde herhangi bir memory adresine direk değer yazabiliyormuyuz? böyle bir opcode var mı ARM da?
ARM mimarisinde boyle bir komut yok. Fakat, bit manuplasyonunda manuple edilebilecek deger ya sifir ya da bir dir. Asagida ne denek istedigimi anlayacaksiniz.

Bakin

R2=0x? ? ? Hedef adreslerden birisi.
R0=0
R1=1

STR  R0,[R2]  // Bununla bir manuplasyon yaptim bunu takip eden satirda
STR  R0,[R2,#4]  // Bununla bir baska manuplasyon yaptim
STR  R1,[R2,#8]  // Bununla bambaska bir baska manuplasyon yaptim
....
....

Bu boye gider.

Ben memorye registersiz deger mi atiyorum da bana bu soruyu yoneltiyorsunuz. Sadece en tepede bir kereye mahsus

R2=0x? ? ? Hedef adres
R0=0
R1=1

atamasi yaptim. Daha sonra da basladim bit manuplasyonu yapmaya. Artik ne R0 ne R1 ne de R2 ile oynuyorum. Anlastikmi?

Burada beni limitleyen ne? Soyleyeyim [R2,#ofset] yaziminda  ofsetin alabilecegi max ve min degerlerler. Bu bana sinir getiriyor. Bu sinirlar icinde kaldigim surece
her bir komutta bambaska bir biti 1 yada sifir yapiyorum.




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

CLR

Alıntı yapılan: bunalmis - 02 Kasım 2011, 21:40:28
Inat eden ben değilim sizsiniz. Cunku vermis oldugum orneklere inat eden sizsiniz.

Ozellikle belirtmeme ragmen her istediginiz bitbanding islemini tek cycle da yapacak kod yazamam 3 asm kod gerektirebilecek durumlar var dedim. Yapmami istediginiz A ve B portunda 10 ve 5 nolu bitleri manuple ettim değilmi?. Daha yuzlerce hatta binlerce ornek de yazabilirim. Bu orneklerin hepsi de tek cycle da bitbanding yapar.

Neyse bildiğini yap, yanlışta ısrar iyi bir davranış değildir. Daha önceki tartışmalarımızda da aynı şeyleri yapmıştın.
Knowledge and Experience are Power

z

Yukarida yazdiklarimi okursan bana hak vereceksin.

Ben seni anladim ama sen anlamamakta israr ediyorsun.

Mesela bana deki bana bir genel amacli fonksiyon yaz

Bu fonksiyona adresi ve bit numarasini vereyim bana tek cycle da manuplasyon yap de. Tek cycle da yapamam.

Fakat bana GPIOA nin 10 nolu pinini ardindan da GPIOB nin 5 nolu bitini tek cycle da manuple et ederim. Ettim de.

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

z

#348
Neyse benim acimdan da tartisma bitmistir.

Fakat  hem eemkutaydan hem de Gerbay asagidaki soruya cevap olacak hizli kosan kodu yazarlarsa sevinirim.

Soru basit.

A[3] seklinde arrayim var.

A[0] ve A[1] in yuksek 4 biti sifirdir.

A[0]'nin dusuk bitleri, A3 A2 A1 A0
A[1]'nin dusuk bitleri, B3 B2 B1 B0  dir.

Program;

A[0] ve A[1] den alacagi bitleri A[2] icine A3 B0 A1 B2 A0 B1 A2 B3 siralamasiyla yazacaktir.

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

CLR

Alıntı yapılan: bunalmis - 02 Kasım 2011, 21:59:55
Yukarida yazdiklarimi okursan bana hak vereceksin.

Ben seni anladim ama sen anlamamakta israr ediyorsun.

Mesela bana deki bana bir genel amacli fonksiyon yaz

Bu fonksiyona adresi ve bit numarasini vereyim bana tek cycle da manuplasyon yap de. Tek cycle da yapamam.

Fakat bana GPIOA nin 10 nolu pinini ardindan da GPIOB nin 5 nolu bitini tek cycle da manuple et ederim. Ettim de.

Asm ve C bilgim oldukça iyidir, bana göre hatalısın. Bitbanding 3 cycle'da, benim yazdığım library 5 cycle'da derleniyor. Tek bit için bit banding 2 cycle avantajlı ama her register adresini tek tek tanımlamak lazım, eğer daha lüks istersen bit isimlerinide tanımlayabilirsin ama aşağıdaki lükse erişmek biraz zor olur. Ve ben istersem aynı anda 3 biti değiştirim bu durumda bit banding 4 cycle yavaş kalır ve 3 kod yazmam gerekir.

[IMG]http://img214.imageshack.us/img214/1103/lib1n.jpg[/img][IMG]http://img213.imageshack.us/img213/7590/lib2.jpg[/img]
[IMG]http://img513.imageshack.us/img513/1979/lib3b.jpg[/img][IMG]http://img214.imageshack.us/img214/3905/lib4.jpg[/img]

Knowledge and Experience are Power

z

Sadece sordugum soruya cevap olacak kodu yazmaniz benim icin fazlasiyla yeterli olacaktir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

CLR

Alıntı yapılan: bunalmis - 02 Kasım 2011, 22:36:03
Sadece sordugum soruya cevap olacak kodu yazmaniz benim icin fazlasiyla yeterli olacaktir.

Bende soru yazayım sizde bitbanding ile onu bana yazın.

STM içindeki Gpioa_odr, b,c,d odr'nin gerçek adreslerini kullanarak bir dizi oluşturun. Bu  diziyi ve adresleri kullanarak, sırasıyla registerlerin 10.bitlerini bitbanding kullanarak set ediniz?

Knowledge and Experience are Power

z

#352
Alıntı yapılan: gerbay - 02 Kasım 2011, 22:51:12
hocam fantazimi yoksa pratikte faydası olacak birşey mi?
hayatımda hiç böyle birşeye ihtiyaç duymadım

Bit manuplasyonu icin guzel bir ornek. Kriptolojide benzer uygulamalari var.

Bir zamanlar cift yuzlu plaket yaptiramazken pcbmi tek yuzde cizer ve epromun datalarini ayni sirayi takip etmeden cpu nun datalarina nasil atlamasiz bagliyorsam oyle baglardim. Benzer sekilde adres bacaklarini da atlama vs olmaycak sekilde baglardim. Ancak eproma atilacak verilerin bu caprazlamadan etkilenmemesi icin aynen soruma benzer sekilde yeni bastan siralanmasi gerekirdi. Bunun avantaji ne olurdu? Tek yuzlu miniminnacik plakete sigdirilmis cpu karti.

Sanirim gercek bir uygulama sorusu.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#353
Alıntı yapılan: eemkutay - 02 Kasım 2011, 22:52:01
Bende soru yazayım sizde bitbanding ile onu bana yazın.

STM içindeki Gpioa_odr, b,c,d odr'nin gerçek adreslerini kullanarak bir dizi oluşturun. Bu  diziyi ve adresleri kullanarak, sırasıyla registerlerin 10.bitlerini bitbanding kullanarak set ediniz?

Istiyorsan yazarim ancak hizli calisan kod istersen bitband vs yonteme kendim karar veririm. Birde C mi olsun?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

CLR

Alıntı yapılan: bunalmis - 02 Kasım 2011, 22:58:23

Istiyorsan yazarim ancak hizli calisan kod istersen bitband vs yonteme kendim karar veririm. Birde C mi olsun?

Mesele C ile program yazmak değil ki amacımız bit banding'i test etmek, burada değişken adresler var ve program çalışırken bu adresler alınıyor bu durumda bit banding ne işe yarayacak bakalım. Yazacaksan bit set etmek için tek seçeneğin var ve bit banding kullanmak.
Knowledge and Experience are Power

ErsinErce

Şu an ki konuyla alakasız ama aklıma geldi diğer başlık kapalı olduğundan buradan sormak istedim;
siparişler verileli 1 hafta oldu galiba sonrasında bir bilgilendirilme yapılmadı haftaya kartlar gelecek mi bir bilginiz var mı?

bir de C konusunda herkesin yeterli düzeye gelmesine yetecek kadar örnekler verildi sanıyorum,
işlemcimiz üzerinde kaldığımız yerden ne zaman devam edebiliriz?

z

Anladim tamam yazayim. Aksilik cikarsa en gec yarina siteye koyarim.

Harfi harfine asagidaki  soru icin kod yazacagim. (Seni sasirtacagim)

STM içindeki Gpioa_odr, b,c,d odr'nin gerçek adreslerini kullanarak bir dizi oluşturun. Bu  diziyi ve adresleri kullanarak, sırasıyla registerlerin 10.bitlerini bitbanding kullanarak set ediniz?

Sende benim soruma ugras.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gambit1244

Alıntı yapılan: ErsinErce - 02 Kasım 2011, 23:13:46
Şu an ki konuyla alakasız ama aklıma geldi diğer başlık kapalı olduğundan buradan sormak istedim;
siparişler verileli 1 hafta oldu galiba sonrasında bir bilgilendirilme yapılmadı haftaya kartlar gelecek mi bir bilginiz var mı?

bir de C konusunda herkesin yeterli düzeye gelmesine yetecek kadar örnekler verildi sanıyorum,
işlemcimiz üzerinde kaldığımız yerden ne zaman devam edebiliriz?

+1
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

CLR

Alıntı yapılan: bunalmis - 02 Kasım 2011, 23:18:10
Anladim tamam yazayim. Aksilik cikarsa en gec yarina siteye koyarim.

Harfi harfine asagidaki  soru icin kod yazacagim. (Seni sasirtacagim)

STM içindeki Gpioa_odr, b,c,d odr'nin gerçek adreslerini kullanarak bir dizi oluşturun. Bu  diziyi ve adresleri kullanarak, sırasıyla registerlerin 10.bitlerini bitbanding kullanarak set ediniz?

Sende benim soruma ugras.

Tamam, sende bit banding'in tek cycle'da bit set reset işlemini yapacağın bu örnekte yaparsın. 
Knowledge and Experience are Power

z

Bir dakika tek cycle demedik. Nerden cikti bu.  Adres tablosundan adresi okuyup gelmek zaten bir kac cycle alir.
Adresleri de bitbanding adres yerlestirmeme izin vermeyip fiziksel port adresi kullan dedin. Bit band adresleri olusturmam bile bir kac cycle alir.
10 nolu bitleri set edecektim simdi de set reset cikti.

Yok yok saka bu. Yada kabus.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com