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

DSP网口通过TCP/IP协议接收数据过大就会失败

专家你好:

新手学习网口调试,遇到一些问题;

想从PC端通过网口TCP/IP协议发送数据给DSP,用

i = (int)recvnc( s, (void **)&p, 0, &hBuffer );

再用memcpy()函数将数据放入DDR中,当数据为120KB的时候,用网络调试助手可以存入,

但是自己编写的程序,最多只能到9600B,请问是什么原因?谢谢专家解答。

for(;;)
{

i = (int)recvnc( s, (void **)&p, 0, &hBuffer );
if(i >= 0)
{

memcpy(&rectest[0+k],p,i);
send(s,p,i,0);
k=k+i;
// printf("SUCCESS (%d) (%d)\n",i,k);
}
// while(1)
// {
// send(s,sendpBuf,Total_Num,0);
// }
else
{ printf("FINISHED\n");
break;
}
}

Andy Yin1:

你使用的具体是哪款dsp,运行的是TI的例程么,是PC向DSP发送数据超过9600B后就发送失败么,有check DSP软件接收是否有限制么。

Jog zhao:

回复 Andy Yin1:

谢谢专家回复!

我用的是DSP6678,例程是ndk下面的helloWord,DSP向PC发送数据是可以的,反过来DSP接收数据过大就会出错,但是没有check DSP软件接收是否有限制,不知道该如何check DSP软件是否有限制。

用网络调试助手NetAssist可以将数据存入DDR中,而且5.62M的数据完全正确,自己写的PC端程序利用网络调试助手也可以成功发送数据,但是PC与DSP两者之间

联调就会出现错误,想问一下专家问题可能出现在DSP上面,还是PC段程序上面,谢谢专家!

程序里面设置  int  bufferlength=64000;

setsockopt( s, SOL_SOCKET, SO_SNDBUF, &bufferlength, sizeof( int ) ); setsockopt( s, SOL_SOCKET, SO_RCVBUF, &bufferlength, sizeof( int ) );

for(;;) {// i=recv(s, (void *)&p, 3080, 0 ); i = (int)recvnc( s, (void **)&p, 0, &hBuffer ); if(i >= 0) {

memcpy(&rectest[0+k],p,i); send(s,p,i,0); k=k+i; recvncfree( hBuffer );// printf("SUCCESS (%d) (%d)\n",i,k); }// while(1)// {// send(s,sendpBuf,Total_Num,0);// } else { printf("FINISHED\n"); break; } }

Jog zhao:

回复 Andy Yin1:

现在发现当PC向DSP发送数据的时候,DSP一直在接收,开始的时候比较快,当数据到达135840B的时候,数据就接收的非常慢,还是在接收数据,请问是什么原因,

PC发送程序是自己编的,现在不知道是哪边的问题,谢谢专家解答!

Han Wu4:

回复 Andy Yin1:

你好,我也是这个问题,请问你问题解决了吗?

赞(0)
未经允许不得转载:TI中文支持网 » DSP网口通过TCP/IP协议接收数据过大就会失败
分享到: 更多 (0)