Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: z - 17 Haziran 2014, 03:06:24

Başlık: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 17 Haziran 2014, 03:06:24
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.

Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: ErsinErce - 17 Haziran 2014, 08:27:33
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 (http://docs.lpcware.com/usbromlib/v1.0/_page__developing_with_u_s_b_d.html)
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 17 Haziran 2014, 11:36:33
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.

Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 17 Haziran 2014, 12:28:55
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.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: speak48 - 17 Haziran 2014, 13:39:35
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.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 17 Haziran 2014, 13:56:27
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.

Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 17 Haziran 2014, 22:23:01
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.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 18 Haziran 2014, 00:02:42
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.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: एक होना - 18 Haziran 2014, 00:10:53
hocam kebabtan sonra köfteyide kendinize ısmarlayacaksınız gibi :) et sağlığa zararlıdır.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: z - 18 Haziran 2014, 01:47:11
Daha dur hamsi var sirada.
Başlık: Ynt: Labellari yada fonksiyon adreslerini bir dosyaya yazdirmak (Kofte odullu)
Gönderen: एक होना - 18 Haziran 2014, 02:19:52
hocam bu mevsim de hamsi var mı ki ?

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