详解嵌入式设备的文件传输协议

原创 一起学嵌入式 2023-07-07 07:50

扫描关注一起学嵌入式,一起学习,一起成长


在不限于嵌入式的很多工业应用场合,文件传输是非常常见的需求。小到上位机与单片机之间的固件传输过程,大到互联网中从服务器下载文件,再大到地面站到卫星,甚至深空探测器之间的资料传输,比如珍贵的火星照片。

在之前关于单片机 Bootloader 的文章中,详细介绍了如何对设备的APP进行升级。在升级过程中,要将APP文件传输到单片机中,期间需要一个稳定可到的协议,保证传输的文件数据不会出错。

深入浅出讲解单片机的BootLoader(一)

深入浅出讲解单片机的BootLoader(二)

文件传输的根本是协议的设计与实现。而设计一个稳定可靠高效的文件传输协议,是需要一些技巧和智慧的。

本篇文章将详细介绍一些传输协议,最终大家会发现其实它们的基本思想是一样的。

Xmodem协议族

说到文件传输协议,就必须要说 Xmodem,它是所有文件传输协议的鼻祖。

1978 年,一位 IBM 的工程师尝试使用调制解调器来进行文件数据传输,并使其有一定的纠错能力,从而创建了一套协议,命名为 Xmodem。

其基本思想是:发送大小为 128 字节的数据包,如果包成功接收,接收方会返回一个肯定应答信号(ACK);如果发现错误,则返回一个否定应答信号(NAK)并重新发送数据包。Xmodem最初使用奇偶校验作为查错控制的方法。

Xmodem的传输过程

Xmodem 的逻辑很简单,下图为 Xmodem 的文件传输过程示意。

文件数据的传输过程其实就是收发双方交互协商的过程。既然是协商就会有双方遵循的约定,即所谓的协议。

首先是控制字的定义:

 01H
04H
06H
15H
18H

图中已经涉及到了 ACK、NAK 和 EOT,不再赘述。

关于 CAN 的作用是这样的:当接收方发送 CAN 表示无条件结束本次传输过程,发送方收到 CAN 后,无需发送 EOT 来确认,直接停止数据的发送。
然后就是数据包的定义:

  • SOH(Start of Heading),即包头开始字符。

  • 随后第2个字节是包号,它在传输中是依次递增的,需要注意的是,第一包数据的包号从1开始,然后 255->0 循环往复;

  • 第3个字节是包号的按位取反;

  • 4~131字节是128字节的文件分片数据;

  • 最后1个字节是校验和,即128字节数据按字节连加之和。
可以看到,Xmodem每一帧数据都有独立的数据校验,加之它对重传的支持,使得文件传输的正确性得以保障。
一般来说,只要通过 Xmodem 传输成功的文件,数据上是不会出现差错的,也就不需要单独再进行额外的文件校验。
但是实际上我们还是会对接收到的文件整体进行检查,比如通过文件自身的校验码,因为除了传输,差错还可能出现在其它方面,比如存储。
以上所介绍的内容其实是 Xmodem 最原始的形态,在此基础上它又有所改进,甚至衍生出一套协议族。
最直接的一个改进,就是将其数据包的校验和,改为了双字节的 CRC,实际上是换汤不换药,但是它的传输交互过程有一些变化,如图 Xmodem(CRC)的文件传输过程示意。

可以看到,Xmodem 如果使用 CRC 的话,在传输之初接收者是使用字符 ’C’ 来进行握手的,而校验和方式下,则是NAK,即 0X15。
Xmodem 的这一改进,并不是对原来校验和方式的取代,而是补充。也就是说,现行实际 Xmodem 发送者有可能是采用CRC的,也可能是校验和,或者是两者都支持。
这样问题就来了:接收者是用 ’C’ 来握手,还是用 NAK 呢?它决定了数据包的校验方式。
接收者一般是设备端,为了使其更加通用(不挑协议),通常我们会兼顾校验和与CRC两种方式,具体实现方法如图所示。

除了 Xmodem(CRC),Xmodem 的改进还有 Xmodem-1K,顾名思义,它的数据包中分片数据长度为 1KB,目的是提高传输效率。

Ymodem的传输过程

几经改进的 Xmodem,人们给了它一个新的名字,Ymodem。它更加完备而高效,文件传输过程示意如图

可以看到,Ymodem 的传输过程略显复杂,它最显著的特性是增加了启始帧和结束帧,两者的定义如图

数据包中分片数据长度为1KB,其格式定义与 Xmodem不同,如下图所示,它引入了一个新的控制字,即STX,它是数据包的开始字符,值为 0X02。

