1. 简介     

        YModem协议是Xmodem协议的升级版本,传输数据的大小增加了,可达每帧数据传输1024字节,可作为一个高效的文件数据传输协议。

2. 特点

  1. 传输数据量大,可达1024字节;
  2. 错误检验方式:使用循环冗余码校验(CRC校验)。

3. 相关字符和帧格式说明

3.1 字符说明

ymodem协议升级 ymodem协议程序_数据传输

3.2 帧格式说明

3.2.1 帧格式

帧格式

数据包开始信号

(1字节)

发送序号

(1字节)

发送序号补码

1字节)

数据区

(128/1024字节)

CRC高字节

(1字节)

CRC低字节

(1字节)

SOH/STX

index

~index

STX/SOH

发送128字节/发送1024字节

CRCL

16位CRC校验码的低8

3.2.2 起始帧(133字节)

起始帧

SOH

00

FF

filename[]+filesize[]+NULL[](共128字节)

CRCH

CRCL

filename[]

存放文件名(存放文件名的十六进制),文件名后一位存放0x00作为结束标志。

filesize[]

存放文件的大小,后加0x00作为结束标志。

NULL[]

表示剩下的字节填充0x00

CRCH

16位CRC校验码的高8

CRCL

16位CRC校验码的低8

3.2.3 数据帧(133字节/1029字节)

数据帧

STX/SOH

[帧序号]

[帧序号的反码]

data[0]+data[1]+data[2]+…..(128字节/1014字节)

CRCH

CRCL

STX/SOH

发送128字节/发送1024字节

data

如果传输数据大小不足128字节,则剩余部分全部填充1A

CRCH

16位CRC校验码的高8

CRCL

16位CRC校验码的低8

3.2.4 结束帧(133字节)

结束帧

SOH

00

FF

NULL+NULL+NULL+…..+NULL(128字节)

CRCH

CRCL

NULL

结束帧NULL全部填入0x00

4. 传输流程说明

                            

ymodem协议升级 ymodem协议程序_数据传输_02

                                                                                        图1. 传输流程示意图

注意的点:

1. 帧的发送之前,都是通过接收端发送字符‘c’来请求;

2. 接收端接收到帧之后,都会进行一次ACK应答。

流程文字说明:

1. 接收方开启传输,接收方发送一个字符’c’,进入等待(SOH)状态,没回应,超时退出;

2. 发送方开始时处于等待状态,等待字符’c’。若发送方收到’C’后,发送第一帧(起始帧)发送完毕后,进入等待(ACK)状态;

3. 接收方收到第一帧数据包后,进行CRC校验,校验通过,则发送ACK;

4. 发送方收到ACK,又进入等待“文件传输开启”信号,进入等待’c’状态;

5. 接收方又发出一个字符’c’,开始准备接收文键。进入等待SOH或STX状态;

6. 发送方收到字符’c’后,开始发送数据帧;

7. 接收方收到数据后,发送一个ACK,若要传输数据包含多帧数据,继续ACK应答,直到所有数据传输完毕;

8. 数据传输完毕后,发送方发送EOT,第一次···以NACK应答,进行二次确认。发送方收到NAK后,重发EOT,接收方第二次收到结束符,就发送ACK应答。最后接收方在发送一个字符’c’开启另一次传输,发送方在没有第二个文件要传输的情况下,发送结束帧,正式结束数据传输。