研究Xmodem协议必看的11个问题
原文地址:http://blog./s/~type=v5_one&label=rela_prevarticle
Xmodem协议作为串口数据传输主要的方式之一,恐怕只有做过bootloader的才有机会接触一下,网上有关该协议的内容要么是英语要么讲解不详细。笔者以前写bootloader时研究过1k-Xmodem,参考了不少相关资料。这里和大家交流一下我对Xmodem的理解,多多指教!
?
XMODEM协议是一种串口通信中广泛用到的异步文件传输协议。分为标准Xmodem和1k-Xmodem两种,前者以128字节块的形式传输数据,后者字节块为1k即1024字节,并且每个块都使用一个校验和过程来进行错误检测。在校验过程中如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个确认字节(ACK)。由于Xmodem需要对每个块都进行认可,这将导致性能有所下降,特别是延时比较长的场合,这种协议显得效率更低。
除了Xmodem,还有Ymodem,Zmodem协议。他们的协议内容和Xmodem类似,不同的是Ymodem允许批处理文件传输,效率更高;Zmodem则是改进的了Xmodem,它只需要对损坏的块进行重发,其它正确的块不需要发送确认字节。减少了通信量。
SOH 0x01
STX 0x02
EOT 0x04
ACK 0x06
NAK 0x15
CAN 0x18
CTRLZ 0x1A
(每个数据包含有128字节数据)帧格式
_______________________________________________________________
| | | | | |
| SOH | 信息包序号 | 信息包序号的补码 | 数据区段 | 校验和 |
|_____|____________|___________________|__________|____________|
-Xmodem(每个数据包含有1024字节数据)帧格式
_______________________________________________________________
| | | | | |
| STX | 信息包序号 | 信息包序号的补码 | 数据区段 | 校验和 |
|_____|____________|___________________|__________|____________|
对于标准Xmo
Xmodem协议详解以及源代码 来自淘豆网www.taodocs.com转载请标明出处.