• U-boot中TFTP 解释


    一、      概述
          U-boot中的TFTP用于发送较小的文件。下层使用UDP协议,发送使用UDP 69端口,每次发送的最大分组为512 Bytes。发送双方采用超时重传机制。数据传输模式为octet模式( 二进制模式 )。
        在U-boot中使用tftp功能可以使用如下命令:
                tftp  MemoryAddress  FileName
        其中MemoryAddress为放入文件的内存首地址,FileName为传送文件的文件名(文件需放在tftp默认目录下)。
     
    二、      使用TFTP
    使用TFTP传送文件的步骤:
    1 使用时已经初始化以下变量:
    NetOurIP (本机IP地址,定义在Net.c文件)
    NetServerIP(TFTP服务器的IP地址,定义在Net.c文件)
    BootFile (需要传送文件的文件名,定于在Tftp.c)
    NetOurGatewayIP (本机的网关地址)
    NetOurSubnetMask (本机子网掩码)
    2 调用TftpStart 函数开始文件传送。
     
    三、      TFTP实现
    (1)客户端状态
    TFTP使用一个变量TftpState来描述TFTP客户端可能的5种状态:
    状态
     说明
     
    STATE_RRQ
     发出读取请求,正等待批准
     
    STATE_DATA
     正在接收数据
     
    STATE_TOO_LARGE
     文件太大
     
    STATE_BAD_MAGIC
     Bad magic number
     
    STATE_OACK
     收到OACK帧
     
     
    包类型
    使用TFTP传送的包分为6种类型:
    类型
     说明
     
    TFTP_RRQ
     请求读取文件
     
    TFTP_WRQ
     请求写文件
     
    TFTP_DATA
     数据包
     
    TFTP_ACK
     确认包
     
    TFTP_ERROR
     包含出错信息的包
     
    TFTP_OACK
     option acknowledge,当服务器超时未收到客户端的ACK帧时,主动发出一个OACK帧
     
    主要函数及作用
    U-boot中与tftp协议有关的文件有tftp.c与tftp.h文件,主要函数包括:
     
    static __inline__ void
    store_block (unsigned block, uchar * src, unsigned len);
    /* 根据预先设定的地址load_addr决定将首地址为src,长度为len的block个数据块写入flash 或写入内存*/
     
    static void
    TftpSend (void) ;
    /* 根据TftpState变量的不同值发送不同的 Tftp包 (使用UDP协议发送) */
     
    static void
    TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len) ;
    /* 处理收到的Tftp包 */
     
    static void
    TftpTimeout (void);
    /* 超时处理函数 */
     
    void
    TftpStart (void);
    /* 初始化各个需要的数据 然后开始发送TFTP读请求 */
     
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/funy_liu/archive/2010/08/03/5784218.aspx
     
  • 相关阅读:
    sharepoint环境的安装及form表单验证等遇到的问题及总结。
    话说在这里开辟个情感专栏怎么样呢?
    Android学习4—短信发送器的实现
    Android学习2项目文件列表简单分析
    Android学习3—电话拨号器
    腾讯内推一面记录
    日程日历示例
    屏幕设配介绍
    深入理解移动开发的模板复用机制
    沉浸屏幕状态栏
  • 原文地址:https://www.cnblogs.com/shangbolei/p/4376106.html
Copyright © 2020-2023  润新知