Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)

Başlatan z, 17 Haziran 2014, 03:06:24

z

Projemdeki bazi fonksiyonlarin adreslerinin, derleme islemi asamasinda (daha dogrusu link islemi sonrasinda) Keil'deki kodlarimin satir aralarinda verecegim bazi ozel komutlar sayesinde bir dosya icine otomatik olarak konmasini arzu ediyorum.

Mesela soyle

xxxx   "fonk1 etiketinin adresi ",fonk1 (Anlami fonk1 in flashdaki adresini PC de bir dosyaya yaz)

fonk1     bla
             bla
             bla

Eger amacim kafanizda sekillenmediyse asil amacimi yazayim.

Cipe iki proje dosyasi yukleyecegim.

1. projede fonk1 fonksiyonu olacak.

2. projede ise fonk1 labelina ait hic bilgi olmadigi icin flashdaki fonk1 i cagirmak icin hangi adresi kullanacagimi bilemem. Mecburen bu bilgiyi 2. proje de bir sekilde vermeliyim. (software interrupt, SVC gibi metodlari bu asamada kullanmak istemiyorum)

Eger 1 proje derlenirken bir dosya icinde adresler olusursa bu bilgileri dogrudan 2. proje kodlarima kolayca eklerim su anda istedigim bu.

1. projede degisiklik yapip derledikce kayan adresler otomatik olarak yeniden olussun istiyorum.

PC de bir program yazip map file'dan vs aradigim bilgileri cekebilirim ama Keil'de bu ozellik varsa onu kullanmak isterim.

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

ErsinErce

LPC serisinde usb rutinlerini direk çipe gömüp dediğiniz yapıyı uygulamışlar hocam
örnek uygulamarında nasıl yaptıkları çözülebilir belki

http://docs.lpcware.com/usbromlib/v1.0/_page__developing_with_u_s_b_d.html

z

Hocam DSO-Quad ın kaynak kodlarına bakmadım. Bunun için boş ve geniş zamana ihtiyacım var.

Istediğimi Keil yapabilir umudum var.

Çaresiz kalırsam map file'ı okuyup yorumlayan bir program yazacağım.

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

z

Hocam kocaman kodu incelemeye gerçekten zamanım yok. (Aslında bu bahane tabiki)

Kodu incelemek için sakin kafamda hiç bir şey olmadığı bir dönem gerekiyor.

Yapar dediğin şeyi neden doğrudan yazmıyorsun?

İhtiyacım olan if, else, gibi derleyiciyi yönlendiren bir komut sadece.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

eğer 1. proje tamamsa
fonsiyonun adresini sabit yapamıyor musunuz.
biraz fuzuli yer harcana bilinir ama sabit adresle birçok sıkıntı gider.

z

Tek fonksiyon olsa sorun değil de çokca fonksiyonum var.

Edit:

Fonksiyon tablosu yapmak, SVC kullanmak da işime gelmiyor. Bir adresi çağıracağım diye register kullanmak istemiyorum.

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

z

Bu sorun kabak tadi verdi.

Hangi yola girersem gireyim sorunlu. Bayagi bir kod yazmak gerekiyor.

SVC ile yapayim dedim bu kez de guzel bir problemle karsilastim.

Benzetme yaparak soruyu degistireyim.

Bir interrupt fonksiyonu yazin.

Bu fonksiyon icinde Delay komutu gibi uzunca zaman alan bir komut kullanamayiz. Ama killik yapacagim,  delay komutunu asagidaki sekilde isletecegiz.

---------

Interrupt rutinine girince stackta oynayip 3 kagit yapacagiz ve hemen ardindan interrupt rutininden cikacagiz.

MCU int rutininden cikinca stackta kayitli return adrese donecektir. Fakat biz stackdaki verilerle oynadigimiz icin int rutininden cikinca ana programda kesintiye ugranilan yere değil delay rutinine gidecek.

Delay rutininden geri donerken ise ilk basta interrupta girdigimizde terketmek zorunda kaldigimiz yarida kalmis ana programa gidecegiz.

Tabiki olmazsa olmaz sart, int oncesi ve sonrasi hic bir register degismemis olacak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Cok kolay sekilde hallettim.

1. projede adresini kesin bildigim yere dallanma fonksiyonumu yazdim. (Reset programinin civari)

Buradaki fonksiyon Bir registerin icerigine gore istenen fonksiyonlari cagiriyor. (TBL tipi komutla da yapabilirdim.)

2. projede ise;

2. projenin flasha yerlesecegi adres bilinen bir adres oldugu icin hemen buraya fonksiyon cagiran  dallanma komutumu yazdim.

Aynen su sekilde;

Dallan      B     Dallan - 0xblablabla


blabla adresi Dallan - 1. projedeki fonksiyon cagiran fonksiyonun adresi

Artik hangi programi cagirmak istiyorsam registere onun kodunu yerlestirip 
BL  Dallan
demem yetiyor.


B   0xblabla gibi sayisal bir adresi cagiran komut yazmama keil  kizdigi icin bu yola basvurdum.

BLX tarzinda register icerigine dallanan bir komut icin registere deger de yukleyebilirdik ama yukarida verdigim cozum daha kisa cozum oldu.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

एक होना

hocam kebabtan sonra köfteyide kendinize ısmarlayacaksınız gibi :) et sağlığa zararlıdır.

z

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

एक होना

hocam bu mevsim de hamsi var mı ki ?

sanırım işlerinizi bitirene kadar baya bir ziyafet olacak gibi :)