2025-07-08 10:50 PM
1.i flash the app in flash address 0x08010000
2.and flash the bootloader in flash address 0x0800000
3. use bootloader jump 0x08010000, but i can not found the app run(because led cannot Flicker)
please see my project bootloader and app,how i can let it run normal ????
2025-07-09 12:09 AM
If your bootloader is not jumping to the application code, make sure you're following these steps correctly:
1. Read the application’s reset handler address:
uint32_t JumpAddress = *(__IO uint32_t*)(APPLICATION_ADDRESS + 4);
2. Assign the jump address to a function pointer:
pFunction Jump_To_Application = (pFunction)JumpAddress;
3. Deinitialize all peripherals and HAL modules used by the bootloader:
HAL_DeInit();
HAL_RCC_DeInit();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
4. Set the vector table offset to the application start address:
SCB->VTOR = APPLICATION_ADDRESS;
5. Set the MSP (Main Stack Pointer) from the application’s vector table:
__set_MSP(*(__IO uint32_t*)APPLICATION_ADDRESS);
6. Call the application’s reset handler:
Jump_To_Application();
Make sure a valid stack pointer exists at the application base address. You can check like this:
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0xFF000000U) == 0x20000000U || // SRAM
((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0xFF000000U) == 0x10000000U) // CCM RAM (if used)
{
// Valid application – safe to jump
}
else
{
// Invalid memory content – do not jump
}
:light_bulb: Tip: Ensure your application binary is correctly linked to the base address (APPLICATION_ADDRESS) and that it starts with a valid vector table (stack pointer and reset handler). Misconfigured linker scripts or missing vector tables are common causes for failed jumps.
2025-07-09 12:15 AM
i modify bootloader main.c and test, the problem become the led on but not Flicker, why Flicker????
2025-07-09 12:28 AM
I had the same problem and couldn’t figure it out. So I decided to test the ST Open Bootloader. However, I had a hard time finding a downloadable version.
First, I tried to find an IDE project for the STM32H7 series, but had no luck. Next, I tried using this repository, but it failed due to a missing file: app_openbootloader.h
I'm not sure how I should approach this problem. Any suggestions?
2025-07-09 12:28 AM
have you flashed your application code at Sector (0x8010000)?
2025-07-09 1:01 AM
@jumman_JHINGA yes i flash the application,you can see the test video and use my project to test!!!,it still not work?????
2025-07-09 1:18 AM
In the User Appilcation we must take care these things:
1. In the system_stm32fNxx.c file search for VECT_TAB_OFFSET and we have to change it with the offset of our user application address.
For example, if flash base address is 0x08000000UL (also address for bootloader) and we want to start the application code from 0x08018000 then I will just add Vector Table offset to 0x00018000.
#define VECT_TAB_OFFSET 0x00018000U
2. Now we have to change __ICFEDIT_intvec_start__ & __ICFEDIT_region_ROM_start__ macros address in the stm32f746xx_flash.icf linker script file present in EWARM folder. And these address will be our User Application address.
define symbol __ICFEDIT_intvec_start__ = 0x08018000;
define symbol __ICFEDIT_region_ROM_start__ = 0x08018000;
for MDK-ARM:
if your not missing any of this method then definatly it should have to work.
2025-07-09 1:24 AM
yes, i modify it already but it does not work.you can open my projct
in the last attachment!!!!
so why????
2025-07-09 2:28 AM
in your screen shot VECT_TAB_OFFSET looks like it is disabled. at line no. 96 uncomment the USER_VECT_TAB_ADDRESS first. then try again.
for further verification you can use Cube Programmer to see whether your application code is present at perticuler sector
2025-07-09 2:54 AM