2020-12-23 05: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.
2020-12-23 05: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.
2020-12-23 05:29 AM
Try validating the value before jumping to it. Sounds like the blank memory value of 0xFFFFFFFF
2020-12-23 05: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?
2020-12-23 05: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.
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