所以,Ymodem中有两种不同长度的数据帧,以 SOH 开头的数据帧数据长度为 128 字节,以 STX 开头的数据帧数据长度为 1024 字节。
其中启始帧描述了更多的文件信息,包括文件名与文件大小。这一点是比 Xmodem 要完善的。同时,我们注意到Ymodem 是只支持 CRC 校验的,这比 Xmodem 更标准更统一。
Ymodem是现行Xmodem协议族中最流行的版本,在很多的 Bootloader、OTA 等嵌入式方案中都有所应用,比如 RT-Thread 中就用 Ymodem 来实现上位机向其 DFS(设备文件系统)的文件传输。
正所谓改进之心永不死,人们对 Ymodem 也不乏改进,衍生出了 Ymodem-G 版本,它去掉了 CRC 校验,当然这样就不能保证文件传输的正确性了。我也不知道这样算是“改进”还是“改退”,也许它有特定的应用场景吧。

关于Zmodem

前面介绍了 Xmodem 与 Ymodem,它们有一定的继承性,但是 Zmodem 与它们相比完全不是一个量级的东西,要复杂得多。它不是基于发送与应答的机制,而是类似流式传输的一种协议。
关于 Zmodem 我也没有找到比较明确的协议资料,所以并没有深入去研究它。这里我作了一个实验,抓取 Zmodem 实际传输过程中的收发双方的原始串口数据,贴在下面,若有兴趣可以自行研究一下,文件传输收发双方原始串口数据(上发下收)

说明:使用 Xshell 打开两个串口(这两个串口收发相连),使用其中一个串口通过 Zmodem 发送文件 aaaa.txt(此文件内容是123456789),另一个串口接收文件。此过程中,使用串口监控软件记录其原始数据,以待分析。
“Xshell是什么?串口监控软件是哪个?”关于这些工具软件,振南专门安排了一章来进行集中讲解,请关注相应章节。

AVRUBD的传输过程

看过深入浅出讲解单片机的BootLoader的读者就会知道,AVRUBD 是网友 shaoziyang 在实现AVR单片机的通用Bootloade r时所使用的文件传输协议。
严格来说,AVRUBD 并不能算是 Xmodem 协议族中的一员,它只是对 Xmodem 的应用,只不过有些改进,请看图,AVRUBD传输文件的过程:

可以看到,AVRUBD 的主要改进点有:

这些改进点都是为单片机烧录程序服务的:

送你面值100的优惠券,扫码注册或者阅读原文即可获取。


扫码,拉你进高质量嵌入式交流群


关注我【一起学嵌入式】,一起学习,一起成长。


觉得文章不错,点击“分享”、“”、“在看” 呗!

