Bootloader Sorusu

flowchartx

Aktif Üye
Katılım
18 Ağustos 2021
Mesajlar
219
Herkese selamlar

Bir bootloader yapıyorum şuanda. Flashın başına bootloader kodunu gömüyorum, geri kalan kısma ise istediğimi programı yüklüyorum.

Benim sorum asıl program koşarken bootladera geçmek için mcu'ya reset mi attırmam daha doğru olur yoksa programın en başına atlamak mı? Şuanda haberleşmeden bootladera geç bilgisi geldiğinde bütün her şeyi kapatıp mcu'ya Software reset atıyorum. Bir sorun yok şimdilik ama programın başına atlamak daha mı mantıklı olur acaba sormak istedim.
 
  • Beğen
Reactions: nt
En doğrusu işlemciye hardware reset atmak. Böylece işlemcinin donanımıyla yazılımıyla HER ZAMAN bilinen, belli bir durumdan başladığını garanti etmiş olursun. Mesela ARM'da bu işi yapmak için bir register biti var. Başka işlemcilerde doğrudan hardware reset yoksa, watchdog timer kullanabilirsin. O da yoksa, harici bir devre ile işlemci kendi kendine hardware reset atabilir. O da yoksa, işlemci de yeterince basit ise, artık yapacak birşey yok, tüm interruptları kapatıp, tüm çevre birimlerini de stop edip boot loader'in giriş noktasına atlamaktan başka çare kalmaz. Ama bu en son, tamamen çaresiz kalınca tercih edilmesi gereken bir yok, çünkü boot loader'in girişine her atladığında, işlemcinin o anda bulunduğu durum farklı olacaktır. Her türlü ihtimali test etmen mümkün değil, iş artık tevekküle kalmış oluyor :katil2:
 
Arm ile çalışıyorum hocam, software reset dediğim, nvic_systemreset fonskiyonuyla atıyorum sizin dediğin şekilde oluyor sanırım. O zaman böyle bırakıyorum :)
 
Şimdi benim Renesas Cortex M4 işlemcinin dokümanına baktım da, software reset (warm reset) ve power on reset (cold reset) tam olarak eşdeğer değilmiş. Ama aradaki tek fark, warm reset'te debug ile ilgili çevre birimleri resetin dışında tutuluyormuş. İşlemci çekirdeği her iki durumda da tam olarak reset ediliyor

1690970595752.png
 
Stm32de debug birimlerinş resetlemek için farklı apiler var hocam. Büyük ihtimal sizinkide öyledir.

Şimdi kafama başka bir şey takıldı. Power resette işlemcş tüm belleği sıfırlıyor ama systemresette bu olmuyor bellek hala aynı kalıyor. Şuana kadar bundan dolayı bir sıkıntı yaşamadım ama bu bana engel çıkartabilir mi? Değişkenler saçma sapan değerlerle yüklenip değerleri işleyebilir mi acaba?
 
Bir C programı çalışmaya başlayınca, C runtime library programın bütün globallerine doğru değer ataması yapar. O yüzden bir sorun yaşamazsın. Ama power on resette belleğin sıfırlandığından emin misin? Benim bildiğim power on resette RAM içeriği tamamen random olur.
 
Stm32de denemek için şöyle yaptım. 0x20000000 adresini memory browsera attım, program whilea girene kadar bir kaç birimi init ediyor haliyle ramde değerler değişiyor, while a girmeden systemreset koydum, systemresetten sonra program başa gidiyor ve ramde değiştirdiği neredeyse herşey 0 oluyor. Doğru bir gözlem miydi bu anlamadım akşama daha geniş kapsamlı test edicem
 
Şöyle test et: Reset vektörüne breakpoint koy. Power kapat ve aç. Programı çalıştırıp breakpoint'da durduktan sonra RAM içeriğine bak.
 
Bir C programı çalışmaya başlayınca, C runtime library programın bütün globallerine doğru değer ataması yapar. O yüzden bir sorun yaşamazsın. Ama power on resette belleğin sıfırlandığından emin misin? Benim bildiğim power on resette RAM içeriği tamamen random olur.
Evet hocam dediğiniz gibi test ettim. Bellek tamamen random olarak başlıyor. Teşekkür ederim :)
 

Forum istatistikleri

Konular
6,952
Mesajlar
118,760
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top