Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: Klein - 29 Temmuz 2015, 12:38:46

Başlık: STM32 Bootloader bölümüne kod yazmak.
Gönderen: Klein - 29 Temmuz 2015, 12:38:46
STM32'lerde bootloader alanına kod atılabliyor mu?
İçimizde bootloader kodu yazan var mı?


Aslında yapmak istediğim şey şu:
MCU hangi boot pinleri ne durumda olursa olsun, hep main flash'tan başlasın.
Ya da bootloader içinden ana programa dallansın.
STM32'nin bazılarında bu opsiyon var. Otion byte ile bunu seçebiliyorsun.
Ancak benim kullandığımda yok. tek yolu , "ReadOut Protection"u lvl 2 yapmak.
korumayı level 2 yaparsam, bir daha çipe kod atamam.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: X-Fi - 29 Temmuz 2015, 12:46:59
var.

level 2 de çipin içerisindeki yazılımı kendi bootloaderım ile güncelleyebiliyorum.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: Klein - 29 Temmuz 2015, 13:15:15
Evet ancak öyle olur. Fakat şimdilik  komple loader yazmaktansa, bootloaderden ama programa  sıçrama yapmak daha kolayıma geliyor.
Eğer öyle bir çözüm bulamazsam  loader yazmayı düşünürüm sanırım.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: mr.engineer - 22 Ocak 2020, 18:06:32
Merhaba,
Şu an ben de bununla uğraşıyorum. Sormak istediğim şey sıçrama olayını nasıl yapacağıma dair sıkıntılarım var. Anladığım kadarıyla bir jump fonksiyonu yazmam gerekiyor. ST-link veya USB kullanmak bir şeyi değiştiriyor mu?
Böyle bir uygulamanın detaylı anlatıldığı bir link verebilecek varsa sevinirim.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: mr.engineer - 23 Ocak 2020, 01:16:55
Yapmak istediğim şeyi de anlatayım. İki farklı uygulama(main fonksiyonu) çalıştırmak istiyorum. Bir buton yardımıyla birinden diğerine geçmeyi düşünüyorum. Bootloader üzerinden istediğim uygulamaya jump edebilmem gerekiyor. Benzer şeyler yapanlar olmuş ama ben anlayamadım. Nereden nasıl başlayabilirim, kafam karıştı.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: MrDarK - 23 Ocak 2020, 14:54:23
Linker file üzerinden her kodun ROM alanları ayır, sonrasında da atlama yapacağın zaman vector tablolarını kaydır ve jump yap.

Aşağıda atlama işlemi için örnek bir kod bulunuyor.


/**
 * @brief   Actually jumps to the user application.
 * @param   void
 * @return  void
 */
void flash_jump_to_app(void)
{
  /* Function pointer to the address of the user application. */
  fnc_ptr jump_to_app;
  jump_to_app = (fnc_ptr)(*(volatile uint32_t*) (FLASH_APP_START_ADDRESS+4u));
  HAL_DeInit();
  /* Change the main stack pointer. */
  __set_MSP(*(volatile uint32_t*)FLASH_APP_START_ADDRESS);
  jump_to_app();
}


Birde bu konu stm32 bootloader bölümüne kod yazmakla alakalı değil, yeni bir başlık açmanı tavsiye ederim.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: mr.engineer - 23 Ocak 2020, 18:43:10
Alıntı yapılan: MrDarK - 23 Ocak 2020, 14:54:23Linker file üzerinden her kodun ROM alanları ayır, sonrasında da atlama yapacağın zaman vector tablolarını kaydır ve jump yap.

Aşağıda atlama işlemi için örnek bir kod bulunuyor.


/**
 * @brief   Actually jumps to the user application.
 * @param   void
 * @return  void
 */
void flash_jump_to_app(void)
{
  /* Function pointer to the address of the user application. */
  fnc_ptr jump_to_app;
  jump_to_app = (fnc_ptr)(*(volatile uint32_t*) (FLASH_APP_START_ADDRESS+4u));
  HAL_DeInit();
  /* Change the main stack pointer. */
  __set_MSP(*(volatile uint32_t*)FLASH_APP_START_ADDRESS);
  jump_to_app();
}



Ben bu konuya biraz yabancıyım. Bu vektör tablolarını kaydırmayla ilgili şeyler okudum falan ama bu kodlar nereye yazılacak ayarlar (register, peripheral vb.) nasıl yapılacak nereden başlayacam anlayamadım. İlk dediğiniz linker fileları ayırmayı ROM 'dan yer ayırmayı bilmiyorum. ROM'dan ikinci bir main fonksiyonu için yer ayırmamı söylüyorsunuz anladığım kadarıyla. Bunların anlatıldığı bir yer var mı? Kaynak verebilirseniz çok sevinirim. Reference manuele (stm32) ve birkaç datasheete baktım fakat beceremedim henüz. Teşekkürler

Alıntı yapılan: MrDarK - 23 Ocak 2020, 14:54:23Birde bu konu stm32 bootloader bölümüne kod yazmakla alakalı değil, yeni bir başlık açmanı tavsiye ederim.

Teşekkürler. Konu burayla alakalı olabilir gibi geldi o yüzden yeni konu açmadım.
Başlık: Ynt: STM32 Bootloader bölümüne kod yazmak.
Gönderen: MrDarK - 23 Ocak 2020, 22:07:11
Yeni bir başlık açarsan oradan devam edelim. Yardımcı olayım sana.