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.
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.
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:
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.