Ymodem 协议 改进的CAN—Ymodem协议
来源:互联网 发布:淘宝便利店入口 编辑:程序博客网 时间:2024/05/17 16:12
1、超级终端
Ymodem协议是一种发送并等待的协议。即发送方发送一个数据包以后,都要等待接收方的确认。如果是ACK信号,则可以发送新的包。如果是NAK信号,则重发或者错误退出。
2、文件传输过程
文件传输过程的开启:
(1)开启是由接收方开启传输,它发一个大写字母C开启传输。然后进入等待(SOH)状态,如果没有回应,就会超时退出。然后继续发送大写字母C等待传输。
(2)发送方开始时处于等待过程中,等待C。收到C以后,发送(SOH)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”,CRC校验两个字节。进入等待(ACK)状态。
(3)接收方收到以后,CRC校验满足,则发送ACK。发送方接收到ACK,又进入等待“文件传输开启”信号,即重新进入等待“C”的状态。准备接收下一个包。
Ymodem 协议中第一包是传输文件信息包,一般采用128字节(1024字节,也可以实现,不过比较浪费资源)
一个完整包数据内容(SOH模式为例)为 包头(3字节)+ 数据段(128字节)+ CRC16校验码(2字节)。所以整包长度是128+5 =133字节,现举例如下(16进制):
01 00 FF 41 42 43 2E 62 69 6E 00 31 30 32 34 20 00 00 ...... 09 E8
第1字节 : 01 表示SOH模式,此包数据段大小为128字节,如果该位置是02,表示STX模式,此包数据段大小为1024字节。
第2字节: 00 包序列号为0,以后发送或接收的包序列号要依次递增。
第3字节 : FF 包序列号的补码(与第2字节00对应)。在Ymodem接收中会对第2,第3字节做检验。所以这两个字节数据要按照协议保持一致。
第4字节到第131字节:数据段内容, 41 42 43 2E 62 69 6E 表示文件名(ASCII码 ABC.bin), 00 为文件名结束标志。31 30 32 34 表示文件大小 (ASCII码 1024字节), 20(ASCII码 空格符 '\0')为文件大小结束标志。此后到数据段的128字节全部填 00.
第132,133字节 : 09 E8 为CRC16校验码,此校验码只计算数据段128字节内容,不计算包头的3字节。此处09 E8 只是举例。
(4)文件发送完以后,发送方发出一个“EOT”信号,接收方也以“ACK”回应。
然后接收方会再次发出“C”开启另一次传输,若接着发送方会发出一个“全0数据包”,接收方回应“ACK”后,本次通信正式结束。
注意:“全0数据包”,包头并不为 0, 包头数据可写 01 00 FF.
文章转自:http://blog.sina.com.cn/s/blog_b5e6d3de0102vv97.html
以上为转载内容
对上述内容的一些补充以及改进
在官方的Ymodem协议中,发送数据包以1024为一包发送,当最后一包不足1024字节,但是大于128字节,以1024字节数据包发送,不足的填0;当最后一包数据不足1024,且不足128字节时,以128字节数据包发送,不足部分填0 。
基于CAN卡改进的Ymodem协议
CAN卡每次可以接收发送8字节的数据,比起stm32一次收发一个字节,CAN收发数据快了很多。基于CAN卡改进的Ymodem协议也就是在这个地方做了改进,每次发送8字节的数据,其他和Ymodem协议相同。
阅读全文
0 0
- Ymodem 协议 改进的CAN—Ymodem协议
- Ymodem协议的学习
- YModem协议
- YModem协议
- YModem协议
- YModem协议
- ymodem协议c实现
- xmodem ymodem zmodem协议
- YModem协议理解
- Bootloader设计(YModem协议)
- 基于Ymodem协议的IAP升级程序
- stm32 Bootloader设计(YModem协议)
- stm32 Bootloader设计(YModem协议)
- 基于Ymodem协议的STM32F407的串口IAP
- YModem协议的源代码下载网址(资源收藏)
- 基于Ymodem协议的IAP上位机(C#)
- stm32 Bootloader设计(YModem协议) (转载)
- Stm32IAP使用securcrt ymodem协议 下载程序
- stm32学习笔记 F1系列通用定时器
- Python学习之网络编程Socket
- input 上传图片显示预览、调用摄像头,ios和Android的兼容性解决
- 形式参数-返回值-内部类-匿名内部类
- Intellij Idea 导入多个maven项目展示在右侧栏Maven Projects
- Ymodem 协议 改进的CAN—Ymodem协议
- 自定义S函数模块构成的Simulink模型C代码转化
- win 定时执行Php ?
- [Flink]Flink1.3 Stream指南四 窗口函数
- java基础——线程通信
- deep learning学习笔记---MemN2N
- 斑马斑马
- 立个flag
- 部署Django项目