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

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 郑州