STM32 bootloader'dan uygulamaya geçme

Başlatan elektronikDelisi, 12 Nisan 2017, 13:23:11

elektronikDelisi

STM32 bootloader jump to application

Merhabalar,

Kendim STM32 için bootloader yazıyorum. Bu kısım ile ilgili bir sorun yaşamadım. Ama bootloader bittikten sonra applicationa geçerken interrupt vektörlerini geçirtemiyorum. Bu konuda yardımcı olabilecek var mı?

Teşekkür ederim.

Bootloader:
IROM1: 0x8000000
#define APPLICATION_BASE_ADDRESS 0x1B000
 typedef void (*application_main_t)(void);

int main(void)
{
  application_main_t application_main = *(application_main_t *)(APPLICATION_BASE_ADDRESS+4);
  application_main();

}



Application IROM1: 0x801B000


aramızda bir elektrik var..

erpay

Ana uygulamaya zıpladıktan sonra vektör table ram'e kopyalayıp derleyicinin ram'i kullanma alanını kısıtlaman gerekli.

yldzelektronik

@mekzum  base adres neden
#define APPLICATION_BASE_ADDRESS 0x1B000
0x8000 ile başlaması gerekmiyor mu?Flash oradan başlıyor sonuçta?


@erpay neden vector table rame kopyalanıyor?Bilmediğimden soruyorum?bootloader çalışmadığı halde sürekli olarak ram mi kullanacak yani?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

erpay

@yldzelektronik  ilk uyarını ben de ypacaktım adres ile ilgili.

Normalde sıfırdan(0x0800 0000) başladığı zaman bu vector table otomatik olarak kopyalanıyor ama bunu elle yaptığımız zaman vector table i da elle olşturmak lazım (En azından F0 ailesi için, üst düzeylerde bu konuda kolaylıklar mevcut)
Bootloader değil zıpladığımız uygulama kullanacak.

yldzelektronik

@erpay konuyla ilgili bir kaynak önerebilir misiniz?Tam olarak anlamadım neden yapılacağını?Biraz detaylı açıklayabilir misiniz?


Teşekkürler.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

erpay


yldzelektronik

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.