cancel
Showing results for 
Search instead for 
Did you mean: 

stm32h723 lwip rtos,The client stops sending data after running for a period of time. It will only resume operation if an external device pings

zilboe
Associate

I created an independent task to run the TCP client and send.

[424] local 192.168.10.188 port 5001 connected with 192.168.3.100 port 57804
[ ID] Interval       Transfer     Bandwidth
[424]  0.0- 1.0 sec  5660 KBytes  46368 Kbits/sec
[424]  1.0- 2.0 sec  5500 KBytes  45055 Kbits/sec
[424]  2.0- 3.0 sec  5389 KBytes  44149 Kbits/sec
[424]  3.0- 4.0 sec  5191 KBytes  42526 Kbits/sec
[424]  4.0- 5.0 sec  5088 KBytes  41681 Kbits/sec
[424]  5.0- 6.0 sec  4936 KBytes  40436 Kbits/sec
[424]  6.0- 7.0 sec  4832 KBytes  39583 Kbits/sec
[424]  7.0- 8.0 sec  3816 KBytes  31258 Kbits/sec

The above is the data volume and status received by my iperf server. After that, my client task no longer sends any messages. I use my computer to ping the IP address of my STM32, and then the client will resume sending.

I observed that the gState of my heth variable is HAL_ETH_STATE_STARTED, and the ErrorCode is HAL_ETH_ERROR_BUSY. The DMAErrorCode and MACErrorCode do not have any flags.

I think it is the osSemaphoreAcquire(TxPktSemaphore, ETHIF_TX_TIMEOUT); function in the ethernetif.c file that needs to be checked. However, I don't know why this situation occurred.

I have uploaded two configuration files and one main file to the attachment. The rest of the configurations are based on the default settings provided by STM32CubeMX.

Addition: This issue occurred in another of my STM32H7 devices, which was developed using the socket interface of LWIP. At first, I thought it was caused by the configuration of LWIP's PBUF and the priorities of various tasks. So, I created a base project for testing and found that this problem also existed.

 

really appreciate

 

0 REPLIES 0