STM32H745 – Is it possible to STOP and then restart Cortex-M4 from Cortex-M7 (software only)?
Hello,
I am working with STM32H745 (dual core Cortex-M7 and Cortex-M4) and I am trying to understand the correct and supported way to stop and then restart the M4 core from the M7 core using software only, without resetting the whole chip.
My goal is to implement a core-local watchdog mechanism where the M7 core keeps running and supervises the M4 core. If the M4 gets stuck or stops responding, the M7 should be able to stop or reset the M4 and then start it again cleanly.
I have read the reference manual and found the following:
SYSRESETREQ via AIRCR triggers a full system reset, so it is not suitable for this use case.
Disabling RCC clocks does not actually stop the Cortex-M4 core execution.
HAL_PWREx_ReleaseCore(PWR_CORE_CPU2) only releases CPU2 from the HOLD state and does not reset or stop a running M4 core.
I found the MP_GRSTCSETR register and the M4 reset bit mentioned in some discussions, but the CMSIS and HAL naming is confusing and it is not fully clear whether this is the recommended and safe way to reset only the M4 core at runtime.
I also looked at ST examples where M4 is held in STOP mode during boot and released by M7 using HSEM, but those examples mainly cover boot-time scenarios and not runtime recovery.
My questions are:
Is it officially supported to reset only the Cortex-M4 from Cortex-M7 at runtime on STM32H745?
If yes, is using MP_GRSTCSETR (M4 reset bit) the correct and recommended method?
Is there a supported way to put the M4 core into STOP mode from M7 and later wake it up again?
Is there any ST-recommended architecture for implementing a core-local watchdog on STM32H7 dual-core devices?
I want to avoid undefined behavior and follow the intended hardware design.
Any clarification or reference to an official ST application note or example would be greatly appreciated.
Thank you.
