Ymodem协议详解

STM32开发——YModem文件传输协议详解与实现 当发送方发送“C”字符请求文件传输后,接收方向发送方回复一个ACK字符(39行),并等待发送方向其发送数据块。发送数据块时,先计算数据块的CRC16校验和(第68-83行),然后将数据块以及其他控制信息依次通过串口发送(第56-63行),等待接收方的ACK回应(第87-95行)。接收方接收到数据块后,向发送方发送一个ACK(acknowledge)控制字符,表示已经成功接收该数据块。如果发送方发送的数据块传输成功,接收方接收到数据块后会回复一个ACK字符(115或143行),然后将数据块写入文件。 阅读详情

Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议。

Xmodem协议是最早的,传输128字节信息块。

Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点。它可以一次传输1024字节的信息块,同时还支持传输多个文件。

平常所说的Ymodem协议是指的Ymodem-1K,除此还有Ymodem-g(没有CRC校验,不常用)。

YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送回使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部接收。

1.起始帧的数据格式

YModem的起始帧并不直接传输文件的数据,而是将文件名与文件的大小放在数据帧中传输,它的帧长=3字节数据首部+128字节数据+2字节CRC16校验码=33字节。它的数据结构如下:

SOH 00 FF filename filezise NUL CRCH CRCL

其中SOH=0x01,表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个),00表示数据帧序号,初始是0,依次向下排,FF是帧序号的取反,filename是要传输的文件名,如USTB_V3_1.0.1.26_NMEA.Bin,它在数据帧中的格式为:55 5354 42 5F 56 33 5F 31 2E 30 2E 31 2E 32 36 5F 4E 4D 45 41 2E 42 69 6E 00,也就是把ASCII码转成十六进制,但是最后一定要在文件名后加上00,表示文件名的结束;filesize表示文件的大小,如上面的USTB_V3_1.0.1.26_NMEA.Bin大小是132KB,也就是135168Byte,转换成十六进制就是0x21000,它在数据帧中的格式就是32 31 30 30 30 00,也就是ASCII的“21000”,同样最后要加上00表示结束,NUL就是数据部分的128字节中除去文件名和文件大小占据的剩下的字节都用00填充,CRCH和CRCL分别表示16位CRC校验码的高8位与低8位。

2.数据帧的数据格式

YModem的数据帧中会预留1024字节空间用来传输文件数据,它跟起始帧接收差不多,如下:

   STX 01 FEdata[1024] CRCH CRCL

其中STX=0x02,表示这帧数据帧后面包含着1024字节的数据部分;01是表示帧序号,FE是它的取反,再下一帧数据就是02 FD,以此类推;data[1024]表示存放着1024字节的文件数据;CRCH与CRCL是CRC16检验码的高8位与低8位。

如果文件数据的最后剩余的数据在128~1024之前,则还是使用STX的1024字节传输,但是剩余空间全部用0x1A填充,如下结构:

STX 01 FE data[1024] 1A 1A……… CRCHCRCL

有一种特殊的情况:如果文件大小小于等于128字节或者文件数据最后剩余的数据小于128字节,则YModem会选择SOH数据帧用128字节来传输数据,如果数据不满128字节,剩余的数据用0x1A填充这是数据帧的结构就变成了:

文件大小小于128字节: SOH 01 FE data[ ] 1A …1A CRCH CRCL

文件最后剩余数据小于128字节: SOH 01 FE data[ ] 1A…1A CRCH CRCL

3.结束帧数据结构

YModem的结束帧数据也采用SOH的128字节数据帧,它的结构如下:

SOH 00 FF NUL[128] CRCHCRCL

结束帧同样以SOH开头,表示后面跟着128字节大小的数据;结束帧的帧序也认为是00 FF;结束帧的128字节的数据部分不存放任何信息,即全部用00填充。

4.文件传输过程

   文件的传输过程,以具体的例子说明。把USTB_V3_1.0.1.26_NMEA.Bin,大小为135168Byte(16进制为0x21000,它在数据帧中的格式就是32 31 30 30 30 00)的文件作为传输的对象,则它的传输过程如下:

发送端 接收端

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

SOH 00 FF [55 53…6E 00]" "[32…30 00]’’ NUL[118] CRCCRC >>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

STX 01 FE data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 02 FD data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 03 FC data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 04 FB data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

SOH 05 FA data[100] 1A[28] CRC CRC>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

EOT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< NAK

EOT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

