2025-07-26 3:55 PM
Hi all,
I have developed a bootloader for STM32F412, the bootloader works perfectly, however, when I change the user app to be FreeRTOS based, it ceases to work.
I added a blink led in the Hard Fault in both the bootloader and app, but both were not triggered.
Any idea what is going on?
void jump_to_application(void) {
void (*app_reset_handler)(void);
uint32_t msp_value = *(volatile uint32_t*)(APP_START_ADDRESS + APP_HEADER_SIZE);
uint32_t reset_handler_address = *(volatile uint32_t*)(APP_START_ADDRESS + APP_HEADER_SIZE + 4);
__disable_irq();
HAL_RCC_DeInit();
HAL_DeInit();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
for (uint32_t i = 0; i < 8; i++)
{
NVIC->ICER[i] = 0xFFFFFFFF;
NVIC->ICPR[i] = 0xFFFFFFFF;
}
__enable_irq();
__set_MSP(msp_value);
__set_PSP(msp_value);
__set_CONTROL(0);
app_reset_handler = (void*)reset_handler_address;
app_reset_handler();
}
Thanks in advance.
Regards,
2025-07-26 4:12 PM
Nothing wrong with the code posted. If app doesn't work, I wouldn't suspect an issue with the bootloader.
General rules: