custom bootloader - jump to specific address
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 5:07 AM
Hello guys,
I am trying to implement a custom bootloader based on stm32f103rb.
I would like to jump in a flash address page e.g 0x8004000
When i am calling the app_reset_handler(), debugger break at address 0xfffffffe with no debug information.
I appreciate if someone could guide me to resolve this issue.
Let me attach the code:
void jump_application(void)
{
void (*app_reset_handler)(void);
volatile uint32_t addr = 0x8004000;
HAL_RCC_DeInit();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
__disable_irq();
SCB->VTOR = (FLASH_BASE | 0x4000);
app_reset_handler = (void*)(*(__IO uint32_t *)(addr + 4));
__set_MSP(*(uint32_t *)addr);
app_reset_handler();
}
Solved! Go to Solution.
- Labels:
-
Bootloader
-
STM32F1 Series
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 5:53 AM
You need to get your application image properly loaded into that memory space, and you need to double check that in your code.
Best to understand the expectations of the CPU than just copy code.
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 5:29 AM
Try validating the value before jumping to it. Sounds like the blank memory value of 0xFFFFFFFF
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 5:35 AM
first of all, thank you for your response.
you are right, it doesnt get the desired value.
How should i give this to my pointer function?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 5:53 AM
You need to get your application image properly loaded into that memory space, and you need to double check that in your code.
Best to understand the expectations of the CPU than just copy code.
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-12-23 11:40 PM
Ooo i was tired and i didnt understand what i have done!
Sorry for this, i have to implement my own bootloader code in order to get the application firmware and after that i have to jump to this location.
Thank you very much
Have a nice day
