niujiuru 15100ee8b2 优化修改代码 9 tháng trước cách đây
..
Makefile b0abcd231c 实现ymodem协议的c代码完成, 与SecureCRT联调通过 10 tháng trước cách đây
bridge.go 6135d1996b 将ymodem接口暴露给go层 10 tháng trước cách đây
readme.txt 3012ae07c4 修复ymodem发送和接收最后一包不是完整的128或1024字节时的问题 10 tháng trước cách đây
ring_buf.c b47d5ef2e0 重新新增ymodem模块, 用c语言实现, 编程中... 10 tháng trước cách đây
ring_buf.h b47d5ef2e0 重新新增ymodem模块, 用c语言实现, 编程中... 10 tháng trước cách đây
ring_buf_test.c b0abcd231c 实现ymodem协议的c代码完成, 与SecureCRT联调通过 10 tháng trước cách đây
test.bin 8d1788dc38 上传用于ymodem发送测试的test.bin文件 10 tháng trước cách đây
ymodem.c 15100ee8b2 优化修改代码 9 tháng trước cách đây
ymodem.h 3012ae07c4 修复ymodem发送和接收最后一包不是完整的128或1024字节时的问题 10 tháng trước cách đây
ymodem_test.c 3012ae07c4 修复ymodem发送和接收最后一包不是完整的128或1024字节时的问题 10 tháng trước cách đây

readme.txt

本模块是一个主要用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 郑州