Bootloader Sorusu

flowchartx

Aktif Üye
Katılım
18 Ağustos 2021
Mesajlar
218
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
5,887
Mesajlar
100,469
Üyeler
2,493
Son üye
cym247

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top