SOH 00 FF NUL[128] CRCCRC >>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

手把手教你用ZYNQ PS端GPIO模拟SPI驱动OLED屏幕(附Vivado工程) 本文详细介绍了如何利用ZYNQ PS端的EMIO功能,通过GPIO模拟SPI协议驱动SSD1306 OLED屏幕。从Vivado工程配置、SPI协议软件实现到SSD1306驱动开发,提供了完整的解决方案和优化技巧,适合嵌入式开发者快速上手。 阅读详情

相关推荐

DSP28335学习笔记——McBSP配置为SPI

由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这

捕虫少年 1万+

Ymode 升级速度测试

测试使用串口升级,发现自己两个PL2303 发送数据 MCU都无法接收到,测试PL2303 TX管脚是1V多,电压不正常,尝试在MCU端的RX管脚设置为输入上拉,设置过后,连接PL2303测试RX脚还是1V左右,于是换了一个CH340,测试RX电压3.3V正常, 测试在2M 波特率下传输OK,速度太高没有反应了。 用JLINK自带的虚拟串口,测试500K左右就没有反应了。 测试下载速度2M模...

C_ROOKIES的专栏 430

NI数据采集卡测电流的三种‘姿势’:直接连接、外接分流电阻还是用电流互感器?看完这篇不再纠结

本文全面解析了NI数据采集卡在电流测量中的三种主流方案:直接连接、外接分流电阻和电流互感器。通过对比精度、带宽、隔离等关键参数,结合NI-DAQmx软件生态,为工业自动化、电力监测等场景提供选型指南和实战技巧,帮助工程师优化测量系统设计。

weixin_30882895的博客 420

HTTPS原理

HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。 一.密码学基础 明文 明文指的是未被加密过的原始数据 密文 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。 密钥 密钥是一种参数,它是在

洛阳城下逢公子 6471

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

AI变现案例实战系列4:AI数字员工团队——用OpenClaw搭建6个智能体,自动运营你的赚钱系统

摘要:谷歌AI产品经理Shubham Saboo利用OpenClaw搭建6人AI团队,实现内容创作、技术开发等任务自动化,每月成本不足400美元。文章对比阿里云和Windows本地两种部署方案,提供详细配置指南。通过多Agent架构实现物理隔离与精准协作,可创建6个专业AI角色(如研究员、运营、工程师等),每个Agent专注单一任务,避免记忆负担和上下文污染问题。阿里云方案适合长期稳定运行,Windows本地部署则适合零成本测试。最终可组建高效AI团队,实现7x24小时无人值守运营。(149字)

小明的博客 1141

YModem协议

若第1字节为SOH时有128字节,为STX时有1024字节,这部分为数据区。“Foo.c” 文件名, 超级终端下,在文件名后还有文件大小。官方dome也是因为使用了这个文件大小进行比对。这就是为什么用SecureCRT中的YMODEM协议而无法正确传输的原因。在文件名和文件大小之后,如果不满128字节,以0补满。

阅微草堂 1345

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 223

Ymodem文件传输协议

YMODEM是一种经典的文件传输协议,由在XMODEM的基础上改进而来。它广泛用于嵌入式系统中的固件升级、文件传输等场景。相比XMODEMYMODEM支持更大的数据块、批量文件传输以及额外的元数据信息。在本文中,我们将深入分析YMODEM协议的工作原理,并分享一个简要实现的思路。基于帧的数据传输:YMODEM 使用数据帧进行通信,每帧包含头部、数据块和校验码。支持大数据块:每帧可传输 128 或 1024 字节的数据,传输效率比 XMODEM 更高。批量文件传输。

Lim的博客 1万+

红队攻防渗透技术实战流程:云安全之云原生安全:特权模式和挂载模式

红队云攻防实战1. 什么是云 1. 什么是云

HACKONE的博客 572

ResNet改进(45):结合通道混洗(ShuffleNet)的混合架构

本文提出了一种创新的卷积神经网络(CNN)架构CustomResNet,它将ResNet34与通道混洗(ChannelShuffle)技术相结合。该模型通过ShuffleBlock模块替换原始ResNet层,包含三个核心组件:1) ChannelShuffle模块实现通道分组混洗;2) ShuffleBlock模块整合点卷积、分组卷积和残差连接;3) CustomResNet主模型保持ResNet整体架构但替换核心层为ShuffleBlock。这种设计既保留了ResNet的残差学习能力,又通过通道混洗增强特

2401_82355416的博客 210

