Hi everyone,
I've been using NtTftpRecv() function (under NDK) to transfer/receive a large file from my host through tftp protocol. I connect the ethernet cable supplied with my TMDSEVMC6678L to the board and another end to my host/PC. On my PC, I use a simple tftp server application, TFTP32. The problem is, the speed of transfer is very slow, around 480 kbytes/sec.
Here are what I've done about the problem:
1) I've changed my ethernet card that support gigabit ethernet. From my Windows Task Manager, it shows gigabit connection
2) I've changed the tftp server application to WinAgents TFTP Server 4, but I've got the same speed. Then I revert back to TFTP32 because it is freeware.
3) I've changed the TCP and UDP transmit and receive buffer from 8192 to 65535 inside my task (e.g.
// TCP Transmit buffer size
rc = 65535; //8192;
CfgAddEntry( hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTCPTXBUF, CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );
I don't see any improvement after performing the above steps. I'm sure there is no network congestion in the network since it is just my PC and the board. Can anyone suggest me other method? I was thinking about increasing the tftp packet size from 512 but not sure how to do that. I have tried to change SEGSIZE value in ti/ndk/nettools/tftp/tftp.h but it caused error during transmission.
Will appreciate any respons and help.
Cheers,
Rizuan
A little addition on my previous post, the data that I want to transfer to the board is 234881024 bytes in size. When testing using another PC at the other end of the ethernet cable, it tooks 145 sec. to complete. For the board, it tooks 482 sec. In both cases, the block size were configured as 512. Anyone interested to explain why this difference? My PC still using the magnetic hard drive whereas the memory that I want to write at the board is DDR3.
Kind regards,
A little addition on my previous post.
RIZUANI have tried to change SEGSIZE value in ti/ndk/nettools/tftp/tftp.h but it caused error during transmission
What I did was change the SEGSIZE value, and change
BytesRead = recvfrom( pTftp->Sock, ReadBuffer, DATA_SIZE, 0, (struct sockaddr *)&pTftp->tmpaddr, &addrLength );
in tftp.c to
BytesRead = recvfrom( pTftp->Sock, ReadBuffer, DATA_SIZE, MSG_WAITALL, (struct sockaddr *)&pTftp->tmpaddr, &addrLength );
suggested by Steven Connell in other thread and I receives the same error. The error that I meant was only 512 bytes are received to my buffer. Similar with my previous posts.
Is this mean that the tftp on the TMDSEVMC6678L are limited at 512 blocksize? I hope this is not true. Really hope I can transfer my data at a faster speed.
This post is being handled here:
http://e2e.ti.com/support/embedded/bios/f/355/p/210519/755812.aspx#755812