《2022年Ymodem协议学习笔记3.docx》由会员分享,可在线阅读,更多相关《2022年Ymodem协议学习笔记3.docx(9页珍藏版)》请在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、学习的目
2、标(1)传送文件的实现添加一个命令, fsend ,这个命令接受一个参数,就是文件的最终存放目录;当开发板接收到 这个命令后,做好接收文件的预备;与超级终端进行协商后,将收到的文件写入指定位置;(2)接收文件的实现添加一个命令 frecv ,这个命令接受一个参数,就是超级终端所要索取的文件;当开发板接收 到这个命令后,就等待终端发送索取文件的协商要求;二、 Ymodem协议分析1、明确概念一步一步来,先把概念搞清晰;Ymodem协议是一种发送并等待的协议;即发送方发送一个数据包以后,都要等待接收方的确认;假如是 ACK信号,就可以发送新的包;假如是 、文件传输过程文件传输过程的开启:NAK信号
3、,就重发或者错误退出;(1)开启是由接收方开启传输,它发一个大写字母C开启传输;然后进入等待(SOH)状态,假如没有回应,就会超时退出;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载(2)发送方开头时处于等待过程中,等待 C;收到 C以后,发送( SOH)数据包开头信号,发 送序号( 00),补码( FF),“ 文件名” ,“ 空格” “ 文件大小” “ 除去序号外,补满 128字节” ,
4、CRC校验两个字节;进入等待(ACK)状态;(3)接收方收到以后, CRC校验满意,就发送ACK;发送方接收到 ACK,又进入等待“ 文件传输开启” 信号,即重新进入等待“C” 的状态;(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem支持 128 字节和1024 字节一个数据包; 128 字节以()开头,字节以()开头;接收方又发出一个“ ” 信号,开头预备接收文件;进入等待“ ” 或者“ ” 状态;()发送接收到“ ” 以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“ ” ;()文件发送完以后,发送方发出一个“ ” 信号,接收方也以“ ” 回应;
5、然后接收方会再次发出“ ” 开启另一次传输,如接着发送方会发出一个“ 全数据包” ,接收方“ ” 以后,本次通信正式终止;()当然相对于改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输答应发送多个文件,但这个特性我就不预备实现了;、所用到的符号#define MODEM_SOH 0x01 /数据块起始字符#define MODEM_STX 0x02 字节开头#define MODEM_EOT 0x04 文件传输终止#define MODEM_ACK 0x06 确认应答#define MODEM_NAK 0x15 显现错误#define MODEM_CAN 0x18 取消传输
6、#define MODEM_C 0x43 大写字母细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载、运算方法u16 YmodemCrcu8 *bytes, u32 len int crc = 0; int i, j; fori = 0; i len; i+ crc = crc bytesi 8; forj = 0; j 8; j+ ifcrc & int 0x8000 .= 0 crc = c
7、rc 1 0x1021; else crc = crc 1; return crc & 0xFFFF; 三、协议解析接收方:发出 0x43 表示恳求对方发送数据发送方:发出第 0 个数据包数据包构成:1:0x01 或者 0x02;0x01 表示 128 字节, 0x02 表示 1024 字节2:0x00 表示第 0 个数据包3:0xff 第几个数据包的补码4 4 + 文名的长度 文件名,以 0x00 终止4 + 文件名的长度 + 1 文件大小,以 0x00 终止正文不足 128 字节 补 0x00 Crc 校验接收方: 0x06 或者 0x15 0x06 应答, 0x15 非应签接收方: 0x
8、43 1 个数据包恳求对方发送正文发送方:发出第数据包构成:1:0x01 或者 0x02;0x01 表示 128 字节, 0x02 表示 1024 字节2:0x01 表示第 1 个数据包 3:0xfe 第几个数据包的补码4:正文 Crc 校验 接收方: 0x06 或者 0x15 注:发送方收到应答后立刻发送其次个数据包直到数据包发送终止后发出0x04 第 3 页,共 5 页 发送方:发出第2 个数据包细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - -
9、- - - -学习必备 欢迎下载数据包构成:1:0x01 或者 0x02;0x01 表示 128 字节, 0x02 表示 1024 字节2:0x02 表示第 2 个数据包 3:0xfd 第几个数据包的补码 4:正文 正文不足 128 位补 0x1a Crc 校验 接收方: 0x06 或者 0x15 发送方: 0x04 传送终止 接收方: 0x06 应答接收方: 0x43 再次恳求 发送方:发送全零数据包数据包的构成:1:0x01 2:0x00 3:0xff 4:128 个 0x00 Crc 校验 接收方: 0x06 数据通信终止文件传输过程的开启:(1)开启是由接收方开启传输,它发一个大写字母
10、C开启传输;然后进入等待(SOH)状态,假如没有回应,就会超时退出;(2)发送方开头时处于等待过程中,等待C;收到 C以后,发送( SOH)数据包开头信号,发送序号( 00),补码( FF),“ 文件名” ,“ 空格” “ 文件大小” “ 除去序号外,补满 128字节” , CRC校验两个字节;进入等待(ACK)状态;(3)接收方收到以后, CRC校验满意,就发送 输开启” 信号,即重新进入等待“C” 的状态;ACK;发送方接收到 ACK,又进入等待“ 文件传细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 5 页 - - - - - -
11、- - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem支持 128 字节和 1024 字节一个数据包; 128 字节以()开头,字节以()开头;接收方又发出一个“ ” 信号,开头预备接收文件;进入等待“ ” 或者“ ” 状 态;()发送接收到“ ” 以后,发送数据包,()(序号)(补码)( 位数据)(校验),等待接收方“ ” ;()文件发送完以后,发送方发出一个“ ” 信号,接收方也以“ ” 回应;然后接收方会再次发出“ ” 开启另一次传输,如接着发送方会发出一
12、个“ 全数据包” ,接收方“ ” 以后,本次通信正式终止;()当然相对于改进的地方就在于传输再次开启以后,又可以 发送另外一个文件,即一次传输答应发送多个文件,但这个特性我就不预备实现了;所用到的符号 #define MODEM_SOH 0x01 /数据块起始字符 #define MODEM_STX 0x02 字节开头 #define MODEM_EOT 0x04 文件传输终止 #define MODEM_ACK 0x06 确认应答 #define MODEM_NAK 0x15 显现错误 #define MODEM_CAN 0x18 取消传输 #define MODEM_C 0x43 大写字母0x0d = r 0x0a =n r是回车 第 5 页,共 5 页 - - - - - - - - - n是换行rn这样的组合是在windows 下的换行,假如以文本方式打开这个文件,就会自动依据操作系统平台,把全部换行自动转化为单个n 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -