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的更多相关文章

  1. Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结

    来自:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1.       MA ...

  2. KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结

    转:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1.       MAR ...

  3. python调用Moxa PCOMM Lite通过串口Ymodem协议发送文件

    本文采用python 2.7编写. 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需 ...

  4. STM32F103/429串口IAP+Ymodem升级

    起因: 串口IAP升级在正点原子的例程中有讲解,正点原子的方法是:在RAM中开辟一个120K的数据空间,用来存放bin文件,bin文件通过串口一次性发送到单片机,然后再实现程序的跳转.但是这种方法在实 ...

  5. SecureCRT上传和下载文件

    SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...

  6. Linux下几种文件传输命令 sz rz sftp scp

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  7. SecureCRT上传和下载文件(下载默认目录)

    SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使 ...

  8. bootloader(转)

    本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念.软件设计的主要任务以及结构框架等内容. 1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得 ...

  9. linux 学习一:安装jdk和tomcat

    使用secureCRT 一.首先安装centos的rzsz. 1.yum自动安装:(yum安装rzsz) yum install lrzsz 2.手动安装方法如下:(包有问题,还是采用第一种方式) 2 ...

随机推荐

  1. MBA 报考

      1. 作者:MBA薛老师链接:https://www.zhihu.com/question/277811289/answer/397083199来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...

  2. docker中安装mysql遇到的问题

    在虚拟机上用docker安装了一个mysql最新版,然后在本地用sqlyog区连接报错‘plugin  cachin_sha2_password  could  not  be  loaded’经过上 ...

  3. Centos610-FastDFS系列篇

    最近有使用到FastDFS,考虑到实际在Linux上面配置频率比较低(属于一次性配置),所以本文开始记录相关安装过程,以方便后续使用. 1.单机版安装配置 FastDFS单机模式安装配置 2.集群模式 ...

  4. windows10下VS2013搭建opencv2.4.9吐血之作

    1.下载opencv2.4.9.exe文件,然后双击extract文件到指定目录 2.按此链接安装opencv:https://www.cnblogs.com/cuteshongshong/p/405 ...

  5. springBoot日志快速上手简单配置

    默认配置 日志级别从低到高分为: TRACE < DEBUG < INFO < WARN < ERROR < FATAL. 如果设置为 INFO ,则低于 INFO 的信 ...

  6. acm数论之旅--欧拉函数的证明

    随笔 - 20  文章 - 0  评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ...

  7. redis介绍、单机安装以及java调用

    什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求(非关系型的.分布式的.开源的.水平可扩展 ...

  8. js中的局部函数和全局函数的调用

    //局部函数和全局函数的特点 function fc1(){ var name ="chenhao"; function fc2(){ var age = 30; alert(na ...

  9. Plastic Sprayers Manufacturer - The Basic Components Of A Spray Bottle

    From cleaning to personal beauty, many people use spray bottles every day, but few people know how t ...

  10. python opencv:像素操作

    图片的像素 像素:组成图片的单位 RGB:颜色由 RGB三种颜色组成 颜色深度:对于8bit的颜色深度来说,它可以表示的颜色范围是 0 ~ 255,对于RGB图片来说,8位颜色深度可以表示 (2^8) ...