《2023年Ymodem协议学习笔记.pdf》由会员分享,可在线阅读,更多相关《2023年Ymodem协议学习笔记.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)状态,如果没有回应,就会超时退出。学习必备 欢迎下载(2)发送方开始时处于等待过程中,等待 C。收到 C以后,发送(SOH)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满 128字节”,CRC校验两个字节。进入等待(ACK)状态。(3)接收方收到以后,CRC校验满足,则发送 ACK。发送方接收到 ACK,又进入等待“文件传输开启”信号,即重新进入等待“C”的状态。(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem支持 128 字节和1024 字节一个数据包。128 字节以()开始,字节以()开始。接收方又发出
4、一个“”信号,开始准备接收文件。进入等待“”或者“”状态。()发送接收到“”以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“”。()文件发送完以后,发送方发出一个“”信号,接收方也以“”回应。然后接收方会再次发出“”开启另一次传输,若接着发送方会发出一个“全数据包”,接收方“”以后,本次通信正式结束。()当然相对于改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。、所用到的符号#define MODEM_SOH 0 x01/数据块起始字符#define MODEM_STX 0 x02 字节开始#define
5、MODEM_EOT 0 x04 文件传输结束#define MODEM_ACK 0 x06 确认应答#define MODEM_NAK 0 x15 出现错误#define MODEM_CAN 0 x18 取消传输#define MODEM_C 0 x43 大写字母 可以进行文件的传送了协议的类型有中及改进的和及其改进协议以及我后做好接收文件的准备与超级终端进行协商后将收到的文件写入指定位析明确概念一一来先把概念搞清楚协议是一种发送并等待的协议即发送学习必备 欢迎下载、计算方法 u16 YmodemCrc(u8*bytes,u32 len)int crc=0;int i,j;for(i=0;i
6、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 xFFFF;三、协议解析 接收方:发出 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 x
7、00 结束 正文不足 128 字节 补 0 x00 Crc校验 接收方:0 x06 或者 0 x15 0 x06 应答,0 x15 非应签 接收方:0 x43 请求对方发送正文 发送方:发出第 1 个数据包 数据包构成:1:0 x01 或者 0 x02;0 x01 表示 128 字节,0 x02 表示 1024 字节 2:0 x01 表示第 1 个数据包 3:0 xfe 第几个数据包的补码 4:正文 Crc校验 接收方:0 x06 或者 0 x15 注:发送方收到应答后马上发送第二个数据包直到数据包发送结束后发出 0 x04 发送方:发出第 2 个数据包 可以进行文件的传送了协议的类型有中及改
8、进的和及其改进协议以及我后做好接收文件的准备与超级终端进行协商后将收到的文件写入指定位析明确概念一一来先把概念搞清楚协议是一种发送并等待的协议即发送学习必备 欢迎下载 数据包构成:1:0 x01 或者 0 x02;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 x
9、00 3:0 xff 4:128 个 0 x00 Crc校验 接收方:0 x06 数据通信结束 文件传输过程的开启:(1)开启是由接收方开启传输,它发一个大写字母 C开启传输。然后进入等待(SOH)状态,如果没有回应,就会超时退出。(2)发送方开始时处于等待过程中,等待 C。收到 C以后,发送(SOH)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满 128字节”,CRC校验两个字节。进入等待(ACK)状态。(3)接收方收到以后,CRC校验满足,则发送 ACK。发送方接收到 ACK,又进入等待“文件传输开启”信号,即重新进入等待“C”的状态。可
10、以进行文件的传送了协议的类型有中及改进的和及其改进协议以及我后做好接收文件的准备与超级终端进行协商后将收到的文件写入指定位析明确概念一一来先把概念搞清楚协议是一种发送并等待的协议即发送学习必备 欢迎下载(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem 支持 128 字节和1024 字节一个数据包。128 字节以()开始,字节以()开始。接收方又发出一个“”信号,开始准备接收文件。进入等待“”或者“”状态。()发送接收到“”以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“”。()文件发送完以后,发送方发出一个“”信号,接收方也以“”回应。然后接收方会
11、再次发出“”开启另一次传输,若接着发送方会发出一个“全数据包”,接收方“”以后,本次通信正式结束。()当然相对于改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。所用到的符号#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 可以进行文件的传送了协议的类型有中及改进的和及其改进协议以及我后做好接收文件的准备与超级终端进行协商后将收到的文件写入指定位析明确概念一一来先把概念搞清楚协议是一种发送并等待的协议即发送