一起学嵌入式 公众号【一起学嵌入式】,RTOS、Linux编程、C/C++,以及经验分享、行业资讯、物联网等技术知
评论 (0)
  • 一、gao效冷却与控温机制‌1、‌冷媒流动设计‌采用低压液氮(或液氦)通过毛细管路导入蒸发器,蒸汽喷射至样品腔实现快速冷却,冷却效率高(室温至80K约20分钟,至4.2K约30分钟)。通过控温仪动态调节蒸发器加热功率,结合温度传感器(如PT100铂电阻或Cernox磁场不敏感传感器),实现±0.01K的高精度温度稳定性。2、‌宽温区覆盖与扩展性‌标准温区为80K-325K,通过降压选件可将下限延伸至65K(液氮模式)或4K(液氦模式)。可选配475K高温模块,满足材料在ji端温度下的性能测试需求
    锦正茂科技 2025-04-30 13:08 513浏览
  • 你是不是也有在公共场合被偷看手机或笔电的经验呢?科技时代下,不少现代人的各式机密数据都在手机、平板或是笔电等可携式的3C产品上处理,若是经常性地需要在公共场合使用,不管是工作上的机密文件,或是重要的个人信息等,民众都有防窃防盗意识,为了避免他人窥探内容,都会选择使用「防窥保护贴片」,以防止数据外泄。现今市面上「防窥保护贴」、「防窥片」、「屏幕防窥膜」等产品就是这种目的下产物 (以下简称防窥片)!防窥片功能与常见问题解析首先,防窥片最主要的功能就是用来防止他人窥视屏幕上的隐私信息,它是利用百叶窗的
    百佳泰测试实验室 2025-04-30 13:28 622浏览
  •  一、‌核心降温原理‌1、‌液氮媒介作用‌液氮恒温器以液氮(沸点约77K/-196℃)为降温媒介,通过液氮蒸发吸收热量的特性实现快速降温。液氮在内部腔体蒸发时形成气-液界面,利用毛细管路将冷媒导入蒸发器,强化热交换效率。2、‌稳态气泡控温‌采用‌稳态气泡原理‌:调节锥形气塞与冷指间隙,控制气-液界面成核沸腾条件,使漏热稳定在设定值。通过控温仪调整加热功率,补偿漏热并维持温度平衡,实现80K-600K范围的快速变温。二、‌温度控制机制‌1、‌动态平衡调节‌控温仪内置模糊控制系统,通过温度
    锦正茂科技 2025-04-30 11:31 83浏览
  • 这款无线入耳式蓝牙耳机是长这个样子的,如下图。侧面特写,如下图。充电接口来个特写,用的是卡座卡在PCB板子上的,上下夹紧PCB的正负极,如下图。撬开耳机喇叭盖子,如下图。精致的喇叭(HY),如下图。喇叭是由电学产生声学的,具体结构如下图。电池包(AFS 451012  21 12),用黄色耐高温胶带进行包裹(安规需求),加强隔离绝缘的,如下图。451012是电池包的型号,聚合物锂电池+3.7V 35mAh,详细如下图。电路板是怎么拿出来的呢,剪断喇叭和电池包的连接线,底部抽出PCB板子
    liweicheng 2025-05-06 22:58 224浏览
  • UNISOC Miracle Gaming奇迹手游引擎亮点:• 高帧稳帧:支持《王者荣耀》等主流手游90帧高画质模式,连续丢帧率最高降低85%;• 丝滑操控:游戏冷启动速度提升50%,《和平精英》开镜开枪操作延迟降低80%;• 极速网络:专属游戏网络引擎,使《王者荣耀》平均延迟降低80%;• 智感语音:与腾讯GVoice联合,弱网环境仍能保持清晰通话;• 超高画质:游戏画质增强、超级HDR画质、游戏超分技术,优化游戏视效。全球手游市场规模日益壮大,游戏玩家对极致体验的追求愈发苛刻。紫光展锐全新U
    紫光展锐 2025-05-07 17:07 89浏览
  • 想不到短短几年时间,华为就从“技术封锁”的持久战中突围,成功将“被卡脖子”困境扭转为科技主权的主动争夺战。众所周知,前几年技术霸权国家突然对华为发难,导致芯片供应链被强行掐断,海外市场阵地接连失守,恶意舆论如汹涌潮水,让其瞬间陷入了前所未有的困境。而最近财报显示,华为已经渡过危险期,甚至开始反击。2024年财报数据显示,华为实现全球销售收入8621亿元人民币,净利润626亿元人民币;经营活动现金流为884.17亿元,同比增长26.7%。对比来看,2024年营收同比增长22.42%,2023年为7
    用户1742991715177 2025-05-02 18:40 193浏览
  • 多功能电锅长什么样子,主视图如下图所示。侧视图如下图所示。型号JZ-18A,额定功率600W,额定电压220V,产自潮州市潮安区彩塘镇精致电子配件厂,铭牌如下图所示。有两颗螺丝固定底盖,找到合适的工具,拆开底盖如下图所示。可见和大部分市场的加热锅一样的工作原理,手绘原理图,根据原理图进一步理解和分析。F1为保险,250V/10A,185℃,CPGXLD 250V10A TF185℃ RY 是一款温度保险丝,额定电压是250V,额定电流是10A,动作温度是185℃。CPGXLD是温度保险丝电器元件
    liweicheng 2025-05-05 18:36 210浏览
  • 在全球制造业加速向数字化、智能化转型的浪潮中,健达智能作为固态照明市场的引领者和智能电子以及声学产品的创新先锋,健达智能敏锐捕捉到行业发展的新机遇与新挑战,传统制造模式已难以满足客户对品质追溯、定制化生产和全球化布局的需求。在此背景下, 健达智能科技股份有限公司(以下简称:健达智能)与盘古信息达成合作,正式启动IMS数字化智能制造工厂项目,标志着健达智能数字化转型升级迈入新阶段。此次项目旨在通过部署盘古信息IMS系统,助力健达实现生产全流程的智能化管控,打造照明行业数字化标杆。行业趋势与企业挑战
    盘古信息IMS 2025-04-30 10:13 94浏览
  • 二位半 5线数码管的驱动方法这个2位半的7段数码管只用5个管脚驱动。如果用常规的7段+共阳/阴则需要用10个管脚。如果把每个段看成独立的灯。5个管脚来点亮,任选其中一个作为COM端时,另外4条线可以单独各控制一个灯。所以实际上最多能驱动5*4 = 20个段。但是这里会有一个小问题。如果想点亮B1,可以让第3条线(P3)置高,P4 置低,其它阳极连P3的灯对应阴极P2 P1都应置高,此时会发现C1也会点亮。实际操作时,可以把COM端线P3设置为PP输出,其它线为OD输出。就可以单独控制了。实际的驱
    southcreek 2025-05-07 15:06 93浏览
  • ‌一、高斯计的正确选择‌1、‌明确测量需求‌‌磁场类型‌:区分直流或交流磁场,选择对应仪器(如交流高斯计需支持交变磁场测量)。‌量程范围‌:根据被测磁场强度选择覆盖范围,例如地球磁场(0.3–0.5 G)或工业磁体(数百至数千高斯)。‌精度与分辨率‌:高精度场景(如科研)需选择误差低于1%的仪器,分辨率需匹配微小磁场变化检测需求。2、‌仪器类型选择‌‌手持式‌:便携性强,适合现场快速检测;‌台式‌:精度更高,适用于实验室或工业环境。‌探头类型‌:‌横向/轴向探头‌:根据磁场方向选择,轴向探头适合
    锦正茂科技 2025-05-06 11:36 319浏览
  • 浪潮之上:智能时代的觉醒    近日参加了一场课题的答辩,这是医疗人工智能揭榜挂帅的国家项目的地区考场,参与者众多,围绕着医疗健康的主题,八仙过海各显神通,百花齐放。   中国大地正在发生着激动人心的场景:深圳前海深港人工智能算力中心高速运转的液冷服务器,武汉马路上自动驾驶出租车穿行的智慧道路,机器人参与北京的马拉松竞赛。从中央到地方,人工智能相关政策和消息如雨后春笋般不断出台,数字中国的建设图景正在智能浪潮中徐徐展开,战略布局如同围棋
    广州铁金刚 2025-04-30 15:24 346浏览
  • 随着智能驾驶时代到来,汽车正转变为移动计算平台。车载AI技术对存储器提出新挑战:既要高性能,又需低功耗和车规级可靠性。贞光科技代理的紫光国芯车规级LPDDR4存储器,以其卓越性能成为国产芯片产业链中的关键一环,为智能汽车提供坚实的"记忆力"支持。作为官方授权代理商,贞光科技通过专业技术团队和完善供应链,让这款国产存储器更好地服务国内汽车厂商。本文将探讨车载AI算力需求现状及贞光科技如何通过紫光国芯LPDDR4产品满足市场需求。 车载AI算力需求激增的背景与挑战智能驾驶推动算力需求爆发式
    贞光科技 2025-05-07 16:54 75浏览
  • 5小时自学修好BIOS卡住问题  更换硬盘故障现象:f2、f12均失效,只有ESC和开关机键可用。错误页面:经过AI的故障截图询问,确定是机体内灰尘太多,和硬盘损坏造成,开机卡在BIOS。经过亲手拆螺丝和壳体、排线,跟换了新的2.5寸硬盘,故障排除。理论依据:以下是针对“5小时自学修好BIOS卡住问题+更换硬盘”的综合性解决方案,结合硬件操作和BIOS设置调整,分步骤说明:一、判断BIOS卡住的原因1. 初步排查     拔掉多余硬件:断开所有外接设备(如
    丙丁先生 2025-05-04 09:14 91浏览
  • 某国产固态电解的2次和3次谐波失真相当好,值得一试。(仅供参考)现在国产固态电解的性能跟上来了,值得一试。当然不是随便搞低端的那种。电容器对音质的影响_电子基础-面包板社区  https://mbb.eet-china.com/forum/topic/150182_1_1.html (右键复制链接打开)电容器对音质的影响相当大。电容器在音频系统中的角色不可忽视,它们能够调整系统增益、提供合适的偏置、抑制电源噪声并隔离直流成分。然而,在便携式设备中,由于空间、成本的限
    bruce小肥羊 2025-05-04 18:14 160浏览
  • 文/Leon编辑/cc孙聪颖‍2023年,厨电行业在相对平稳的市场环境中迎来温和复苏,看似为行业增长积蓄势能。带着对市场向好的预期,2024 年初,老板电器副董事长兼总经理任富佳为企业定下双位数增长目标。然而现实与预期相悖,过去一年,这家老牌厨电企业不仅未能达成业绩目标,曾提出的“三年再造一个老板电器”愿景,也因市场下行压力面临落空风险。作为“企二代”管理者,任富佳在掌舵企业穿越市场周期的过程中,正面临着前所未有的挑战。4月29日,老板电器(002508.SZ)发布了2024年年度报告及2025
    华尔街科技眼 2025-04-30 12:40 341浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