XModem与YModem

Posted jieruishu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XModem与YModem相关的知识,希望对你有一定的参考价值。

XModem用在串口异步传文件:

技术图片
1 #define SOH 0x01
2 #define STX 0x02
3 #define EOT 0x04
4 #define ACK 0x06
5 #define NAK 0x15
6 #define CAN 0x18
7 #define CTRLZ 0x1A
View Code

标准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;

技术图片

 

以上是关于XModem与YModem的主要内容,如果未能解决你的问题,请参考以下文章

Ymodem协议学习笔记

Android 固件升级之 Xmodem

Linux--用SecureCRT来上传和下载文件

做ssl通讯客户只给一个crt文件怎么用

X / YModem传输协议

X / YModem传输协议