Boot Loader Yazmaya calışıyoruz.

Gokrtl

Gökhan Kartal
Staff member

Okadar fazla sorun çıktıki herşeyde en son lanet olsun dedim.
atol() fonksiyonunu kullandım cünkü en stabil bu fonksiyonla calıştı atol() kullanınca adresi desimal göndermek zorunda kaldım.
Ayrıca gönderdiğim DATA yıda verdiğim adresin tam ortasına yazıyordu bayağı denedim sonunda atol() fonksiyonunu kullandım. baya bir deneme yaptığım için biraz karışık ana program biraz düzenleyip githuba yükleyeceğim. zaten bunda UART üzerinden terminal vasıtasıyla kullanıcı ile haberleştiği için biraz karışık. asıl bootloader kısmında baya kücülecek. neyse bu akşamlık bu kadar.
Bazen biraz ara vermek iyi gelir. Aynı şey üzerinde günlerce çalışınca şahsen ben bildiğimi de unutuyorum. İçinden çıkamadığım bir şeye 3-5 gün sonra bakınca "bu kadar kolaymıymış" veya "ben bunu neden düşünemedim" dediğim çok oluyor. ;)
 

Furkan KELEŞOĞLU

Kayıtlı Üye
Bazen biraz ara vermek iyi gelir. Aynı şey üzerinde günlerce çalışınca şahsen ben bildiğimi de unutuyorum. İçinden çıkamadığım bir şeye 3-5 gün sonra bakınca "bu kadar kolaymıymış" veya "ben bunu neden düşünemedim" dediğim çok oluyor. ;)
Aynen Katılıyorum sana. Fakat burada ki soruna 5 değil 10 gün sonrada baksan aynı kalacak benlik bir şey yok. IDE'nin saçmalamasından ibaret. Böyle beni yoracak hatalar ile karşılaşmasaydım. bugün arayüzü bitiriyor olurduk. ve şevkim de bu kadar kırılmazdı.

Bundan sonra geriye kalan arayüzü yapmak ve haberleşme için bir standart belirlemek onuda zaten @taydin abi bir kaç gün önce Zmodem'i araştır demişti , baktım onlara. aslında bu application notlarında da anlatılmış biraz. neyse calışmaya hırpalanmaya devam :D
 
Son düzenleme:

Baran EKREM

Kayıtlı Üye
@Furkan KELEŞOĞLU şuanda Microchip platformu seni çok yorar.
Çünkü bootloader bir flash write/erase den ibaret değil. Bunun daha Memory Düzenlemesi, "Code execution from RAM" gibi konular var.
ARM tabanlı olan STM32'lerden bir tane alıp GCC ve STD Library ile daha rahat çalışabilirsin.
Bu arada HEX işi için BIN dosyasınada bak.
Mesela KEIL'de bir komut ile direk BIN file çıktısı alabilirsin.
Hatta pythonda HEX->BIN Converter yap bir tane.
Bootloader işinin sonu yok.
SD Card bootloader'ı yapmaya çalış. (İster hex olarak at ister bin olarak)

Bu arada her şeyden önce "State Machine" kavramını öğren.
Gömülü sistemlerde SM bu işin bel kemiğidir.
 

Furkan KELEŞOĞLU

Kayıtlı Üye
Evet Hafıza düzenlemesini biliyorum. bunun icin IDE nin linker ayarlarını karıştırmıştım ve gaiba yanılmıyorsam offset ayarları vardı veya ASM başlıkları altında istediğim adresten itibaren kodu işletecektim. bir kaç yol geldi aklıma fakat zamanım olmadığı için denemedim hem IDE nin cıkardığı sorunlar beni epey yordu.

STM32 ile calışacağım bundan sonra elimde 2 adet geliştirme kartı var almıştım daha önceden fakat ben bir şeyleri hazır yapmaktansa aylar bile alsa benim için herşeyi sıfırdan yapmayı seviyorum hobi olarak tabi iş olursa hangi yol kolay ve hızlı ise onu secerim. Fakat atollic ve diğer tool lara alışmam gerekecek.

Hex dosyasını neden BIN dosyasına ceviriyoruz orayı anlamadım. bilmediğim bir şey olabilir. hani kolaylık mı sağlayacak bana sağlayacak ise nedir ?

evet python ile ilgili bir calışmamda ayrıca olacak zaten wp grubunda beraberiz python kursunda. fakat zamanım olmadığı için o derslere bile doğru düzgün katılamıyorum.

State Machine kavramını evet daha öncede duydum hatta embedded system alanında ileri seviye bir programlamada önemini gördüm ve hatta DÖNGÜ lerden nasıl kaçıldığını gördüm. ama işte hepsini gelitşirmek için zamana ihtiyac var ve bu ben de tam olarak şu aralar olmayan bir şey :D

aslında şu MPLAB XC8 böyle dandikler cıkarmasaydı ilk flash hafıza üzerinde nasıl işlem yapıldığını daha sonra ise boot sektörü oluşturup boot kodunu pice yükleyip. hemen peşine boot loader için pc tarafında bir arayüz yapmak idi düşüncem ve bunuda herkes ile paylaşarak bazı alanlarda kafalarda soru işareti oluşturan konulara çözüm olmaktı. bu konular bittikten sonra ise ethernet üzerinden , RF üzerinden artık dediğin gibi SD card üzerinden mikro denetleyice kod yükleyip denemeler yapacaktım. Fakat gel gör ki bazı şeylerde tek başına cabalamak insanı yoruyor.

Her neyse Foruma Hoş Geldin bu arada. :)
 

Baran EKREM

Kayıtlı Üye
STM32 Bootloader yazarken .hex dosyasını parse etmek yerine .bin dosyasını yazmak daha kolaydır :)
Bir parametre ile KEIL'de .bin uzantısı çıktısı alabilirsin normal .hex uzantısına ek olarak.
ama .bin dosyasını anlamak için bir kereliğine HEX->BIN parser yazmak işi anlamayı sağlıyor.
(Yahu bakma seneler önce yapma iş çıkarmıştım kendime ama pythonun gücü gösterdi bu örnek :) )

Acele etmene gerek yok adım adım gitmek iyidir.
"State Machine" olmayan yazılıma gömülü sistem denmez. (Aşırı iddialı bir laf oldu) (RTOS severler bunu beğendi)

Güzel çalışma.
Kolay gelsin.
 

Furkan KELEŞOĞLU

Kayıtlı Üye
MPLAB X'in XC8 derleyicisinin ücretsiz sürümünde bazı özellikler yok. Ondan dolayı sıkıntı olabilir.

Bir de Proton BASIC diye bir derleyici var. Ayrıca, IDE'si de var. http://www.protonbasic.co.uk/
XC8 yüzünden pic'ten de soğudum. BASIC yazmadığım için PROTON BASIC derleyiciside benim için bir şey ifade etmiyor. Pic yazmak için illa IDE ye para dökmek gerekiyor.

Ama STM32 için öyle değil. o yüzden Pic için daha fazla caba harcamayacağım.
 
Top