Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Stm32 Bootloader

Başlatan yamak, 01 Eylül 2014, 17:20:44

yamak

Merhaba Arkadaşlar,
Stm32'ye bootloader yazmayı düşünüyorum da bu konu hakkında önerebileceğiniz örnek kod, application note vs var mı?

tekosis

öğrenmek istediğimden soruyorum neden mevcut bootloaderler yerine kendiniz yazmak istiyorsunuz? ilave özellikler mi ekleyeceksiniz?
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

yamak

Hocam ftp'den ya da gprs üzerinden firmware update yapmamız gerekiyo ve hex i kriptolu göndermek gerekiyo.Yani isteğimize uygun bootloader olmadığı için mecburen yeniden yazmak lazım.

tekosis

güzel iş kolay gelsin hocam...
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

yamak

Hocam kripto isi sonraki is. Benim icin onemli olan bootloader ile ilgili kaynak bulma. Kripto olayi icin Aes 128 accelerator i da kullanabilirim.

X-Fi

#5
Hocam ben FTP dosya sistemi ile şöyle yapmıştım FTP ye bağlandıktan sonra "AT#FTPGETPKT=\Firmware.bin" komutu ile dosyayı paket erişimli açıp "AT#FTPRECV=1024" komutu ile 1k lık paketler halinde indirilebiliyor. Buffera yazar yeni paket istersiniz.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

yamak

Hocam şu an bana lazım olan kaynak aslında en basitinden uart üzerinden boot edebilecek bi bootloader ile ilgili kaynak.İlk denememi zaten uart üzerinden yapacam.Az çok mantığını biliyorum.Ama kullanılan yöntemler,püf noktalar hakkında bi kaç bişeyler okumak istiyorum.Direkt kafamdaki bootloader mantığı ile yazmak istemiyorum.

X-Fi

yamak hocam STM32 Usart bootloaderları Y Modem protekolunde paket alır açık kaynak kodlu apisi internette var işinize yarayacakmı emin değilim.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

AsHeS

#8
-

yamak

Alıntı yapılan: X-Fi - 02 Eylül 2014, 08:15:03
yamak hocam STM32 Usart bootloaderları Y Modem protekolunde paket alır açık kaynak kodlu apisi internette var işinize yarayacakmı emin değilim.
Hocam link verebilirseniz güzel olur.
Alıntı yapılan: AsHeS - 02 Eylül 2014, 08:22:02
Bootloader denen yazılım flasha veri yazan bir yazılımdan farklı değil önce yapmanız gereken 2 adet proje oluşturmak ve bu projelere özel ram ve rom alanı atamak(bkz: Keil Scatter File). Bootloader projenizinin hafıza alanları farklı olacağından proje kodunuzun bu alanlara müdahele etmeyeceğinden emin olmanız lazım. Bu da tamamsa hex dosyasının formatını kendinize göre yorumlayarak (bkz: http://www.keil.com/support/docs/1584.htm) flasha yazma işlemlerini gerçekleştirirsiniz.
Flasha yazma işlemi gerçekleştirdikten sonra 2 seçeneğiniz var ya soft reset atarsınız sisteme ya da fonksiyon pointerı programın başlangıç adresine dallanıp koşturmaya başlarsınız.
Evet hocam temel olarak böyle ama.Güvenli bir şekilde boot etmek için kullanılan yöntemler var.Örneğin aşağıdaki dökümandaki gibi:
http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4533.pdf

X-Fi

#10
Hocam bufferlayıp değiştirmekten başka bir şansınız zaten yok yazılımı koşan kodun üzerine yazamayız. Buffer olarak bende flash hafızanın banklarını kullanıyorum. Sahada yaklaşık 2000 cihaz çalışıyor defalarca güncelledim sorun olmuyor.

bakınız; "gprs sulama sayaçları"
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

AsHeS

#11
,

XX_CİHAN_XX

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

minicihazlar

Çalışan kod da güncellenebiliyor. Bunun için güncelleme yapılacağı zaman bootloader kodu ram'e kopyalanıp o koda atlanıyor ve interrupt'lar ram'de oluşturulan vector tablosuna yönlendiriliyor. Artık bundan sonra çalışan kod her istediğini yapabiliyor flash üzerinde. Ben bir müşteri için bu şekilde bir bootloader kodu yazdım. IAR için kodu ram'de çalıştırma için gerekli linker ayarlarını yapmak zaman almıştı. Keil veya gcc ile hiç denemedim. Zaten için püf noktası linker'i doğru ayalrayıp kodu istediğimiz adres aralığına göre link etmesi.