cancel
Showing results for 
Search instead for 
Did you mean: 

Hard fault while sending huge data through ethernet

utkarshchaurasiya36
Associate II

"We are facing a hard fault issue in our code when sending a large amount of data. Occasionally, it runs properly, but most of the time, it goes into a hard fault after sending approximately 10,000 bytes. The image data we are sending is around 40 KB. Interestingly, sending 'Hello World' in a loop works successfully without any faults. I have also tried increasing the lwIP options sizes through a trial-and-error approach, but the issue persists. I have been struggling with this problem for the past 20 days and have not been able to resolve it. I am using the STM32H723VGT6 microcontroller. Please help me resolve this issue."

6 REPLIES 6

@utkarshchaurasiya36 wrote:

I have been struggling with this problem for the past 20 days and have not been able to resolve it.


So what have you tried in those 20 days?

What have you discovered?

 

Debugging Hard Faults:

https://community.st.com/t5/community-guidelines/how-to-write-your-question-to-maximize-your-chances-to-find-a/tac-p/708193/highlight/true#M51

 

LwIP Debugging:

https://community.st.com/t5/stm32-mcus/using-the-itm-console-for-printf-redirects-and-lwip-debug/ta-p/723472

 

PS:

 


@utkarshchaurasiya36 wrote:

Occasionally, it runs properly, but most of the time, it goes into a hard fault after sending approximately 10,000 bytes.."


If it does work occasionally, that could suggest a timing issue somewhere...
 

Some general debugging tips:

https://community.st.com/t5/community-guidelines/how-to-write-your-question-to-maximize-your-chances-to-find-a/tac-p/706966/highlight/true#M49

 

utkarshchaurasiya36
Associate II

Duplicate - merged. Please don't create new threads on the same topic.


"We are facing a hard fault issue in our code when sending a large amount of data. Occasionally, it runs properly most of the time, but sometimes it goes into a hard fault /mem handler fault after sending approximately a few bytes. The image data we are sending is around 10 KB. Interestingly, sending 'Hello World' in a loop works successfully without any faults. I have also tried increasing the lwIP option sizes through a trial-and-error approach, but the issue persists. I have been struggling with this problem for the past 5 days and cannot resolve it. I am using the STM32H723VGT6 microcontroller. Please help me resolve this issue."

HARD FAULT STACK-
"cam_bsnet Debug [STM32 C/C++ Application]
cam_bsnet.elf [cores: 0]
Thread #1 [main] 1 [core: 0] (Suspended : Signal : SIGTRAP:Trace/breakpoint trap)
HardFault_Handler() at stm32h7xx_it.c:113 0x8002070
<signal handler called>() at 0xfffffffd
ethernet_input() at ethernet.c:113 0x8023328
tcpip_thread_handle_msg() at tcpip.c:174 0x801714e
tcpip_thread() at tcpip.c:148 0x8017102
pxPortInitialiseStack() at port.c:214 0x8012ab0
arm-none-eabi-gdb (13.2.90.20230627)
ST-LINK (ST-LINK GDB server)"

So look into the code at that point to see what's going on.

Hello @utkarshchaurasiya36 ,

it seems like you run out of memory at some point or a pointer to a stack is corrupted.

I recommend you follow How to debug a HardFault on an Arm Cortex®-M STM32 - STMicroelectronics Community to determine what is the root cause of the hardfault.
Regards

In order 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.
LCE
Principal

I have put the lwIP heap and pbuf pool into AXI SRAM / D1, maybe try that.

You won't run out of memory that quick - but I have actually no idea how the OS or you are handling the lwIP pool memory...