<前言>

嵌入式开发是一个交叉开发的模式,需要将宿主机上的文件烧写到目标机上。

方式:

JTAG

USB

串口

网络

<tftp下载>

首先需要将宿主机架成一个TFTP的服务器,其次开发板需要具有从tftp服务下载数据的能力。一般可以用串口调试工具进行调试

<tftp交互过程>

(1)客户机向服务器发送请求包

(2)服务器向客户机发送数据包(每个数据包字节数不能超过512个字节)

(3)客户机向服务器发送应打包,表示已经接受到数据(如果不发送应打包,则服务器则不停的发送数据包,直到获应答包或者超过某个时间)

<tftp数据报文格式>

由上图分析:

TFTP(Trivial File Transfer Protocol文件传输协议)协议属于UDP(User Datagram Protocol用户数据协议)协议

而UDP协议又数据IP(Internet Protocol网络地址协议)协议

操作码:用于区分报文是请求报文还是数据报文

OP = 1 请求报文

OP = 2 上传数据

OP = 3 数据报文

OP = 4 相应报文

OP = 5 出错报文

模式:用于决定下载或上传模式多少位的形式下载或以ASCII码的形式下载

<TFTP客户端的实现>

(1)向目标机(服务器)发送ARP请求包以获取目标机的(服务器)的mac地址

(2)目标机(服务器)发送应答包,客户机从中获取mac地址

(3)由获取目标机的mac地址发送tftp IP请求包

(4)目标机(服务器)发送数包

(5)客户机接受数据包后发送应答包

(6)目标机(服务器)接受应答包后继续发送数据包,如此循环将数据全部发送完成

IP协议格式

UDP 协议格式

tftp协议的更多相关文章

  1. 初入网络系列笔记(6)TFTP协议

    一.借鉴说明,本博文借鉴以下博文 1.锤子,FTP协议,http://www.cnblogs.com/loadrunner/archive/2008/01/09/1032264.html 2.suna ...

  2. 【转】 基于TFTP协议的远程升级设计

    版权声明:本文为博主原创文章,未经博主允许不得转载.联系邮箱:zhzhchang@126.com 说明:由于CSDN博客编辑器对word格式近乎不支持,因此对表格使用了图片方式(最后一个表格未使用图片 ...

  3. 基于TFTP协议的远程升级设计

    说明:因为CSDN博客编辑器对word格式近乎不支持.因此对表格使用了图片方式(最后一个表格未使用图片格式.大家能够看看效果),CSDN博客编辑器上传图片十分不人性化(直接复制图片是不显示的),因此本 ...

  4. UNIX网络编程——分析一帧基于UDP的TFTP协议帧

    下图是UDP的段格式: 相比TCP段格式,UDP要简单得多,也没啥好说的,需要注意的是UDP数据长度指payload加上首部的长度. 下面分析一帧基于UDP的TFTP协议帧: 以太网首部 0000: ...

  5. Python socket之tftp协议

    1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...

  6. 分析一帧基于UDP的TFTP协议帧

    下图是UDP的段格式: 相比TCP段格式,UDP要简单得多,也没啥好说的,需要注意的是UDP数据长度指payload加上首部的长度. 下面分析一帧基于UDP的TFTP协议帧: 以太网首部 0000: ...

  7. Python的网络编程[2] -> TFTP 协议[0] -> TFTP 的基本理论

    TFTP 的基本理论 目录 通信流程 数据报文格式 传输终结 异常处理 数据丢失和超时 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是UDP协议族中的一个 ...

  8. TFTP协议介绍-python实现tftp客户端

    1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...

  9. Vsftpd服务 和 TFTP协议

    FTP 文件传输协议 (File Transfer Protocol) FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据 ...

随机推荐

  1. linux源码安装nginx

    任务目标:源码安装nginx,作为web服务修改配置文件,让配置生效,验证配置 首先要去官网nginx.org下载一个tar包: tar xvf 解包 进入到解包出来的目录,对configure进行配 ...

  2. Ajax异步请求struts的JSON机制(省市区三级联动)

    1.struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts P ...

  3. lucene总结——(十七)

    (01)rownum和rowid有何区别?      rownum在表结构中是看不见的,只能在select中明确写出rownum方可显示      rownum与不同的表绑定在一起,每张表都有自已的r ...

  4. mysql 增加字段脚本,以及删除主键约束的脚本,存储过程

    //增加一个库下面所有表的row_id和其他9个字段的存过 DELIMITER $$ USE `erptest`$$ DROP PROCEDURE IF EXISTS `UPTABLE`$$ CREA ...

  5. 如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】

    前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从 ...

  6. Python 使用 Redis 操作

    1.redis简介 redis是一款开源免费的高性能key-value数据库,redis特点: 支持更多的数据类型:字符串(String).列表(List).哈希(Map).数字(Int).集合(Se ...

  7. caffe+win7+vs2013 仅CPU环境安装

    笔者对深度学习一直充满着好奇与兴趣,之前学校都是研究图像处理的特征点方式,机器学习使用也不多,别提深度学习了. 在看了李宏毅大佬的PPT后,有了初步的认识,虽然是渣渣电脑,也想自己跑几个深度模型. 说 ...

  8. WINDOWS 2008 采用IP策略解决445,139等病毒攻击问题

    @echo off title 创建IP安全策略,屏蔽135.. . . . 等端口 :: 配置说明文档地址 :: http://blog.csdn.net/lpc_china/article/det ...

  9. 15 链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点. p1先走k-1步,p1 p2再一起走 C++: /* struct ListNode { int val; struct ListNode *next; L ...

  10. Cocos2d-x for Windows Phone 用法总结

    鉴于诺基亚(微软移动这个没人用的手机)开发者比较少,cocos2dx移植方面更是少的问题,总结一下WP8移植方面的资料,希望对大家有用,自己也当作笔记留念. 1.WP8方面有两种方式创建项目,Hell ...