Ymodem 协议详解

Ymodem 协议详解 1. Ymodem 帧格式 Ymodem 有两种帧格式,主要区别是信息块长度不一样。 1.1 帧头 帧头表示两种数据帧长度,主要是信息块长度不同。 1.2 包序号 数据包序号只有1字节,因此计算范围是0~255;对于数据包大于255的,序号归零重复计算。 1.3 帧长度 【1】以SOH(0x01)开始的数据包,信息块是128字节,该类型帧总长度为133字节。 【2】以S...

huangdenan的博客 5万+

Windows Server 2019 服务器一天之中内存利用率越来越高直到死机,疑似内存泄漏

环境: 华为桌面云虚拟机 Windows Server 2019 版本1809 OS内部版本17763.107 问题描述: Windows Server 2019服务器 一天之中内存利用率越来越高直到死机,不断扩容内存从10G到16G一重启就正常然后慢慢又循环,连续几天都这样,疑似内存泄漏 内存泄漏是什么? 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 5393

详解 Ymodem 协议

Ymodem Ymodem是Xmodem协议的扩展版本,主要用于可靠文件传输。 它在Xmodem-1K基础上增加了批处理传输、文件名和大小支持,采用CRC-16校验,并分为标准Ymodem和Ymodem-g两种变体。 协议使用1024字节块格式,通过起始帧、数据帧和结束帧(EOT)完成传输流程,支持ACK/NAK握手机制。 Ymodem广泛应用于嵌入式系统固件升级和旧式调制解调器通信。 但存在文件大小限制(2GB)和兼容性问题。 典型工具包括Linux的lrzsz和终端程序的Ymo

future_studio的博客 762

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Xmodem/Ymodem/Zmodem协议详解

序 Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议。 Xmodem协议是最早的,传输128字节信息块。 Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点。它可以一次传输1024字节的信息块,同时还支持传输多个文件。 Xmodem 之后再填坑 Ymodem 平常所说的Ymodem协议是指的Ymodem-1K,除此还有Ymodem-g(没有CRC校验,不常用)。 YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送回使用CRC校验,保证数据传输的正确性

weixin_44058570的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于MFC与Ymodem协议的串口文件传输工程实现详解

串口通信是嵌入式系统、工业控制等领域中设备与上位机进行数据交换的基础接口。其点对点、硬件简单的特性使其在可靠性和实时性要求高的场景中广泛应用。在串口上进行文件传输,需要一种可靠的协议来确保数据的完整性与正确性,Ymodem协议正是为此而设计的经典解决方案。它通过引入CRC-16校验、1024字节数据块和停止等待机制,在协议层构建了强大的错误检测与重传能力,从而保障了在不可靠物理链路上的文件传输可靠性。这一技术价值在固件升级、配置下发等嵌入式开发和工业维护场景中尤为突出。本文聚焦于如何在Windows桌面环境

weixin_42715608的博客 261

Ymodem 协议详解:从帧格式到 Bootloader 串口升级实战

协议简单:单字节控制字符 + 统一帧结构,资源占用极小,无需复杂状态机;自带元数据:文件头帧携带文件名和大小,接收端可据此做截断和完整性校验;可靠的差错控制:CRC16 强校验 + NAK 重传 + EOT 二次确认,兼顾效率与可靠性。理解并掌握这几个核心点——帧格式、CRC 计算范围、序号回绕、EOT 二次确认、填充截断——就能稳定实现一个健壮的 Ymodem 接收端。本文仅讲解公开的 Ymodem 协议标准与通用嵌入式实现经验,不涉及任何具体项目或产品的内部实现细节。

XavierKong的博客 411

【嵌入式】基于串口的IAP在线升级详解与实战2----移植Ymodem协议

目录 一 Ymodem协议简介: 二 Ymodem数据格式: 三 Ymodem协议移植: 一 Ymodem协议简介: YModem协议是XModem的改进协议,它最常用于调制解调器之间的文件传输的协议,具有快速,稳定传输的优点。它的传输速度比XModem快,这是由于它可以一次传输1024字节的信息块,同时它还支持传输多个文件,也就是常说的批文件传输。 YModem分成YModem-1K与YModem-g。YModem-1K用1024字节信息块传输取代标准的128字节传输,数据使用CRC校验.

sinat_33408502的博客 2444
上一篇: SPI通讯协议介绍
下一篇: 必收藏的实用网站(一)
自先沉稳~
博客等级 码龄8年 59粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值