Furkan KELEŞOĞLU
Aktif Üye
- Katılım
- 12 Ekim 2019
- Mesajlar
- 497
Evet geçenlerde .hex file dosyasının iceriğini öğrenmeye calışmıştık. Yakın zamanda ise 18F serisi için assembly dilinde yazılmış bir bootloader buldum. philpem abimiz yazmış. http://www.philpem.me.uk/elec/pic/
ve 18F452 de denemiş ve calıştığını söylemiş. bunu duyduktan sonra hemen bootloader'i ICSP programlayıcı ile 18F452 ye yükledim. daha sonra meşhur PL2303 USB to TTL ile uart hattını PC nin USB sine bağladım. ilk bir yürüyen led kodu yazıp B portundaki ledleri bir sağa bir sola yürüttüm baktım calışıyor. daha sonra assembly kodunu inceledim baya bir şey anladım. ama burda da olayı karıştıran arayüz yazılımı. çünkü ikisi birbiriyle haberleşiyor ve herif kendi algoritmasını kurmuş arayüzüde delphi 7 ile yazmış. onlar mevcut olduğu zaman ben ortalıkta yoktum daha.
Her neyse dün logic analyzer hakkında yazı yazıyordum. Ve bir örnek için UART hattından text gönderen bir program yazdım. ve logic analyzer ile bu texti yakalayacaktım. ama yazdığım programın .hex uzantısını bootloader üzerinden pice yükleldiğim zaman. uart hattından yazdırdığım text değil ardı ardına "H" karakteri gelmeye başladı.
Bu "H" karakteri bootloaderin komutu. arayüze boot modundayım demek için "H" karakteri gönderiyor daha sonra arayüz bunu alınca başlıyor programlamaya. fakat garip olan bir diğer şey ise boot loader "H" Karakterini gönderdikten sonra 100ms bekliyor eğer yanıt gelmesse ana programa dallanıyor. ama Benim yazdığım UART kodunu yükleyince ana progorama dallanmıyor habire boot moduna giriyor tekrar tekrar giriyor diyorum. çünkü assembly kodunda PC(HOST) dan bir veri almazsa ana program adresine dallan diye komut var. yani oraya dallanmıyor dallanıyorsada tekrardan boot moduna dönüp geliyor.
Şimdi kafamı karıştıran şey. LED leri yürttüğüm programda sıkıntısız calıştığı halde ( bir kaç kez denedimm ) bir şey yoktu. normaldi.
Ama UART üzerinden text göndereceğim bir program yazıp yüklediğim zaman boot modundan bir türlü cıkıp ana programma gitmiyor veya gidiyor ama ne oluyorsa reset vektörüne dönüp boot moduna tekrar giriyor galiba.
Sonra şöyle bir şey düşündüm. BootLoader'de UART donanımını kullanıyor benim yazdığım programda UART donanımını kullanıyor bu ikisi cakışıyormu acaba cakışıyor ise bile sadece SFR lerde cakışıyordur. yani UARTın registerlerinde benim UART kodum ile bootloader kodunun UARTI yapılandırmma ayarları farklı. demek benim kod bir şeyi değiştiriyor ki bootloaderi de etkiliyor.
Burada acaba Hexmate iş görür mü diye düşündüm ama hem anlamadım hemde kullanamadım.
Ayrıca benim yazdığım UART_Deneme kodunu ICSP denn yükleyip test ettim gayet güzel calışıyor . text basıyor UART hattına. Bunun sebebi nedir veya nasıl cözeriz bootloaderi yazan arkadaşa mail attım ama dönmedi.
ve 18F452 de denemiş ve calıştığını söylemiş. bunu duyduktan sonra hemen bootloader'i ICSP programlayıcı ile 18F452 ye yükledim. daha sonra meşhur PL2303 USB to TTL ile uart hattını PC nin USB sine bağladım. ilk bir yürüyen led kodu yazıp B portundaki ledleri bir sağa bir sola yürüttüm baktım calışıyor. daha sonra assembly kodunu inceledim baya bir şey anladım. ama burda da olayı karıştıran arayüz yazılımı. çünkü ikisi birbiriyle haberleşiyor ve herif kendi algoritmasını kurmuş arayüzüde delphi 7 ile yazmış. onlar mevcut olduğu zaman ben ortalıkta yoktum daha.
Her neyse dün logic analyzer hakkında yazı yazıyordum. Ve bir örnek için UART hattından text gönderen bir program yazdım. ve logic analyzer ile bu texti yakalayacaktım. ama yazdığım programın .hex uzantısını bootloader üzerinden pice yükleldiğim zaman. uart hattından yazdırdığım text değil ardı ardına "H" karakteri gelmeye başladı.
Bu "H" karakteri bootloaderin komutu. arayüze boot modundayım demek için "H" karakteri gönderiyor daha sonra arayüz bunu alınca başlıyor programlamaya. fakat garip olan bir diğer şey ise boot loader "H" Karakterini gönderdikten sonra 100ms bekliyor eğer yanıt gelmesse ana programa dallanıyor. ama Benim yazdığım UART kodunu yükleyince ana progorama dallanmıyor habire boot moduna giriyor tekrar tekrar giriyor diyorum. çünkü assembly kodunda PC(HOST) dan bir veri almazsa ana program adresine dallan diye komut var. yani oraya dallanmıyor dallanıyorsada tekrardan boot moduna dönüp geliyor.
Şimdi kafamı karıştıran şey. LED leri yürttüğüm programda sıkıntısız calıştığı halde ( bir kaç kez denedimm ) bir şey yoktu. normaldi.
Ama UART üzerinden text göndereceğim bir program yazıp yüklediğim zaman boot modundan bir türlü cıkıp ana programma gitmiyor veya gidiyor ama ne oluyorsa reset vektörüne dönüp boot moduna tekrar giriyor galiba.
Sonra şöyle bir şey düşündüm. BootLoader'de UART donanımını kullanıyor benim yazdığım programda UART donanımını kullanıyor bu ikisi cakışıyormu acaba cakışıyor ise bile sadece SFR lerde cakışıyordur. yani UARTın registerlerinde benim UART kodum ile bootloader kodunun UARTI yapılandırmma ayarları farklı. demek benim kod bir şeyi değiştiriyor ki bootloaderi de etkiliyor.
Burada acaba Hexmate iş görür mü diye düşündüm ama hem anlamadım hemde kullanamadım.
Ayrıca benim yazdığım UART_Deneme kodunu ICSP denn yükleyip test ettim gayet güzel calışıyor . text basıyor UART hattına. Bunun sebebi nedir veya nasıl cözeriz bootloaderi yazan arkadaşa mail attım ama dönmedi.