U-boot中TFTP 解释
来源:互联网 发布:淘宝店如何运营和推广 编辑:程序博客网 时间:2024/06/06 13:57
一、 概述
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帧
说明
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帧
说明
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
- U-boot中TFTP 解释
- U-boot中TFTP 解释
- U-boot中TFTP 解释
- U-boot中TFTP 解释
- U-boot中TFTP 解释
- U-boot中TFTP 解释
- U-boot中TFTP解释及nfs命令的小bug
- U-boot中TFTP解释及nfs命令的小bug
- U-boot中用tftp命令直接烧写到flash中
- u-boot tftp流程分析
- U-Boot中使用tftp下载文件出现错误TFTP error: 'Access violation' (2)的解决办法
- u-boot命令解释
- u-boot环境变量解释
- u-boot命令解释
- u-boot 主要参数解释
- u-boot移植第五弹——2013.10u-boot通过tftp下载到内存中运行
- U-boot 之TFTP服务器配置
- 在U-boot上搭建TFTP服务器
- 实现整形转换成字符串
- start.s源码分析
- http://www.cnblogs.com/Olive116/archive/2012/11/12/2765934.html
- main_loop分析
- uboot第二阶段代码详细分析
- U-boot中TFTP 解释
- C语言笔试题-6
- arm知识问答
- arm内核种类(来自百度)
- 常见存储器分析
- jtag调式原理
- arm体系结构和接口技术
- 死锁
- 一些比较常见的算法复杂度