This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6678: TCP/IP无法正常收发

Part Number: TMS320C6678


Ti专家你好:

        有个问题想咨询一下你们,我们自研的DSP6678单板,用的是sys/bios,UDP协议收发目前是正常的,长时间测试也是正常的无丢数,但是用tcp协议一直无法正常收发,一直提示ETHERNET FRAME CHECK SEQUENCE INCORRECT ,不知道是否在nimu这个库里面有关于修改网络ECRC校验的,麻烦ti专家指导下。(底下是我的tcp代码和wireshark抓包)

void NetLineFx_tcp(UArg a0, UArg a1)
{
	struct timeval to;
	int recvCharLength;
	int	sendCharLength;
	int	pbuf;
   	char *ppbuf;
	HANDLE hBuffer;
	struct   sockaddr_in sinData, cliAddr;
	int err;
	char ncData[4] = {1,2,3,4};//网口发送数据,测试用
    int bufferLength=1*1024*1024;
    //Allocate the file environment for this task
    fdOpenSession( TaskSelf() );
    //Initialize the socket
    sendtcp  = socket(AF_INET, SOCK_STREAMNC, IPPROTO_TCP);
    if (sendtcp == INVALID_SOCKET)
    {
		printf(" socket(socksend) failed \n");
		//return -1;
    }
    //Initialize socket address in structure
    bzero( &sinData, sizeof(struct sockaddr_in) );
    sinData.sin_family = AF_INET;
    sinData.sin_len    = sizeof( sinData );
    sinData.sin_port = htons(65030);
    //Bind the socket
    err = bind (sendtcp, (struct sockaddr *)&sinData, sizeof(sinData));
	if(err == 0)
		printf("Send-Bind operation successfully done\n");
	else
	{
		printf("Send-Bind operation failed errno= %d\n", fdError());
		//return -1;
	}
	err = listen(sendtcp,100);
	if(err == -1)
	{
		printf("Listen failed!\r\n");
	}
	int size1;
	size1= sizeof(cliAddr);
	bzero( &cliAddr, sizeof(struct sockaddr_in) );
	accept(sendtcp,(struct sockaddr *)&cliAddr,&size1);
	setsockopt( sendtcp, SOL_SOCKET, SO_SNDBUF, &bufferLength, sizeof( int ) );
	setsockopt( sendtcp, SOL_SOCKET, SO_RCVBUF, &bufferLength, sizeof( int ) );
	for(;;)
	{
		recvCharLength = (int)recvnc( sendtcp, (void **)&ppbuf, 0, &hBuffer );
		printf("tcp receive data len %d\n",recvCharLength);
		if(recvCharLength > 0)
		{
			recvncfree( hBuffer );
			sendCharLength = (int)send( sendtcp, ncData , 16 , 0);
		}
		else
		{
			printf("FINISHED\n");
			break;
		}
	}
	fdClose(sendtcp);
}