找到了,实质是 T的个数,也就是TftpTimeoutCountMax。
TftpTimeout (void)
{
if (++TftpTimeoutCount > TftpTimeoutCountMax) {
puts ("\nRetry count exceeded; starting again\n");
#ifdef CONFIG_MCAST_TFTP
mcast_cleanup();
#endif
NetStartAgain ();
} else {
puts ("T ");
NetSetTimeout (TftpTimeoutMSecs, TftpTimeout);
TftpSend ();
}
}
#define CONFIG_NET_RETRY_COUNT 20
#ifndef CONFIG_NET_RETRY_COUNT
# define TIMEOUT_COUNT 10 /* # of timeouts before giving up */
#else
# define TIMEOUT_COUNT (CONFIG_NET_RETRY_COUNT * 2)
#endif
static int TftpTimeoutCountMax = TIMEOUT_COUNT;
根据这个判断,这个40的来源就有了,加大它就OK了。哈哈
TFTP from server 192.168.1.229; our IP address is 192.168.1.230
Filename '90k.bin'.
Load address: 0x0
Loading: T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T
Retry count exceeded; starting again
dm9000 i/o: 0x20000000, id: 0x90000a46
看重启的时候都是40个T。我还以为我改进的程序有问题呢?
TFTP from server 192.168.1.229; our IP address is 192.168.1.230
Filename '90k.bin'.
Load address: 0x0
Loading: #T T T T T #T T T T T #T T T T T #T T T T T #T T T T T #T T T T T #T T T T T #T T T T T #
Retry count exceeded; starting again
dm9000 i/o: 0x20000000, id: 0x90000a46
看都是40个。不过应该改进自己的程序,而不是动这个参数。