This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3354 使用LWIP UDP循环发送数据成功一段时间后会出现tx buffer描述符没有可用的而导致发送失败,无法恢复

Other Parts Discussed in Thread: AM3354

1、使用的starterware 02.00.01.01版本,芯片AM3354。

2、测试情况:通过AM3354网口1、网口2同时循环向PC发送大量数据,采用UDP方式,电脑用wareshark抓取数据。总是在发送一段时间后(时间不固定基本是1-3分钟左右)就会出现cpswif_tranmit()函数中txch-freenum为0,没有可用的发送缓冲描述符可用而导致数据无法发送。

  • 请问单个网口有这个问题吗?
  • 单网口工作现象也一样。
    经过增加串口打印发现现象是在cpswif.c的cpswif_transmit()函数中,
    判断if(pbuf_clen(puf)>txch->free_num){
    return ERR_MEM;
    }
    检测发现txch->free_num=0;没有可用的发送缓冲器描述符了。
    另一种尝试,如果在cpswif_transmit()函数中增加串口打印信息,出现该现象的时间会推迟,由1-3分钟,变得更久一点才出问题,感觉就是减小发送数据的频率,出现的时间就会晚一点,但是还是总会出现这个问题。
  • 进一步分析,后续数据发送不出去是因为EOQ未置位,导致cpswif_transmit()中判断EOQ位不满足,而无法赋值tx0hdp。
    在这种情况下的打印信息可以看出是出现了主机错误TX Host Error ,代码是0110- Packet Length Error (sum of buffers is less than packet
    length) 。手册里面说出现主机错误,Host error Interrupts require hardware reset in order to recover.
    如果复位不满足项目应用,我现在应该怎么办呢,如何避免出现主机错误呢?有什么好的预防措施吗?
  • 抱歉,我们不再提供starterware的技术支持了,建议使用新版本的RTOS SDK。
    e2e.ti.com/.../3525528