cancel
Showing results for 
Search instead for 
Did you mean: 

Code built with CubeH7 v1.12.1 fails when loaded by custom bootloader (works fine with v1.12.0)

BruneParodi
Visitor

Hello ST team,

I’m developing on a STM32H755BITx dual-core (Cortex-M7 / M4) using STM32CubeIDE and STM32CubeH7 HAL.
I have a custom bootloader that starts the user application located at 0x08040000 (M7 app) and 0x08100000 (M4 app).

Context

  • Bootloader and application are both generated with STM32CubeIDE.

  • The bootloader runs correctly and can jump to the application.

  • Everything works fine when the application is compiled using STM32CubeH7 v1.12.0.

  • But when I rebuild the exact same application using STM32CubeH7 v1.12.1, the app starts but hangs — no LED toggling, no interrupts, no SysTick activity.

Configuration

  • MCU: STM32H755BITx

  • IDE: STM32CubeIDE (latest version available)

  • Bootloader base M7: 0x08000000

  • Bootloader base M4: 0x08020000
  • App M7 base: 0x08040000

  • App M4 base: 0x08100000

  • Dual-core synchronized via HSEM

  • Power configuration macro used: USE_PWR_LDO_SUPPLY

Symptoms

  • When jumping to the app built with v1.12.1:

    • The vector table and MSP are correct (checked with debugger).

    • The app reaches main(), but HAL_Delay() and all IRQ-based functions stop working.

    • LEDs never toggle.

    • SysTick and TIM interrupts appear inactive.

  • The exact same binary rebuilt with v1.12.0 works perfectly.

ATTACHED MAIN.C OF THE BOOTLOADERS.

Could you please:

1) Confirm if there are known issues in STM32CubeH7 v1.12.1 affecting SysTick or RCC initialization?

2) Suggest the recommended workaround or patch for applications started by a custom bootloader.

Thank you very much for your support!

Best regards!

1 REPLY 1
TDK
Super User

Calling a function to make the jump isn't helping anything. It uses the stack to pass parameters so the SP that you just set now gets changed. Probably isn't the main issue.

How to jump to system bootloader from application ... - STMicroelectronics Community

 

Should be able to debug and step through to see what is going on. If SysTick isn't firing, only a few things can be wrong.

  • Interrupts disabled globally.
  • SysTick not enabled.
  • Wrong SCB->VTOR
  • In another interrupt of equal/higher priority.
  • (maybe missing one)
If you feel a post has answered your question, please click "Accept as Solution".