That was the same issue that was reported in post startup-freertos-9-0-0-stm32f4-interrupt-before-starting-scheduler-hang/7105
Mentioned post appeared first on Sourceforge, but there is a copy here
I have also tried not defining them and allowing the driver to use its default values which are 5 and 5.
Note that you can safely set ETH_TXBUFNB
to 1, and ETH_RXBUFNB
to many, 9 if you have. When sending, the driver will wait patiently for a free DMA buffer. That happens in this line:
if( xSemaphoreTake( xTXDescriptorSemaphore, xBlockTimeTicks ) != pdPASS )
{
/* Time-out waiting for a free TX descriptor. */
break;
}
It will wait for at most 50 ms, which gives enough time for the previous packet to be transmitted.
So I recommend:
#define ETH_RXBUFNB 9
#define ETH_TXBUFNB 1
Note that each RX DMA buffer needs one Network Buffer. When there is no buffer available, an incoming packet will be dropped, in prvNetworkInterfaceInput
.
About versions, have you tried the latest version of FreeRTOS+TCP?
And a last thought: I still wonder if there is a slight difference between the EMACs of an STM32F2 and STM32F4.