cancel
Showing results for 
Search instead for 
Did you mean: 

Hardfault handler error during long run

RiverDi_user
Associate III

Hello,

I am having a custom touchgfx application running on a RiverDI 5 inch display board with STM32. During the application run, the application halts at 'hardfault handler' randomly after few hours of run. These are the measure I tried to debug the issue, but none of them worked.

1. Increased the touchgfx task priority to high (from normal)

2. Increased the touchgfx task size

3. Set the CHECK_FOR_STACK_OVERFLOW to 2 in ioc

4. Modified the clock source

Everytime when the fault hits, there is no proper stack trace and the stack trace doesnt show the issue origin. The fault analyzer is showing PRECISERR in the window.

When I debugged further in assembly instructions, one time it faulted in vldr execution and next time it faulted in ldr execution. 

Is there a way I can get more information on the stack trace? The issue is not quickly reproducible, it reproduces randomly over 4 hours or above.


RiverDi_user_0-1725513156492.png

RiverDi_user_1-1725513216096.png

RiverDi_user_2-1725513295467.png

Your support is much appreciated!

 

Thanks & Regards

RiverDI user

3 REPLIES 3
Sarra.S
ST Employee

Hello @RiverDi_user, which STM32 are you using? 

Since the fault occurred during a vldr or ldr instruction, it may be an issue with loading data from memory, this could be due to an invalid pointer or an out-of-bounds access.

You'll also need to review the detailed fault handler (values of registers R0-R3, R12, LR, PC, and xPSR.) to reconstruct the call stack and identify the function and line of code where the fault occurred

This article might be very helpful: How to debug a HardFault on an Arm Cortex®-M STM32 

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.

Andrew Neil
Evangelist III

@RiverDi_user wrote:

the application halts at 'hardfault handler' randomly after few hours of run.


Similar:

https://community.st.com/t5/stm32-mcus-embedded-software/hardfault-udp-client/td-p/716640

 

Hi, 

I am using STM32U5A9 processor from built-in RiverDI 5 inch display. I was able to see the Fault Analyzer's BusFault address, but I could get anything from that address in the memory view. All the data was in ?????

When I debugged further, I saw like this in the debugger.

Disassembly hit in this command:

RiverDi_user_0-1725603149523.png

When I checked the registers r6 and r12, r12 seems to be an invalid memory location:

RiverDi_user_1-1725603211766.png

RiverDi_user_2-1725603305930.png

 

Regards

RiverDI user