有个问题希望专家能帮忙解答一下,我用的是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实现网络通信,要怎么设置以太网速率模式为指定的模式?
可能表述的不是很好,期待你的解答,谢谢!
user4217086:
专家们都太忙了,怎么没人理睬
user4217086:
只能自己顶了,今天试了下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的汇编语句是什么,在反汇编双击某一行,源程序也不会跳转到对应的语句,这是哪儿设置的问题吗,还望高手指点一下,谢谢!
liangyu zhao:
你好,请问您的问题解决了吗,我也正在做helloworld的调试。我的IP设置好像没有成功,Ping不通。能帮我解决看看吗?谢谢
user4217086:
回复 liangyu zhao:
你好,我的现在没问你了,请问你是自制的开发板还是EVM板呢?
liangyu zhao:
回复 user4217086:
谢谢你的回答,我用的是EVM板。现在的IP设置成功了。