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.
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.
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.
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.