Ymodem协议详解

1.Ymodem 帧格式

一帧的数据格式:帧头、包号、包号反码、数据、校验

名词

帧头

包号

包号反码

数据块

校验

简写

SOH/STX

PN

XPN

DATA

CRC_H

CRC_L

字节数

1

1

1

128/1024

1

1

 (1字节=8位,2字节=16位)

1.1帧头

 帧头表示两种数据帧长度,主要是信息块长度不同

【1】以SOH(0x01)开始的数据包,信息块是128字节,该类型帧总长度为133字节。2的7次方为128

【2】以STX(0x02)开始的数据包,信息块是1024字节,该类型帧总长度为1029字节。2的10次方等于1024

1.2包序号

包序号为数据块的编号,将要传送的数据进行分块编号,包序号只有一个字节,范围0~255;对于数据包大于255的,则序号归零,重复计算。如下:

数据帧0,数据帧1,数据帧2...数据帧255,

数据帧0,数据帧1,数据帧2...数据帧255,

...

包序号和取反包序号,帧序的取反,YModem特地这么做是为了给数据是否正确提供一种判断依据,通过判断这两个字节是否为取反关系,就可以知道数据是否传输出错。

1.3校验

Ymodem采用的是CRC16校验算法,校验值为2字节,传输。crc高八位在前面,低八位在后面;CRC计算数据为信息块数据,不包括帧头、包头、包号反码。

2.Ymodem通讯过程

如图为YModem协议的全过程,和其传输的数据格式。

这里面的DATA可以为1024,格式问题,不比在意

1.握手信号

通讯:SENDR(发送方)和RECIVER(接收方)

接收方需要发送Ymodem_c(字符C,ASII码为0x43)命令后,发送方收到收才可以开始发送起始帧

2.Ymodem起始帧

Ymodem起始帧并不直接传输文件的内容,而是现将文件名文件大小置于数据帧中传输;起始帧是以SOH,133字节长度帧传输,格式如下:

帧头

包号

包号反码

文件名称

文件大小

填充区

校验高位

校验低位

SOH

0x00

0xff

File name+0x00

File size+0x00

NULL(0x00)

CRC_H

CRC_L

  其中包号为固定为0x00;Filename为文件名称,文件名称后必须加0x00作为结束;Filesize为文件大小值,文件大小值后必须加0x00作为结束;余下未满128字节数据区域,则以0x00填充。

3.Ymodem数据帧

帧头

包号

包号反码

有效数据

校验高位

校验低位

SOH/STX

PN

XPN

DATA

CRC_H

CRC_L

【1】对于SOH帧,若余下数据小于128字节,则以0x1A填充,该帧长度仍为133字节。

【2】对于STX帧需考虑几种情况:

●余下数据等于1024字节,以1029长度帧发送;

●余下数据小于1024字节,但大于128字节,以1029字节帧长度发送,无效数据以0x1A填充。

●余下数据等于128字节,以133字节帧长度发送。

●余下数据小于128字节,以133字节帧长度发送,无效数据以0x1A填充。

5.Ymodem结束帧

Ymodem的结束帧采用SOH 133字节长度帧传输的,该帧不携带数据(空包),即数据区、校验都以0x00填充。

帧头

包号

包号反码

数据区

检验高位

校验低位

SOH

0x00

0xff

0x00

0x00

0x00

6.Ymodem命令

1)EOT、CAN信号由发送端发送

2)ASK、NAK、C信号由接收端发出

命令

命令码

备注

YMODEM_SOH

0x01

133字节长度帧

YMODEM_STX

0x02

1024字节长度帧

YMODEM_EOT

0x04

文件传输结束命令

YMODEM_ACK

0x06

接收正确应答命令

YMODEM_NAK

0x15

重传当前数据包请求命令

YMODEM_CAN

0x18

取消传输命令,连续发送5个该命令,中止传输

YMODEM_C

0x43

字符C

7.YModem分类

Ymodem分成YModem-1K与YModem-g

YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送回使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部接收。

YModem-g传输形式与YModem-1K差不多,但是它去掉了数据的CRC校验码,同时在发送完一个数据块信息后,它不会等待接收端的ACK信号,而直接传输下一个数据块。正是它没有涉及错误校验,才使得它的传输速度比YModem-1K来得块。

一般都会选择YModem-1K传输,平时所说的YModem也是指的是YModem-1K。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值