zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    qt的.pro配置总结
    【GOJ 1489】Monster Hunter
    CPU 杂谈
    【CF 1061C|GOJ 3505】Multiplicity
    【CF 1039D|GOJ 3502】You Are Given a Tree
    我跳过的坑
    【CF 1101D|GOJ 3501】GCD Counting
    【HDU 5269|GOJ 739】xor的最低位
    beta阶段组间的140字互评
    【第七周】【新蜂站会】3
  • 原文地址:https://www.cnblogs.com/shangbolei/p/4376106.html
Copyright © 2011-2022 走看看