网口驱动不稳定,ping丢包,udp收发一段时间网口助手
HC32F4A0+RTL8201--MII现象:上电后多次ping,会出现丢包情况。UDP通信一段时间,无响应,此时ping不通,也进入不了ETH中断
断点调试: 接收中断,进入ethernetif_input后,偶尔会出现p = low_level_input( netif );p=null,
继续追踪:发现low_level_input---ETH_DMA_GetReceiveFrame_Int(&EthHandle)) ,DMA接收失败,
原因:/* Scan descriptor owned by CPU */
while ((0UL == (pstcEthHandle->stcRxDesc->u32ControlStatus & ETH_DMA_RXDESC_OWN))条件不成立。
请大佬把个脉!!!!!!!!!!!谢谢
void ethernetif_input(void const * argument)
{
struct pbuf *p;
struct netif *netif = (struct netif *) argument;
for( ;; )
{
if (osSemaphoreWait(s_xSemaphore, TIME_WAITING_FOR_INPUT) == osOK)
{
do
{
LOCK_TCPIP_CORE();
p = low_level_input( netif );
if (p != NULL)
{
if (netif->input( p, netif) != ERR_OK )
{
pbuf_free(p);
}
}
UNLOCK_TCPIP_CORE();
} while(p!=NULL);
}
}
}
这种的,一般底层驱动问题居多。
页:
[1]