STM32F4 Bootloader

Başlatan Farukc, 29 Temmuz 2013, 07:56:38

armsistem

hocam kusura bakma bootloader nedir biliyorsun dimi ?

Farukc

O kadarda düşmedik canım. Sorun şuki ingilizcem kötü ve sayfalarca kod görünce gözüm korkuyor.

X-Fi

#17
Örnek kod üzerine odaklanma bu iş bir flash hapis oyunu gibidir öncelikle;

- keil programını iyi kullanman gerekiyor flash adreslemelerini oradan yapacaksın. (scatter dosyası üzerinde durman gerekicek)
- 2 adet proje olacak; daimi bootloader yazılımı ve ana program.
- Vektör adreslerini bootloader yazılımındaki startup dosyası belirler. Çünkü ilk yazılan program odur yüklenecek ana program bu vektör adreslerini kullanır.
- kullanmadığın bir ram adresi bölümlersin.
- ram üzerinde çalışacak fonksiyonları kütüpaneler  __RAM olarak tanımlıyor. Bu fonksiyonları içeren .c dosyasını options/memory assignment ile bölümlediğin ram adresine taşımalısın.
- Güncelleme yapmadan önce flash adresini sileceksin. (bu bir flash memory kuralı) Flash yazma silme işlemleri sırasında tüm keslemleri kapatmalısın systick timer dahil.
- yeni yazılımı adreslerine dolduracaksın .hex protekolü kullanırsan adresler her paketin içinde geliyor .s19 da kullanabilirsin ikiside checksum güvenlikli.(fazladan önlem olarak aktarım bitince tüm flashın CRC32 bilgisini alıp karşılaştırabilirsin)
- yazma işlemi bitince bootloaderı tekrar kullanmaması için oluşturduğun giriş anahtarını değiştirip nvic system reset fonksiyonuyla işlemciyi resetlersin.


Bu standart bir yöntem eksi yönleri bootloader kısmını güncelleyemezsiniz ve vektör adreslerini değiştiremezsiniz. Benim kullandığım bir yöntem var oda şöyle flash hafızası geniş işlemcilerde hafızayı 2 ye bölmek. İlk kısmı main diğer kısmı buffer olarak kullanmak. Güncellenecek yazılım önce buffer kısmına doldurulur, kontrol edilir. Doğru ise ram e atlayıp ana programı silip buffer'ı main bölümüne kopyalıyorum. Bootloader da ana programın içinde bulunduğu için tek proje üzerinden yürüyorsunuz vektörler de sabit kalıyor.   

Bilgiler sana dağınık gelebilir sistem biraz karmaşık çalışıyor. Sadece kod kopyalamak yeterli değil. Böyle bir iş yapılacaksa çok araştıracaksın demektir. Elimden gelen bu kadar ben kod vermem ama yardımcı olmaya çalışırım.

Kolay gelsin.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Farukc

 :-\ Kfam karıştı. iyice tırstım ben bu işten dahili bootloader nasıl kullanılıyor?

X-Fi

işlemciyi  usart1 veya usb yoluyla bilgisayara bağla boot0 pinini 1 e çekip işlemciyi resetle cihaz dfu modunda başlar.

Dfuse demonstration yazılımıyla programı yüklersin youtube da örnekleri var.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Farukc