移植一个简单的 xmodem 接收模块,和 minicom 交互时出现了一个奇怪的现象:
欢迎使用 minicom 2.8 -----+
|
选项: I18n
通信+-------------------[xmodem 上传 - 按 CTRL-C 可离开]-------------------+
|Sending test.c, 1 blocks: Give your local XMODEM receive command now. |
按 C|Xmodem sectors/kbytes sent: 0/ 0kRetry 0: NAK on sector |
|Xmodem sectors/kbytes sent: 1/ 0kRetry 0: NAK on sector |
CCCC| | | |
| | |
| | |
| | |
+----------------------------------------------------------------------+
欢迎使用 minicom 2.8 -----+
|
选项: I18n
通信+-------------------[xmodem 上传 - 按 CTRL-C 可离开]-------------------+
|Xmodem sectors/kbytes sent: 123/15kRetry 0: NAK on sector |
按 C|Xmodem sectors/kbytes sent: 124/15kRetry 0: NAK on sector |
|Xmodem sectors/kbytes sent: 125/15kRetry 0: NAK on sector |
CCCC|Xmodem sectors/kbytes sent: 126/15kRetry 0: NAK on sector | | |
|Xmodem sectors/kbytes sent: 127/15kRetry 0: NAK on sector | |
|Xmodem sectors/kbytes sent: 128/16kRetry 0: NAK on sector | |
| | |
+----------------------------------------------------------------------+
分析了问题的流程,画了张图,基本可以解释这个问题的发生原因:
xmodem.jpg
问题的关键在于,接收端发送 'C' 后,在收到报文前又发出了一个 'C' ,导致出现这个问题。因此只需要在发送 'C' 之后等待一些时间后,即可解决。