Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245739
  • 博文数量: 35
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 334
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-10 21:31
文章分类

全部博文(35)

文章存档

2010年(22)

2009年(13)

我的朋友

分类: 嵌入式

2009-11-11 11:59:39

    昨天在移植u-boot-2009.08 到utu2440开发板时(移植文档在:http://blog.chinaunix.net/u3/105764/showart_2091132.html),出现“TFTP error: 'Unsupported option(s) requested (8)‘”,今天花时间详细跟踪了一下,具体原因及解决方案如下:
 
一、问题原因分析:
    1、下载与我操作系统版本(fedora 10)一致的tftp server源代码tftp-hpa-0.48.tar.bz2,编译通过后,替换系统的tftpd程序,通过在源代码中添加调试信息,发现是由于 Uboot 端 tftp 程序传过来的Timeout参数不符合服务器端定义引起的:
 

Nov 11 10:46:12 HardWare in.tftpd[18275]: client timeout = 7810 , server timeout = 1-255


    tftp客户端传过来的timeout是7810,而服务器端定义的范围在1-255秒之间,不是服务器的问题,而是uboot中tftp参数设置的问题。

二、解决方案

    可以有两种方式解决:

    1、修改服务器端源代码(此种方案修改较为繁琐,因为fedora 发行版中不包含tftp源代码,需要自己下载、编译、替换,所以不建议采用此方案)

    2、修改Uboot端tftp代码

    在U-boot 1.3.4源代码中定义的是5秒

#define TIMEOUT        5UL        /* Seconds to timeout for a lost pkt    */


    u-boot-2009.08 中定义如下

#define TIMEOUT        (CONFIG_SYS_HZ/1000*5000UL)


    TIMEOUT 的值是跟据板子配置文件中的 CONFIG_SYS_HZ 值计算出来的,我的配置文件时从 Uboot目录 include/configs/smdk2410.h 复制过来的,值为 1562500,算出来后就等于7810

    可以直接修改 uboot 目录 net/tftp.c 中 TIMEOUT 定义为5000(注意是5000而不是5,因为u-boot.2009.08版本该宏定义改为以毫秒为单位了)

#define TIMEOUT 5000UL  /*UBOOT 2009.08 定义为毫秒值*/

    另外还一种方法是修改开发板对应的配置文件 include/configs/utu2440.h(未详细测试此修改是否会影响Uboot其他功能,所以不建议采用此方案,有兴趣的兄弟姐妹可以详细测试一下,^_^

#define    CONFIG_SYS_HZ            1000


    经过以上修改 Uboot tftp功能正常

U-Boot 2009.08 for utu2440 by Apollo5520 (http://Apollo5520.cublog.cn)

I2C: ready

DRAM: 64 MB

Flash: 0 kB

NAND: 64 MiB

Video: 240x320x16 20kHz 62Hz

In: serial

Out: serial

Err: serial

Net: CS8900A

Hit any key to stop autoboot: 0

utu2440 #

utu2440 # tftp 33008000 font.bin

TFTP from server 192.168.0.9; our IP address is 192.168.0.11

Filename 'font.bin'.

Load address: 0x33008000

Loading: ################################################################# ############

done

Bytes transferred = 1123240 (1123a8 hex)

utu2440 #

 

 

原创文章,转载请注明:转载自 风雨无阻博客(http://Apollo5520.cublog.cn

 本文链接地址:http://blog.chinaunix.net/u3/105764/showart.php?id=2091464

 


阅读(6629) | 评论(3) | 转发(3) |
给主人留下些什么吧!~~

edaplayer2015-06-03 14:29:59

chinaunix网友:你好,请问你最开始的那个调试信息是怎么加进去的?能够得到这个的信息 Nov 11 10:46:12 HardWare in.tftpd[18275]: client timeout = 7810 , server timeout = 1-255

可以用wireshark抓包

回复 | 举报

edaplayer2015-05-06 17:44:29

请问楼主Nov 11 10:46:12 HardWare in.tftpd[18275]: client timeout = 7810 , server timeout = 1-255是用什么办法打印出来的呢?

chinaunix网友2010-05-16 20:39:26

你好,请问你最开始的那个调试信息是怎么加进去的?能够得到这个的信息 Nov 11 10:46:12 HardWare in.tftpd[18275]: client timeout = 7810 , server timeout = 1-255