XModem与YModem
XModem用在串口异步传文件:
#define SOH 0x01
#define STX 0x02
#define EOT 0x04
#define ACK 0x06
#define NAK 0x15
#define CAN 0x18
#define CTRLZ 0x1A
标准Xmodem协议(每个数据包含有128字节数据)帧格
Xmodem包格式
Byte1 Byte2 Byte3 Byte4~131 Byte132~133
Start Of Header(SOH/STX) Packet NumberID ~(Packet NumberID) Packet Data 16-Bit CRC
0 发送发每次以128字节的帧结构发送,不足128字节则要用CTRLZ填充,每发送一次都要接收从机端回应的信息,因此效率较低,已经废弃:
1 如果正确发下一包则ACK,错误重发则NACK;强制停止则<CAN>,主机不需要发送<EOT>确认
2 发送方发送完成则发送方发送<EOT>通知接收方。接收方回以<ACK>进行确认;
3 启动发送由从机发起,'C'表示进行CRC16校验,NAK表示进行累加和校验。校验先CRCH后 CRCL
Ymodem:
YModem协议是XModem的改进协议,快速(一次传输1024字节的信息块,同时它还支持批文件传输),传输稳定。YModem分成YModem-1K(数据块1K,帧头STX,用的较多)与YModem-g(去掉CRC,不等待ACK所以速度快)
YModem的采用的是CRC16-CCITT欧洲版本的CRC校验,它的生成多项式为:x16+x12+x5+1
1、起始帧的数据格式:
SOH 00 FF filename[多加00作为结束 ] filezise[多加00作为结束 ] NUL[表示剩余以00填充 ] CRCH CRCL
如果文件大小小于1024则
SOH 01 FE data[,1A ...1A ] CRCH CRCL
2、数据帧的数据格式:
STX 01 FE data[1024] CRCH CRCL
剩余128~1024则:不足1024的用1A填充: STX [Index] [~index] data[,1A ...1A ] CRCH CRCL
剩余0~18则:不足128的用1A填充: SOH [num] [~~num] data[ ,1A...1A] CRCH CRCL
3、结束帧数据结构:
SOH 00 FF NUL[128个00] CRCH CRCL
eg:j将文件名为foo.c,大小为4196Byte(16进制为0x1064)的文件作为传输的过程:sizeof("foo.c")=6;sizeof("1064")=5;

ZMODEM:精华在于实现了类似于TCP在保持一个可靠连接的同时,采用滑窗技术避免过长的确认信息等待,从而提高传输速度。其他特点还包括发送方自动发送、自动重传;串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,secureCRT中集成了一个zmodem协议.

XModem与YModem的更多相关文章
- Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结
来自:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1. MA ...
- KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结
转:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1. MAR ...
- python调用Moxa PCOMM Lite通过串口Ymodem协议发送文件
本文采用python 2.7编写. 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需 ...
- STM32F103/429串口IAP+Ymodem升级
起因: 串口IAP升级在正点原子的例程中有讲解,正点原子的方法是:在RAM中开辟一个120K的数据空间,用来存放bin文件,bin文件通过串口一次性发送到单片机,然后再实现程序的跳转.但是这种方法在实 ...
- SecureCRT上传和下载文件
SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...
- Linux下几种文件传输命令 sz rz sftp scp
Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...
- SecureCRT上传和下载文件(下载默认目录)
SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使 ...
- bootloader(转)
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念.软件设计的主要任务以及结构框架等内容. 1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得 ...
- linux 学习一:安装jdk和tomcat
使用secureCRT 一.首先安装centos的rzsz. 1.yum自动安装:(yum安装rzsz) yum install lrzsz 2.手动安装方法如下:(包有问题,还是采用第一种方式) 2 ...
随机推荐
- python实现获取电脑IP、主机名、Mac地址
import socket import uuid # 获取主机名 hostname = socket.gethostname() #获取IP ip = socket.gethostbyname(ho ...
- iframe重新加载
方法1: document.getElementById('iframeId').contentWindow.location.reload(true); 方法2: document.getEleme ...
- cookie的封装
今天逛论坛,看到一个看起来写得好的函数,特此贴出分享: 原文地址[http://www.html-js.com/article/2638 ] 这个地址[https://github.com/jaywc ...
- tensorflow按需分配GPU问题
使用tensorflow,如果不加设置,即使是很小的模型也会占用整块GPU,造成资源浪费. 所以我们需要设置,使程序按需使用GPU. 具体设置方法: gpu_options = tf.GPUOptio ...
- dfs关于按钮问题(flip游戏POJ1753)以及和bfs的区别+板子
DFS深度搜索:之前一直和bfs的用法搞不太清楚:写了题才能慢慢参透吧,看了别的博客的代码,感觉能更好理解dfs在图中的应用: 这个题目的意思是一个人去救另一个人,找出最短的寻找路径: #includ ...
- 【PAT甲级】1085 Perfect Sequence (25 分)
题意: 输入两个正整数N和P(N<=1e5,P<=1e9),接着输入N个正整数.输出一组数的最大个数使得其中最大的数不超过最小的数P倍. trick: 测试点5会爆int,因为P太大了.. ...
- $ git push -u origin master
我们第一次推送master分支时,由于远程库是空的,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来 ...
- WCF全面解析之 第四讲 使用代码 部署服务
关键代码: ServiceHost host = null; //启动 private void button1_Click(object sender, EventArgs e) { host=ne ...
- jmeter录制浏览器Https请求
Jmeter录制脚本时,跟http脚本录制主要区别是,https录制需要添加安全证书. 那么在jmeter上如何操作呢?且看下面的操作步骤 一.jmeter的代理服务器及证书配置 1.打开jmeter ...
- 14.浏览器屏幕缩放bug修复
问题:浏览器缩放时,轮播图显示不全,滚动水平滚动条,发现图片缺失 解决:隐藏水平滚动条,页面都只提供垂直滚动条的需求 global.css /* 水平超出部分默认隐藏 */ #app { overfl ...