本模块是一个主要用C语言(便于往单片机上移植)实现的Ymodem协议库,支持通过串口进行文件传输。Ymodem 协议是对 XMODEM 的增强,支持批量文件传输、文件名和文件大小等元数据传递,并使用 CRC-16 进行错误校验,提高了传输的可靠性。
该模块提供了完整的发送和接收功能,适用于嵌入式系统固件更新、设备配置传输等场景。模块设计注重可移植性和易用性,允许用户通过实现简单的接口来适配不同的底层串口通信驱动。
协议简介Ymodem是一种基于串行通信的发送并等待协议,其核心特征包括:
数据块尺寸灵活:支持 128 字节(SOH)和 1024 字节(STX)两种数据包格式,优先使用1K大包以提高传输效率(发送目前只支持1K大包)。
可靠的错误校验:强制使用 CRC-16 校验算法,确保数据完整性。
文件内容的传输:在传输文件内容前,通过起始帧传递文件名、文件大小等元数据。
多文件批量接收:支持批量连续接收多个文件,接收开启后,会阻塞等待发送端发送,直到会话结束或发生错误;发送目前不支持批量发送多文件,只支持发送单一文件(够用)。
基本的通信流程: 由接收方发起,接收方持续发送字符'C'启动 CRC 模式的传输;-> 发送方收到后,首先发送一个包含文件名和大小的文件头包(起始帧);
-> 接收方确认后,发送方开始发送文件数据包;-> 文件传输结束后,发送方发送 EOT,并最终以一个空文件头包结束整个会话。
联调测试的工具:可配合SecureCRT(我的版本v8.5.3)进行串口通信测试,测试文件为 test.bin,大小为61440字节(60K)。
牛九如 2025-12-24 郑州