lwIP deadlock with a twist
Setup:
MCU: STM32F429
PHY: DP83848 (MII)
Advertised Mode: 10BASE-T, Half/Full-Duplex 100BASE-TX, Hal/Full-Duplex
OS: CMSIS-RTOSv2
CubeMX: Yes
Just wanted to start of with mentioning that i've read and tried the fixes provided by
configASSERT( pxQueue->uxItemSize == 0 );
The interesting thing is that i'm able to ping the processor a few dozen times to a few thousand times before that processor locks.
The processor instantly gets stuck if i scan my network with Advanced IP Scanner.
However the processor does not get stuck when scanned, if i continuously poll USART3 at 1Hz. It seems to eventually get stuck but i'm able to scan it with Advanced IP Scanner several times, something im not able to do a single time if USART3 isn't used.
USART6 is constantly being used but the deadlock still occurs.
Both USARTs use the below functions for Rx/Tx.
HAL_UART_Transmit_DMA(&huart3, buffer, size);
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, buffer, size);The only noticeable difference i can tell is that USART3 uses a wait flag that is set in the HAL_UARTEx_RxEventCallback.
USART6 uses an osDelay to check the data.
osEventFlagsWait(UART_FlagHandle, 1, osFlagsWaitAny, osWaitForever);
I have no idea of what is going on, i assume it has something to do with the OS scheduling but i have no idea.
Im new to ethernet and networking so i'm not really sure where to start, any help is greatly appreciated!
