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.

TMS320C6748的LWIP接收过载的问题

Other Parts Discussed in Thread: TMS320C6748

各位好:

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

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

    0066.emac.rar

  • 请看看下面的链接是否有用?
    forums.xilinx.com/.../771797