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

6657GMAC接收问题

6657移植LWIP ,用6657的GE做驱动,运行一段时间后发现6657进入不了接收中断,最后用查询方式发现6657也没有收到数据,这是怎么回事啊,发送数据一直是好的???

Shine:

请问是运行一段时间开始出现不能接收数据的问题还是一开始就不能接收?不能接收数据的时候,发送可以吗?

user4646084:

回复 Shine:

一开始能收能发,运行一小会后,发现TCP断了,经查发现DSP收不到数据了,DSP还能发送数据,,直接MAC进行接收实验,一直能发数据,,就是不能收数据了,

user4646084:

回复 user4646084:

经过测试后发现重新初始化EMAC可以,请问一下这是怎么回事??

Shine:

回复 user4646084:

请问是不是在数据量大的情况下会出现这个问题?是不是有哪个资源耗尽了?

user4646084:

回复 Shine:

不太像,DSP收数据量都能小,而且就算是消耗完也不会存在6657的EMac口收不到数据,在收不到数据后我再次初始化了一下mac ,这时候大量发udp包给他都能收到,就是什么情况下能让它收不到数据

user4646084:

回复 Shine:

你好,经过测试,,当我们的RX descriptor 是第0个的时候,就收不到数据了,就是咱们keystone GE 里的
/* Set RX descriptor address *//* Use CPPI Ram for buffer descriptor and buffer */emac_mcb.rx_desc = (EMAC_Desc *)RX_DESC_ADD(0);/* setup RX descriptor */emac_mcb.rx_desc->pNext = 0;emac_mcb.rx_desc->pBuffer = (Uint8 *)RX_BUFF_ADD(0);emac_mcb.rx_desc->BufOffLen = RX_BUFF_SIZE;emac_mcb.rx_desc->PktFlgLen = EMAC_DSC_FLAG_OWNER;emac_mcb.lastrxhdp = (Uint32)(emac_mcb.rx_desc);
printf("%08x\n",(Uint32)RX_DESC_ADD(0)); //0x02c0a3c0
就是中断里面是这个描述符时候就不行了
中断程序:

if(PktFlgLen !=0)ethernetif_input(&Ti6657_netif);
/* re-initalize descriptor to recevie more data */pDesc->BufOffLen = RX_BUFF_SIZE;pDesc->PktFlgLen = EMAC_DSC_FLAG_OWNER;// if(count>=27)printf("%08x over\n",(Uint32)EMAC_REGS->RX0HDP);//当此处打印出是0x02c0a3c0,就不行了,意识是第一个描述符/* assign descriptor to HDP */if (0 == (Uint32)EMAC_REGS->RX0HDP){EMAC_REGS->RX0HDP = (Uint32)pDesc;}else{((EMAC_Desc *) (emac_mcb.lastrxhdp))->pNext = pDesc;}
emac_mcb.lastrxhdp = (Uint32)pDesc;

请问一下这个应该怎么解决???

Shine:

回复 user4646084:

请问移植前有这个问题么?

user4646084:

回复 Shine:

好像没有,移植前没有做太多测试,,

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