关于tftp中的TIMEOUT指的什么TIMEOUT @lishanchao

袁保康 2013-03-14 11:51:17
首先说明一下。u-boot中的tftp是正常的,timeout也没有出现问题。

但是我改进tftp让其直接写到flash中,见《 U-boot用tftp命令直接烧写到NandFlash V2.0》。改进好之后80k以下的可以了,但是是80k以上有就会出现问题:
Retry count exceeded; starting again

在网上找到是TIMEOUT的问题。

能说说有这个TIMEOUT的作用吗?u-boot中原来是5秒。出现了这个错误:
Retry count exceeded; starting again (根据我设置的计数为79次1k数据后出现的)

改为60秒,计数到82出现问题,(长了两个)。

但是我再增加也不会变了。

所以我要搞清楚 这个TIMEOUT到底是怎么个说法了。 请您指点一下。
...全文
1118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ospanic 2015-11-21
  • 打赏
  • 举报
回复
TFTP from server 192.168.1.101; our IP address is 192.168.1.87 Filename 'uImage'. Load address: 0x41600000 Loading: ####################T ###########T #################T ################# ########T #########T ################################################ #T #####T ########T ##T ##T ############### Retry count exceeded; starting again 在windows系统下用tftp32做服务器下载时就不会出现T,在linux下用tftp服务器就出现很多T而且还下载不成功,大神们能告诉我是为什么吗?在linux下传输小文件可以成功,下载内核等较大的文件就不能成功!
袁保康 2013-03-16
  • 打赏
  • 举报
回复
引用 1 楼 zmlovelx 的回复:
推测是接收time out 接收过程写? 可能是这样导致接收超时。
是你的回复让我感到论坛中还有人关注。让我有勇气找到的答案。所以分全给你了。
袁保康 2013-03-15
  • 打赏
  • 举报
回复
找到了,实质是 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个。不过应该改进自己的程序,而不是动这个参数。
袁保康 2013-03-15
  • 打赏
  • 举报
回复
引用 1 楼 zmlovelx 的回复:
推测是接收time out 接收过程写? 可能是这样导致接收超时。
感谢你的回答,可是我不太理解。它不是一个包一个包的吗?不是指一个包接收的时间吗?如果这个一个包在timerout时间内没有完成接收就说明有问题了。我是这样理解的。。不知道对不对。 要是说是整体的timerout也不太说的过去呀,为什么要有这个timerout呢?我tftp一次就得在timeout的时间内完成。这。。。 这个说法说不过去吧。 真心不理解。。。
帅得不敢出门 2013-03-15
  • 打赏
  • 举报
回复
推测是接收time out 接收过程写? 可能是这样导致接收超时。

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