Ymodem
好的,Ymodem 是一种用于串行通信(如 RS-232)的文件传输协议。它是在早期协议 Xmodem 的基础上发展而来的增强版本,主要目的是提高传输效率和可靠性。
以下是 Ymodem 的关键特点和运作方式的中文说明:
-
起源与目的:
- 作为 Xmodem 的改进版,旨在解决 Xmodem 的局限性(如传输速度慢、无批处理能力)。
- 核心目标是可靠地在串行线路上传输文件。
-
核心特性与改进:
- 数据块大小可变:
- 这是 Ymodem 最显著的改进。
- 支持两种主要块大小:
- 128 字节块: 兼容原始 Xmodem。使用
SOH(Start Of Header, 0x01) 标识符。 - 1024 字节块 (1K): 显著提升传输效率。使用
STX(Start of Text, 0x02) 标识符。
- 128 字节块: 兼容原始 Xmodem。使用
- 发送方和接收方会协商使用哪种块大小(通常优先尝试 1K)。
- 批处理能力:
- 可以一次会话传输多个文件。这比 Xmodem 每次只能传一个文件方便得多。
- 传输开始时,发送方会先发送一个或多个文件名信息块,包含要发送的文件名(有时还包括文件大小、时间戳等元数据)。接收方确认收到文件名后,才开始传输实际文件数据。
- 错误检测:
- 使用 CRC-16 作为主要的错误检测方法。这比 Xmodem 的原始 Checksum 或可选的 CRC 更可靠。协议也支持回退到较弱的校验和方式。
- 每个数据块后都附带有 CRC 值。接收方计算收到的数据块的 CRC,并与发送方发来的 CRC 比较。如果不匹配,接收方会发送
NAK(Negative Acknowledgement) 请求重发该块。
- 传输控制流程:
- 初始化: 接收方发送字符
'C'(ASCII 67) 发起传输请求(这同时表示接收方期望使用 CRC 校验)。 - 文件名传输: 发送方发送包含文件名(和可选信息)的 128 字节块(用
SOH)。块编号从00h开始(表示文件名块)。 - 文件数据传输: 文件名块被确认后,发送方开始传输文件数据块。优先使用 1024 字节块 (
STX),如果失败或接收方要求,则回退到 128 字节块 (SOH)。块编号从01h开始递增。 - 确认机制:
ACK(Acknowledgement, 0x06):接收方成功接收并校验通过一个块后发送ACK,通知发送方可以发送下一个块。NAK(Negative Acknowledgement, 0x15):接收方检测到块错误(CRC 不匹配或接收超时)时发送NAK,请求发送方重发上一个块。CAN(Cancel, 0x18):任何一方发送CAN两次表示取消整个传输过程。
- 文件结束:
- 文件数据传输完毕后,发送方发送一个特殊的
EOT(End of Transmission, 0x04) 字符,表示该文件结束。 - 如果还有后续文件,发送方会紧接着发送下一个文件的文件名块。
- 如果没有更多文件,接收方会发送一个
'C'字符(或ACK?具体实现可能略有差异),然后发送方发送一个全为0x00的 128 字节块(块号00h)表示整个批处理会话结束。接收方对此块发送ACK确认。
- 文件数据传输完毕后,发送方发送一个特殊的
- 初始化: 接收方发送字符
- 效率提升:
- 1024 字节块减少了传输开销(每个块只需要一个头、块号、反码块号、CRC,与传输的数据量相比比例更小)。
- 批处理减少了建立和关闭连接的开销。
- 数据块大小可变:
-
常见变种:
- Ymodem (Standard): 通常指上述描述的协议。
- Ymodem-g: “g” 代表 “streaming”。接收方只在会话开始时发送一个
'G'字符(代替'C')。发送方接收到'G'后,会连续发送所有数据块而不等待每个块的ACK。接收方仅在检测到错误时才发送NAK(此时发送方需要回退重发)。这种方式在低错误率线路上可以极大提高速度(接近线路带宽),但一旦出错可能需要重传大量数据。风险更高。
-
典型应用场景:
- 在个人计算机(如早期的 PC、Mac)和调制解调器时代非常流行。
- 在嵌入式系统开发中仍然常见,特别是在通过串口(UART)下载固件、升级 Bootloader 或传输配置文件到目标设备时(如路由器、工控设备、微控制器开发板)。许多嵌入式 Bootloader 支持 Ymodem 协议。
- 终端仿真软件(如 Tera Term, SecureCRT, Minicom, PuTTY)通常内置了 Ymodem 发送和接收功能。
-
优点:
- 比 Xmodem 更高效(1K 块,批处理)。
- 实现相对简单可靠(基于 Xmodem 的成熟机制)。
- CRC 错误检测能力强。
- 在串口文件传输协议中属于经典且广泛支持的标准。
-
缺点:
- 串行传输本身速度较慢(相对于现代网络)。
- 协议开销依然存在(块头、ACK/NAK 等待)。
- Ymodem-g 在错误率高的线路上性能会急剧下降。
- 在现代应用中,已被更高效或更通用的协议取代(如基于 TCP/IP 的 TFTP, SCP, FTP;或专有的 USB DFU, USB Mass Storage 等),但在嵌入式开发和特定遗留系统中仍有重要地位。
总结来说:Ymodem 是一个用于串行通信的可靠文件传输协议,它通过支持 1K 大块数据和多文件批处理,显著改进了 Xmodem 的效率,并利用 CRC 进行错误检测。它在嵌入式系统固件更新等场景中仍被广泛使用。
使用ymodem_ota时如何更换串口?
现在使用串口1可以正常使用ymodem_ota进行固件升级,但是现在项目需要使用串口1来进行其他作用,求怎么把串口1更改为串口2进行ota升级?
Ymodem UART在SBSFU端口上丢失字符的原因?如何解决?
在我的 SBSFU 端口(v2.4.0,还不是 2.5.0)中,由于接收器缺少字符,我无法通过 YMODEM 传输 SFU 文件。这使得 com 加载器看起来太慢了,但它与它所基于的 H753 相同
分享两个Ymodem的上位机(GitHub开源)
item,然后再分割串口号字符给 到串口API) (2).增加一个刷新串口的按钮 (3).增加一条命令,让设备进入Ymodem模式
资料下载
李玲
2023-05-10 14:41:03
stm32 HAL RAMDISK USB模拟U盘升级IAP
最近弄了串口IAP升级,始终感觉升级很麻烦, 需要超级终端或者其他支持ymodem的软件, 但是为用户考虑, 如果升级最简单的方式就是把设备模拟为一个U盘来完成升级.问题如果弄U盘升级, 需要外加一
资料下载
王杰
2021-12-28 19:43:55
stm32f103f8t6+keil+IAP+Ymodem(有线传输)+keil
stm32f103f8t6+keil+IAP+Ymodem(有线传输)由于篇幅和研究进度的限制,本文分为上下两部分:上部分为有线IAP下载的编写,下部分为添加无线模块以后的下载代码编写。描述
资料下载
佚名
2021-12-17 18:10:44
IAP板卡远程升级(串口网口都可)+Ymodem+AES对bin文件加密+pc软件+板卡相互烧录
还是决定记录一下,毕竟这个东西我也搞了挺久的,遇到一些棘手的,或者是因为我很粗心遇到的问题也和大家分享一下,。板卡核心是 STM32F103RCT6,256kflash前言 开始看这个远程升级的时候,我是一头雾水的,原子哥的教程里面也有说到过iap,有了一个大概的了解,我想不明白的是,通过串口下载的方式把hex文件下载到flash,和把bin文件下载到f
资料下载
杨平
2021-12-09 14:51:12
ymodem协议上位机_【C#上位机必看】MCU单片机实战练手项目
最近有越来越多做电气的小伙伴开始学习C#来做上位机开发,很多人在学习一段时间后,都有这种感觉,似乎学到了很多知识,但是不知道怎么应用,因此我找了一个真实的上位机小项目,让大家来练练手。这篇文章主要对这个项目案例及开发过程做个整体介绍。1、项目案例介绍 很多人对单片机有一种特殊的情怀,总是感觉单片机很神秘或很复杂。单片机简称MCU
资料下载
李军
2021-10-28 20:06:05
请问YMODEM for SBSFU够安全吗?
我已经看到,对于只有一个映像的引导加载程序,只能使用带有 UART 的 YMODEM 来使用 SBSFU 更新固件。现在我担心的是,YMODEM 似乎不是很容错。那么,SBSFU 使用什么进一步
使用OTA升级的方法更新带ymodem bootloader的rbl文件
前言上次分享了一个需要使用无线编程器烧录带 ymodem 功能的 bootloader ,有些朋友反馈说手上没有无线编程器,so 建议造一个可以通过 ota 更新的带 ymodem
BK7252更新带ymodem的bootloader功能
提示: 如果板子还能正常启动,可以直接更新RBL文件,一、更新带 ymodem 的bootloader 固件硬件准备:麻雀1号开发板,配套的无线编程器,typeC 线,PC 电脑软件准备:带
基于YModem协议实现串口程序升级
目录一、ymodem协议1、协议介绍2、协议传输过程3、传输数据帧格式4、ymodem协议具体实现二、基于YModem协议实现串口程序升级1、实
谈谈STM32F4 IAP BOOTLOADER YMODEM
STM32F4 IAP BOOTLOADER YMODEM XModem、YModem、ZModem
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览