《2022年Ymodem协议学习笔记 2.pdf》由会员分享,可在线阅读,更多相关《2022年Ymodem协议学习笔记 2.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习必备欢迎下载Ymedom协议一、Ymodem 协议学习的目的1、Ymodem 协议的应用打开超级终端,在传送主菜单里,有接收文件和发送文件的子菜单。也就是超级终端可以与连接的对象之间相互传送文件。打开发送文件选项,可知,只需要选择“文件名”和“协议”两个选项,就可以进行文件的传送了。协议的类型有 7中,Xmodem 及改进的 1k-Xmodem , Ymodem 和 Ymodem-G , Zmodem 及其改进协议,以及 Kermit ,我这次主要学习嵌入式系统中用得较多的Ymodem 协议。2、学习的目标(1)传送文件的实现添加一个命令, fsend ,这个命令接受一个参数,就是文件的最
2、终存放目录。当开发板接收到这个命令后,做好接收文件的准备。与超级终端进行协商后,将收到的文件写入指定位置。(2)接收文件的实现添加一个命令 frecv ,这个命令接受一个参数,就是超级终端所要索取的文件。当开发板接收到这个命令后,就等待终端发送索取文件的协商要求。二、Ymodem 协议分析1、明确概念一步一步来,先把概念搞清楚。Ymodem 协议是一种发送并等待的协议。即发送方发送一个数据包以后,都要等待接收方的确认。如果是 ACK 信号,则可以发送新的包。如果是NAK 信号,则重发或者错误退出。、文件传输过程文件传输过程的开启:(1)开启是由接收方开启传输,它发一个大写字母C开启传输。然后进
3、入等待(SOH )状态,如果没有回应,就会超时退出。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 学习必备欢迎下载(2)发送方开始时处于等待过程中,等待C 。收到 C以后,发送( SOH )数据包开始信号,发送序号( 00),补码( FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”, CRC 校验两个字节。进入等待(ACK )状态。(3)接收方收到以后, CRC 校验满足,则发送ACK
4、。发送方接收到 ACK ,又进入等待“文件传输开启”信号,即重新进入等待“C ”的状态。(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem 支持 128 字节和1024 字节一个数据包。 128字节以()开始,字节以()开始。接收方又发出一个“”信号,开始准备接收文件。进入等待“”或者“”状态。()发送接收到“”以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“”。()文件发送完以后,发送方发出一个“”信号,接收方也以“”回应。然后接收方会再次发出“”开启另一次传输,若接着发送方会发出一个“全数据包”,接收方“”以后,本次通信正式结束。()当然相对于改
5、进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。、所用到的符号#define MODEM_SOH 0 x01 /数据块起始字符#define MODEM_STX 0 x02 字节开始#define MODEM_EOT 0 x04 文件传输结束#define MODEM_ACK 0 x06 确认应答#define MODEM_NAK 0 x15 出现错误#define MODEM_CAN 0 x18 取消传输#define MODEM_C 0 x43 大写字母名师归纳总结 精品学习资料 - - - - - - - - - - - -
6、 - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 学习必备欢迎下载、计算方法u16 YmodemCrc(u8 *bytes, u32 len) int crc = 0; int i, j; for(i = 0; i len; i+) crc = crc bytesi 8; for(j = 0; j 8; j+) if(crc & (int) 0 x8000) != 0) crc = crc 1 0 x1021; else crc = crc 1; return crc & 0 xFFF
7、F; 三、协议解析接收方:发出0 x43 表示请求对方发送数据发送方:发出第0 个数据包数据包构成:1:0 x01 或者 0 x02;0 x01 表示 128 字节, 0 x02 表示 1024 字节2:0 x00 表示第 0 个数据包3:0 xff 第几个数据包的补码4 4 + 文名的长度文件名,以0 x00 结束4 + 文件名的长度+ 1 文件大小,以0 x00 结束正文不足128 字节补 0 x00 Crc校验接收方: 0 x06 或者 0 x15 0 x06 应答, 0 x15 非应签接收方: 0 x43 请求对方发送正文发送方:发出第1 个数据包数据包构成:1:0 x01 或者 0
8、x02;0 x01 表示 128 字节, 0 x02 表示 1024 字节2:0 x01 表示第 1 个数据包3:0 xfe 第几个数据包的补码4:正文Crc校验接收方: 0 x06 或者 0 x15 注:发送方收到应答后马上发送第二个数据包直到数据包发送结束后发出0 x04 发送方:发出第2 个数据包名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 学习必备欢迎下载数据包构成:1:0 x01 或者 0 x02;
9、0 x01 表示 128 字节, 0 x02 表示 1024 字节2:0 x02 表示第 2 个数据包3:0 xfd 第几个数据包的补码4:正文正文不足128 位补 0 x1a Crc校验接收方: 0 x06 或者 0 x15 发送方: 0 x04 传送结束接收方: 0 x06 应答接收方: 0 x43 再次请求发送方:发送全零数据包数据包的构成:1:0 x01 2:0 x00 3:0 xff 4:128 个 0 x00 Crc校验接收方: 0 x06 数据通信结束文件传输过程的开启:(1)开启是由接收方开启传输,它发一个大写字母C开启传输。然后进入等待(SOH )状态,如果没有回应,就会超时
10、退出。(2)发送方开始时处于等待过程中,等待C 。收到 C以后,发送( SOH )数据包开始信号,发送序号( 00),补码( FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”, CRC 校验两个字节。进入等待(ACK )状态。(3)接收方收到以后, CRC 校验满足,则发送ACK 。发送方接收到 ACK ,又进入等待“文件传输开启”信号,即重新进入等待“C ”的状态。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 5 页 - - -
11、 - - - - - - 学习必备欢迎下载(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem 支持 128 字节和1024 字节一个数据包。 128字节以()开始,字节以()开始。接收方又发出一个“”信号,开始准备接收文件。进入等待“”或者“”状态。()发送接收到“”以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“”。()文件发送完以后,发送方发出一个“”信号,接收方也以“”回应。然后接收方会再次发出“”开启另一次传输,若接着发送方会发出一个“全数据包”,接收方“”以后,本次通信正式结束。()当然相对于改进的地方就在于传输再次开启以后,又可以发送另外
12、一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。所用到的符号#define MODEM_SOH 0 x01 /数据块起始字符#define MODEM_STX 0 x02 字节开始#define MODEM_EOT 0 x04 文件传输结束#define MODEM_ACK 0 x06 确认应答#define MODEM_NAK 0 x15 出现错误#define MODEM_CAN 0 x18 取消传输#define MODEM_C 0 x43 大写字母0 x0d = r 0 x0a =n r是回车n是换行rn这样的组合是在windows下的换行,如果以文本方式打开这个文件,就会自动根据操作系统平台,把全部换行自动转化为单个n 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 5 页 - - - - - - - - -