一篇文章让你精通YMODEM协议

Ymodem 协议详解

目前大部分MUC都内存空间比较大,标准ymodem协议只合适小于255K固件的文件,可以看最后我提议的改进

1. 协议概述

Ymodem 是基于 Xmodem 的增强型文件传输协议,支持 1024 字节/帧 的大数据块传输和 CRC-16 校验,适用于串行通信(如 UART、RS-232)和嵌入式系统场景(如 MCU 固件升级)


2. 核心特性

特性说明
数据块大小支持 128 字节(SOH 模式)和 1024 字节(STX 模式)
错误检测使用 CRC-16 循环冗余校验,校验范围包含数据块内容
批处理传输可一次性发送多个文件,支持文件名和文件大小元数据传递
流量控制通过 ACK/NAK 机制实现自动重传,防止数据溢出
填充规则数据不足时用 0x1A 填充,结束帧用 0x00 填充

3. 帧格式说明

3.1 起始帧(133 字节)

字段字节数描述
SOH10x01起始符(固定为 SOH)
块编号10x00固定为 00
块编号反码10xFF块编号的二进制反码
文件名变长foo.bin0x00 结尾的字符串
文件大小变长1024十进制数值 + 0x00 结尾
填充区剩余0x00补满至 128 字节
CRC 校验码20x1234高字节在前,低字节在后

示例

SOH 00 FF 66 6F 6F 2E 62 69 6E 00 31 30 32 34 00 00... CRCH CRCL

3.2 数据帧(1029/133 字节)

字段字节数描述
STX/SOH10x02/0x011024 字节用 STX,128 用 SOH
块编号10x01从 01 递增
块编号反码10xFE块编号的二进制反码
数据区1024/128原始数据不足时用 0x1A 填充
CRC 校验码20x5678校验数据区内容

示例

STX 01 FE [1024B 数据] CRCH CRCL

3.3 结束帧(133 字节)

字段字节数描述
SOH10x01固定为 SOH
块编号10x00固定为 00
块编号反码10xFF固定为 FF
填充区1280x00全 0 填充
CRC 校验码20x0000固定为 0

示例

SOH 00 FF 00 00 00 ... (共128字节0x00) 00 00

4. 控制字符表

字符ASCII 码功能描述
SOH0x01128 字节数据块起始标志
STX0x021024 字节数据块起始标志
EOT0x04传输结束标志
ACK0x06确认接收成功
NAK0x15请求重传(校验失败/超时)
CAN0x18取消传输
‘C’0x43接收方发起传输请求

5. EOT 控制信号

EOT(End Of Transmission)是 Ymodem 协议中用于标识单次文件传输结束的控制字符,其结构为:

  • ASCII 码0x04
  • 功能:发送方在文件数据传输完毕后发送该信号,触发接收方的二次确认流程

示例
发送方发送:0x04(单个字节的 EOT 信号)

0x04

5.1 EOT 信号交互流程

EOT 的完整传输流程包括双重确认机制,确保传输可靠性:

  1. 首次 EOT 发送
    发送方完成数据包传输后,发送 0x04

  2. 接收方 NAK 响应
    接收方回复 0x15(NAK),要求二次确认。

  3. 二次 EOT 发送
    发送方重传 0x04

  4. 接收方 ACK 确认
    接收方回复 0x06(ACK),完成当前文件传输

6. 传输流程

接收方发送方'C' (0x43)起始帧ACK (0x06)'C' (0x43)数据帧ACK/NAKloop[数据传输]EOT (0x04)NAK (0x15)EOT (0x04)ACK (0x06)'C' (0x43)结束帧ACK (0x06)接收方发送方

可改进方向

当块编号大于0x1-0xff 的时候,也就是文件大于255*1024,也就是255K的时候文件块号会从0x00开始

可以改进块编号反码,也作为传输文件的块号。最大传输65535*1024 也就是64M,不过用户可以增大多1个字节,空间可以变为16383M

如果对你有帮助,请给予作者一丝丝奖励
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值