cancel
Showing results for 
Search instead for 
Did you mean: 

STM32U575 Custom bootloader Bootloader

nima.askari
Associate II

Hello. I would like to write my own bootloader, but jump function does not work. could you send a complete example for stm32U575. 

1 ACCEPTED SOLUTION

Accepted Solutions
Rim LANDOLSI
ST Employee

Hello @nima.askari,

Here is an example code for Bootloader application project:

For the Boot’s code:

  • Add these instructions to the main.c
typedef void (*pFunction)(void);
#define APPLICATION_ADDRESS 0x08003800 (this is an example address)
pFunction JumpToApplication;
JumpToApplication = (pFunction) (*(volatile uint32_t*) (APPLICATION_ADDRESS + 4));
__set_MSP(*(uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();
  • Change the FLASH memory size in the linker file according to the application start address.
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 28K (this is an example)

For the application’s code:

  • Change the FLASH memory size in the linker file according to the application start address.
FLASH (rx) : ORIGIN = 0x08003800, LENGTH = 100K

When your question is answered, please close this topic by choosing Select as Best. This will help other users find that answer faster.

Thank you,

Rim.

View solution in original post

4 REPLIES 4
nima.askari
Associate II

Please Send me an example. 

Rim LANDOLSI
ST Employee

Hello @nima.askari,

Here is an example code for Bootloader application project:

For the Boot’s code:

  • Add these instructions to the main.c
typedef void (*pFunction)(void);
#define APPLICATION_ADDRESS 0x08003800 (this is an example address)
pFunction JumpToApplication;
JumpToApplication = (pFunction) (*(volatile uint32_t*) (APPLICATION_ADDRESS + 4));
__set_MSP(*(uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();
  • Change the FLASH memory size in the linker file according to the application start address.
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 28K (this is an example)

For the application’s code:

  • Change the FLASH memory size in the linker file according to the application start address.
FLASH (rx) : ORIGIN = 0x08003800, LENGTH = 100K

When your question is answered, please close this topic by choosing Select as Best. This will help other users find that answer faster.

Thank you,

Rim.

nima.askari
Associate II

Hello @Rim LANDOLSI , thanks for your answer. Is it works for stm32U5 series? I read something about writing to option bytes. I tried your sample, but it doesn't work.

nima.askari
Associate II

I found out the problem. ICACH should not be enable in bootloader .