Xmodem协议详解以及源代码

Xmodem协议详解以及源代码

ID:37277579

大小:55.50 KB

页数:10页

时间:2019-05-20

Xmodem协议详解以及源代码_第1页
Xmodem协议详解以及源代码_第2页
Xmodem协议详解以及源代码_第3页
Xmodem协议详解以及源代码_第4页
Xmodem协议详解以及源代码_第5页
资源描述:

《Xmodem协议详解以及源代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、研究Xmodem协议必看的11个问题原文地址:http://blog.sina.com.cn/s/blog_4db10c6c0100av57.html~type=v5_one&label=rela_prevarticleXmodem协议作为串口数据传输主要的方式之一,恐怕只有做过bootloader的才有机会接触一下,网上有关该协议的内容要么是英语要么讲解不详细。笔者以前写bootloader时研究过1k-Xmodem,参考了不少相关资料。这里和大家交流一下我对Xmodem的理解,多多指教!1.Xmodem协议是什么?  

2、XMODEM协议是一种串口通信中广泛用到的异步文件传输协议。分为标准Xmodem和1k-Xmodem两种,前者以128字节块的形式传输数据,后者字节块为1k即1024字节,并且每个块都使用一个校验和过程来进行错误检测。在校验过程中如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个确认字节(ACK)。由于Xmodem需要对每个块都进行认可,这将导致性能有所下降,特别是延时比较长的场合,这种协议显得效率更低。  除了Xmodem,还有Ymodem,Zmodem协议。他们的协议内容和Xmodem类似

3、,不同的是Ymodem允许批处理文件传输,效率更高;Zmodem则是改进的了Xmodem,它只需要对损坏的块进行重发,其它正确的块不需要发送确认字节。减少了通信量。2.Xmodem协议相关控制字符  SOH        0x01  STX      0x02  EOT        0x04  ACK        0x06  NAK        0x15  CAN        0x18  CTRLZ    0x1A3.标准Xmodem协议(每个数据包含有128字节数据)帧格式  __________________

4、_____________________________________________

5、    

6、        

7、            

8、      

9、        

10、

11、SOH

12、信息包序号  

13、  信息包序号的补码  

14、数据区段  

15、  校验和    

16、

17、_____

18、____________

19、___________________

20、__________

21、____________

22、4.1k-Xmodem(每个数据包含有1024字节数据)帧格式  ___________________________________

23、____________________________

24、    

25、        

26、            

27、      

28、        

29、

30、STX

31、信息包序号  

32、  信息包序号的补码  

33、数据区段  

34、  校验和    

35、

36、_____

37、____________

38、___________________

39、__________

40、____________

41、5.数据包说明  对于标准Xmodem协议来说,如果传送的文件不是128的整数倍,那么最后一个数据包的有效内容肯定小于帧长,不足的部分需要用CTRL-Z(0x1A)来填充

42、。这里可能有人会问,如果我传送的是bootloader工程生成的.bin文件,mcu收到后遇到0x1A字符会怎么处理?其实如果传送的是文本文件,那么接收方对于接收的内容是很容易识别的,因为CTRL-Z不是前128个ascii码,不是通用可见字符,如果是二进制文件,mcu其实也不会把它当作代码来执行。哪怕是excel文件等,由于其内部会有些结构表示各个字段长度等,所以不会读取多余的填充字符。否则Xmodem太弱了。对于1k-Xmodem,同上理。6.如何启动传输?  传输由接收方启动,方法是向发送方发送"C"或者NAK(注意

43、哦,这里提到的NAK是用来启动传输的。以下我们会看到NAK还可以用来对数据产生重传的机制)。接收方发送NAK信号表示接收方打算用累加和校验;发送字符"C"则表示接收方想打算使用CRC校验(具体校验规则下文Xmodem源码,源码胜于雄辩)。7.传输过程  当接收方发送的第一个"C"或者NAK到达发送方,发送方认为可以发送第一个数据包,传输已经启动。发送方接着应该将数据以每次128字节的数据加上包头,包号,包号补码,末尾加上校验和,打包成帧格式传送。发送方发了第一包后就等待接收方的确认字节ACK,收到接收方传来的ACK确认,就

44、认为数据包被接收方正确接收,并且接收方要求发送方继续发送下一个包;如果发送方收到接收方传来的NAK(这里,NAK用来告诉发送方重传,不是用来启动传输)字节,则表示接收方请求重发刚才的数据包;如果发送方收到接收方传来的CAN字节,则表示接收方请求无条件停止传输。8.如何结束传输?  如果发送方正常传输完全

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。