1.Ymodem 帧格式
1.1帧头
【1】以SOH(0x01)开始的数据包,信息块是128字节,该类型帧总长度为133字节。2的7次方为128
【2】以STX(0x02)开始的数据包,信息块是1024字节,该类型帧总长度为1029字节。2的10次方等于1024
1.2包序号
包序号为数据块的编号,将要传送的数据进行分块编号,包序号只有一个字节,范围0~255;对于数据包大于255的,则序号归零,重复计算。如下:
包序号和取反包序号,帧序的取反,YModem特地这么做是为了给数据是否正确提供一种判断依据,通过判断这两个字节是否为取反关系,就可以知道数据是否传输出错。
1.3校验
Ymodem采用的是CRC16校验算法,校验值为2字节,传输。crc高八位在前面,低八位在后面;CRC计算数据为信息块数据,不包括帧头、包头、包号反码。
2.Ymodem通讯过程
这里面的DATA可以为1024,格式问题,不比在意
1.握手信号
接收方需要发送Ymodem_c(字符C,ASII码为0x43)命令后,发送方收到收才可以开始发送起始帧
2.Ymodem起始帧
Ymodem起始帧并不直接传输文件的内容,而是现将文件名和文件大小置于数据帧中传输;起始帧是以SOH,133字节长度帧传输,格式如下:
其中包号为固定为0x00;Filename为文件名称,文件名称后必须加0x00作为结束;Filesize为文件大小值,文件大小值后必须加0x00作为结束;余下未满128字节数据区域,则以0x00填充。
3.Ymodem数据帧
【1】对于SOH帧,若余下数据小于128字节,则以0x1A填充,该帧长度仍为133字节。
●余下数据小于1024字节,但大于128字节,以1029字节帧长度发送,无效数据以0x1A填充。
●余下数据小于128字节,以133字节帧长度发送,无效数据以0x1A填充。
5.Ymodem结束帧
Ymodem的结束帧采用SOH 133字节长度帧传输的,该帧不携带数据(空包),即数据区、校验都以0x00填充。
6.Ymodem命令
7.YModem分类
YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送回使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部接收。
YModem-g传输形式与YModem-1K差不多,但是它去掉了数据的CRC校验码,同时在发送完一个数据块信息后,它不会等待接收端的ACK信号,而直接传输下一个数据块。正是它没有涉及错误校验,才使得它的传输速度比YModem-1K来得块。