最近正在学习emac控制器的使用,我在TMS320C6657LS开发板上仿照TI6747evm的emac-loopback程序,自行编写了一个loopback的测试程序。在测试过程中发现如下问题,请专家帮忙解答下:
(1)我用如下的代码测试Rxcount的数值确实为2,这表明已经收到了数据包,但是相应的接收buffer中的数据全部为0,而且 packet_flags 的NO MATCH位置位了(其中Uint32 packet_flags = pDesc->PktFlgLen),这样导致测试数据包时,发生错误。我感觉接收到数据包后还是把它丢弃了,并没有copy到memory中。测试的代码如下:
while ( ( TxCount != 2 ) || ( RxCount != 2 ) ) //get Rx number and Tx number
{
if ( ErrCount )
errors++;
if ( timeout– < 0 )
break;
}
/* Validate the data */
for ( i = 6 ; i < size ; i++ )
if ( pDesc->pBuffer[i] != i ) //这里pBuffer[i]中的数据全部为0
return 7;
(2)发送包的长度分别为60和128,但是接收时长度变成了64和132,这多的4个字节是怎么来的?(我没有设置加CRC)
附件中是6747evm的测试程序,我是按照这个测试程序修改的代码并在6657上运行的,请专家帮忙看一下到底是什么问题?
teddy007:
自己顶一个。
版上哪位大神出来帮忙解答一下啊!
Andy Yin1:
建议使用6657 pdk下的emac例程EMACLoopback_testProject,这个就是用来测试loopback,可以在EVM上直接测试。
安装一个最新的mcsdk后会有6657 pdk,如pdk_C6657_1_1_2_6\packages\ti\drv\exampleProjects\EMACLoopback_testProject
teddy007:
回复 Andy Yin1:
我已经试过这个例子了,但是运行后发现有问题,在配置完mac地址后就一直停在那里不动,直到超时后,程序退出,也请专家看看是什么原因,谢谢
teddy007:
回复 teddy007:
Andy Yin,我今天再次运行了你提到的这个示例程序,但是结果仍然和之前的一样:程序在配置完mac地址后,就一直停在那里不动,直到定时器50s超时后,给出错误信息,最后就退出了。我之前就运行过这个程序,发现不对后才自己编写的上面那段loopback测试代码,现在两者都存在问题,有点没招了,请帮忙看一下问题究竟是在哪里,应该从什么地方去查问题?谢谢!
atower geng:
回复 teddy007:
teddy007,你好,最近我在测试TI给的emac loopback代码时,也出现这问题,不知道你有解决没?