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 ...
随机推荐
- composer update 或者 composer install提示killed解决办法
出现此原因大多因为缓存不足造成,在linux环境可增加缓存解决. free -mmkdir -p /var/_swap_cd /var/_swap_#Here, 1M * 2000 ~= 2GB of ...
- Django框架之Filters(过滤器)、母版的使用
在Django的模板语言中,通过使用 过滤器 来改变变量的显示. 过滤器的语法: {{ value|filter_name:参数 }} 使用管道符"|"来应用过滤器. 注意事项: ...
- C:类型限定符
- 连接(JOIN)
join 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. INNER JOIN 从多个表中返回满足 JOIN 条件的所有行. INNER JOIN:如果表中有至少一个匹配,则返回行 L ...
- C# 酒店管理系统知识点
identity (m,n)自增 m开始n每次增加的值 默认(1,1) 列名 数据类型 约束 identity(m,n) 重新设置identity的值 1.语法 dbcc checkident ...
- Java 中 CAS
一.CAS 概念 CAS ,全称 Compare And Swap(比较与交换),解决多线程并行情况下使用锁造成性能损耗的一种机制. 实现思想 CAS(V.A.B) ,V为内存地址,A为预期原值,B ...
- mcast_get_ttl函数
#include <errno.h> #include <net/if.h> #include <sys/socket.h> #include <netine ...
- 抓包工具Charles破解版
官方网址:https://www.charlesproxy.com/ 破解jar包获取地址:https://www.zzzmode.com/mytools/charles/ 下载官方Charles安装 ...
- EF Expression 扩展
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; na ...
- 【STM32H7教程】第57章 STM32H7硬件JPEG编解码基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第57章 STM32H7硬件JPEG编解码基础知识 ...