TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

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

Shine:

请问单个网口有这个问题吗?

weide lin:

回复 Shine:

单网口工作现象也一样。
经过增加串口打印发现现象是在cpswif.c的cpswif_transmit()函数中,
判断if(pbuf_clen(puf)>txch->free_num){
return ERR_MEM;
}
检测发现txch->free_num=0;没有可用的发送缓冲器描述符了。
另一种尝试,如果在cpswif_transmit()函数中增加串口打印信息,出现该现象的时间会推迟,由1-3分钟,变得更久一点才出问题,感觉就是减小发送数据的频率,出现的时间就会晚一点,但是还是总会出现这个问题。

weide lin:

进一步分析,后续数据发送不出去是因为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.
如果复位不满足项目应用,我现在应该怎么办呢,如何避免出现主机错误呢?有什么好的预防措施吗?

Shine:

回复 weide lin:

抱歉,我们不再提供starterware的技术支持了,建议使用新版本的RTOS SDK。
e2e.ti.com/…/3525528

赞(0)
未经允许不得转载:TI中文支持网 » AM3354 使用LWIP UDP循环发送数据成功一段时间后会出现tx buffer描述符没有可用的而导致发送失败,无法恢复
分享到: 更多 (0)