STM32 firmware nasıl yapılır

alarmko

Paylaşımcı üye
Katılım
14 Ocak 2009
Mesajlar
1,043
Puanları
106
Yaş
59
stm32f103 serisi 64 Kb lık flash bellegi olan cipe ben şu mantıkta firmware yaptım,daha degişik çözümü veya eleştirisi olan arkadaşlarla konuyu tartışmaya açmak istedim.

Çipin flash bellegini 28Kb lık iki parça ve 8Kb lık bir parça olarak üçe böldüm.
Birinci (yani ana bölümde) normal programım çalısıyor.
Güncelleme yapmam gerektiginde,birinci bölümde yazılı program içinden programın yeni versiyonunu herhangibir haberleşme protokolu ile alıp ikinci bölüme kaydediyorum.
Kayıt işlemi tamamlandıgında CRC (verilerin dogru alındıgı)kontrolu yapıp,eger herhangibir hata yoksa üçüncü bölümde yazılan programı çalıştırıyorum.
Üçüncü bölümdeki program çalıstıgında birebir şekilde ikinci bölümdekini birinci bölüme kopyalıyor ve ardından cipi tekrar birinci bölümdeki program çalışacak şekilde yönlendiriyorum.

Daha degişik çözümü olan arkadaş varmı?
 

Ekli dosyalar

  • memory_map.png
    memory_map.png
    39.1 KB · Görüntüleme: 20
STM32'lerde ROM içinde DFU diye adlandırılan bir bootloader zaten var. RS232, USB vs den çalışabiliyor.
DFU kullanmanın artısı, linker scriptlerle falan uğraşmamak ve belleğin tümünü kullanabilmek olur.
Ama firmware'i korumak, şifrelemek vs. söz konusu ise kendinizin yazması tabii ki daha iyi.
 
İslemler sırasında elektrik kesilebilecegini de düşün bence
sizin dediginiz gibi bir sorunla karşılaşmamak için güncel programı ikinci bölgeye kaydedip,tüm dosyayı CRC kontrolunden geçirip,ondan sonra eger bir hata yoksa asıl çalışacagı birinci kısma aktarıyorum.
STM32'lerde ROM içinde DFU diye adlandırılan bir bootloader zaten var. RS232, USB vs den çalışabiliyor.
DFU kullanmanın artısı, linker scriptlerle falan uğraşmamak ve belleğin tümünü kullanabilmek olur.
Ama firmware'i korumak, şifrelemek vs. söz konusu ise kendinizin yazması tabii ki daha iyi.
Hazır bootloader programları benim bildigim kadarı ile standart çevre aygıtlarından yükleme yapabiliyor.
Benim istedigim kendi server'imden güncel programı alıp güncellemesi.yani cihaza herhangibir usb hafıza kartı veya baska bir bellek baglamadan otomatik olarak kendini kontrol edip güncelleyecek.
 
Son düzenleme:
Tamam crc hata yok, 1. Kısma aktarırken elektrik gitti.ne olacak
 
Tamam crc hata yok, 1. Kısma aktarırken elektrik gitti.ne olacak
ooo hocam sende etme eyleme,20kb lık bilgi flashdan flasha aktarılacak,tahmini aktarım süresi 100-200ms. bunada devredeki kondansatörlerin içinde tuttugu enerji bile yeter diye düşünüyorum.Bu sanki o arada göktaşı düşerse ne yapacagız gibi birşey oldu sanırım.ceptelefonlarında bile güncelleme esnasında kapatayın,pilinizin tam dolu olduguna emin olun yazıyorlar.Gerçi benim sistemde herhangibir enerji kesilmesi olmayacak(akü takviyeli) ama varsa senin bir çözümün zevkle dinleriz. :)
 
Bari nasıl yaptıgımıda buraya ekleyeyimde belki birilerinin bir işine yarar.Hatta kendim unutursam dönüp bakarım.
 

Ekli dosyalar

  • memory_map1.png
    memory_map1.png
    91.5 KB · Görüntüleme: 31
  • memory_map2.png
    memory_map2.png
    92.2 KB · Görüntüleme: 29
  • memory_map3.png
    memory_map3.png
    91.2 KB · Görüntüleme: 27

Forum istatistikleri

Konular
128,128
Mesajlar
915,270
Kullanıcılar
449,845
Son üye
burak_duyar

Yeni konular

Geri
Üst