cancel
Showing results for 
Search instead for 
Did you mean: 

How do i load my application to Cortex-M4 core on STM32H755XI controller?

Harshavardhan
Associate II

Hello,

I am new to dual core controllers and I had a question on how the internal ST bootloader works for STM32H755, till now I have used STM32F4 and STM32F7 series with single core and i have loaded User code using UART and ST Flash Loader, as I understand when the internal ST bootloader starts running it loads the used code to 0x08000000 location and jumps to that location at the end of the download where our user program resides. In STM32H7 as we have dual core and each core has a specific address where it boots from Cortex-M7 - 0x08000000 and Cortex-M4 - 0x08100000, when I turn the boot switch and start loading user code it loads the Cortex-M7 core at location 0x08000000 but I am confused on how to load the Cortex-M4 core at location 0x08100000? Is it handled by the ST bootloader ? is there an option to select loading M4/M7 core in the ST Flash Loader?

1 ACCEPTED SOLUTION

Accepted Solutions
FBL
ST Employee

Hello @Harshavardhan 

You can select boot pins and boot base address BCM4_ADD1 as detailed in Table9 in RM0399 in order to access CM4 bootloader. Then using CubeProgrammer, you can select your option bytes and program your binary at 0x08100000

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

2 REPLIES 2
FBL
ST Employee

Hello @Harshavardhan 

You can select boot pins and boot base address BCM4_ADD1 as detailed in Table9 in RM0399 in order to access CM4 bootloader. Then using CubeProgrammer, you can select your option bytes and program your binary at 0x08100000

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Harshavardhan
Associate II

Hi @FBL ,

You mentioned "to access CM4 bootloader", does that mean we have separate internal bootloaders for M7 and M4 cores which will run when we turn on the boot switch and select boot base address? Also I see there are default values mentioned in Reference manual for BOOT_CM4_ADD0 = 0x0810 and BOOT_CM7_ADD0 = 0X0800, these values define where the M4 and M7 cores start booting from after reset right? I needed to understand how to program my application code to these locations. How do I select the BOOT BASE ADDRESS when I try to load an application using UART ?