Ymodem 协议详解

白昼怎懂夜的黑 提交于 2019-12-19 12:56:43

Ymodem 协议详解

1. Ymodem 帧格式

Ymodem 有两种帧格式,主要区别是信息块长度不一样。

在这里插入图片描述

1.1 帧头

帧头表示两种数据帧长度,主要是信息块长度不同。
在这里插入图片描述

1.2 包序号

数据包序号只有1字节,因此计算范围是0~255;对于数据包大于255的,序号归零重复计算。

1.3 帧长度

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

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

1.4 校验

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

2.Ymodem握手信号

握手信号由接收方发起,在发送方开始传输文件前,接收方需发送YMODEM_C (字符C,ASII码为0x43)命令,发送方收到后,开始传输起始帧。

3.Ymodem起始帧

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

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

4.Ymodem数据帧

Ymodem数据帧传输,在信息块填充有效数据。

帧头	包号	包号反码	有效数据	校验高位	校验低位SOH/STX	PN	XPN	DATA	CRC-H	CRC-L
  传输有效数据时主要考虑的是最后一包数据的是处理,SOH帧和STR帧有不同的处理。

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

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

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

5.Ymodem结束帧

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

在这里插入图片描述

6.Ymodem命令

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!