myredstone 发表于 2022-5-17 09:32:00

网口驱动不稳定,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);
    }
}
}

eric2013 发表于 2022-5-18 00:55:25

这种的,一般底层驱动问题居多。
页: [1]
查看完整版本: 网口驱动不稳定,ping丢包,udp收发一段时间网口助手