cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in STM32F7 with ethernetif.c provided by STM32CubeIDE 1.7.0

SURLEAU.Frederic
Associate III

Hi,

Context : STM32F777, FreeRTOS, Cmsis V2, LWIP, Sockets, TCP, UDP

Only one task is used to open, listen, poll, accept, send, receive, and close sockets.

 

Since STM32CubeIDE 1.7.0 and the new version of ethernetif.c, modifying "low_level_output", we have a problem when sending packets of about 400 bytes or more.

In that case, the client will not receive all data.

 

The old version called HAL_ETH_Transmit_IT, and then waited for the semaphore from HAL_ETH_TxCpltCallback().

 

The new version calls HAL_ETH_Transmit_IT, and returns immediatly.

The next call will fail, waits for the semaphore, then releases the previous packet, then retries...

It works well for small packets, but fails with bigger ones for unknown reasons...

 

A modification that work for us, is to move the call to HAL_ETH_ReleaseTxPacket in HAL_ETH_TxCpltCallback.

With this modification, we never fall in HAL_ETH_ERROR_BUSY...

 

What do you think?

 

Regards,

Fred.

10 REPLIES 10

Hi,

Does anyone have some news about this problem ?

Regards,

Fred.