2025-02-24 02:26 AM
Hello,
we are experiencing RAM corruption when running an application in external RAM when setting a breakpoint while debugging.
The issue can be reproduced using following configuration:
1. Open example STM32Cube_FW_H7RS_V1.1.0\Project\STM32H7S78-DK\Templates\Template_LRUN\STM32CubeIDE\Boot\.cproject in STM32CubeIDE 1.15.0
(import both Boot and Appli when asked)
2. Build the Template_LRUN_Boot-Project and start it to download the bootloader to internal flash
3. Exchange the main.c of the Template_LRUN_Appli with the attached main.c and build the application
4. Use STM32CubeProgrammer to download Appli/Debug/Template_LRUN_Appli.bin to location 0x70000000
(Connect to STM32H7S78-DK board, click '+' , Open File and select Template_LRUN_Appli.bin, Click Download-Arrow-Down and enter 0x70000000 as Address and Enter to download the Applikation)
5. Reset the board - the Led LD1 should be blinking in 1 second interval
6. Attach the debugger to the running application by right-clicking on Template_LRUN_Appli in STM32CubeIDE and choose Debug As - STM32 C/C++ Application
7. When setting a breakpoint in the while(1) loop and waiting for approx. 30 seconds and then resuming the program, the Led LD1 stops blinking, signalling that the content of the external memory at 0x90000000 has changed (CRC32 is different)
We also used an J-Link to read out the content of the external RAM before and after setting a breakpoint and waiting for 30 seconds and it shows that a lot of values in the external RAM have changed randomly.
We also tested multiple boards all showing the same behavior.
It seems that the external RAM corruption is triggered by halting the CPU core at a breakpoint and waiting for some time.
Is this a known issue or do you have any idea what could be the cause for the RAM being corrupted?
Thank you and best regards,
rk_iot