使用TMDSEVM6678L调试MCSDK中的helloworld例程DSP只能收不能发 5C

有个问题希望大神们能帮忙解答一下,我用的是c6678EVM,调试MCSDK下的helloWorld例程的时候,程序没做任何改动,我是设置静态IP,DSP IP:192.168.2.100,PC IP:192.168.2.102,程序能正常运行,PC端使用winapps的helloworld.exe触发网络事件,DSP端只能收不能发,一直找不出原因,防火墙关掉了,能ping通,recvncfrom接受的内容也都是正确的,而打印DSP端sendto函数返回值一直是-1,如果正常的话返回值应该是发送的字节数,也即DSP已经接收到的字节数,运行后PC端显示如下:

图片说明

我看了下helloworld.exe的源程序,“timed out waiting for reply”是在select()函数返回值错误时输出的,我对网络通信还不太了解,不知道到底是什么原因引起的,感觉DSP接收完通信就断开了,我现在唯一能想到的是不是因为DSP和PC支持的以太网速率不匹配,我的PC的网卡最多只支持100M,选择的模式是自协商,不知道此例程是不是默认以太网速率是1000M,所以导致单向兼容。所以有下面两个问题:

1、以上情况是DSP端还是PC端的问题,sendto发送失败可能是什么原因引起的?

2、在使用NDK实现网络通信,要怎么设置以太网速率模式为指定的模式?

可能表述的不是很好,期待你的解答,谢谢!

1个回答

后来又试了下GE例程,在TMDSEVM6678L上跑的,好像还是只能收不能发,函数GE_2DSP_Test()里while((Get_TX_Good_Frames()-uiTxGoodFrames)<uiTotalNumPackets)的循环进不去,难道已经发送完成了,通过printf知道Get_TX_Good_Frames()值为32,uiTxGoodFrames为0.,但用抓包软件也没有DSP发送的任何信息。DSP发送以太网数据包是不是只是将包放到发送队列里,需要观察那个寄存器才知道发送成功呢,还有在调试的时候为什么设置的断点是灰色的,并提示“No code is associated with ../GE_2DSP_Test.c,line 129 is any loaded symbols”,但可以在反汇编里设置断点,但我也不知道对应C的汇编语句是什么,在反汇编双击某一行,源程序也不会跳转到对应的语句,这是哪儿设置的问题吗,还望高手指点一下,谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!