Skip to main content
Visitor II
April 8, 2024
Solved

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

  • April 8, 2024
  • 2 replies
  • 1380 views

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?

    This topic has been closed for replies.
    Best answer by FBL

    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

    2 replies

    FBLAnswer
    Technical Moderator
    April 9, 2024

    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

    Visitor II
    April 11, 2024

    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 ?