Xmodem 交互出现大量 "Retry 0: NAK on sector" 问题

移植一个简单的 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' 之后等待一些时间后,即可解决。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容