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

TMS320C6748的LWIP接收过载的问题

各位好:

我现在的情况是使用TMS320C6748处理器,LWIP使用的是1.3.2版本,现在出现的一个问题是:在接收的数据包到达一定量后(包的速度不一定很快),就接收不到,连接收中断都没有进了,一旦出现接收过载,一次都接收不到了。通过查看寄存器器,发现RXSOFOVERRUNS和RXDMAOVERRUNS不为零了,并且在不断的增加,说明接收过载了。一般是什么原因导致接收过载,如何确定原因?在出现接收过载后,如何恢复到正常情况。

Alven:

程序会卡死在void sitaraif_rx_inthandler(struct netif *netif)函数中的:do {/* Get the pbuf pointer which is associated with the current bd */pbuf = curr_bd->pbuf;/* If the earlier pbuf ended, update the chain */ if(pbuf->next == NULL) {pbuf->next = (struct pbuf*)(curr_bd->next)->pbuf; }len_to_alloc += pbuf->len;/* Update the len and tot_len fields for the pbuf in the chain*/pbuf->len = (curr_bd->bufoff_len) & 0xFFFF;pbuf->tot_len = tot_len – ex_len ;
processed_bd = curr_bd;ex_len += pbuf->len;curr_bd = curr_bd->next;} while((processed_bd->flags_pktlen & EMAC_BUF_DESC_EOP)!= EMAC_BUF_DESC_EOP);

Alven:

回复 Alven:

我这边测试了StarterWare中的enetLwip例子,使用其中的udp进行数据传输,也存在类似的问题,PC端下发八十多次就会过程,发的速度也是很慢的,100ms发一个字节的包。下面附加中是测试例程中的代码。

emac.rar

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748的LWIP接收过载的问题
分享到: 更多 (0)