历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2019年03月24日 | STM32学习笔记之Bootloader升级Ymodem协议简介

2019-03-24 来源:eefocus

YModem协议

YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议 。


源码宏定义

#define SOH (0x01) /* start of 128-byte data packet /

#define STX (0x02) / start of 1024-byte data packet /

#define EOT (0x04) / end of transmission /

#define ACK (0x06) / acknowledge /

#define NAK (0x15) / negative acknowledge /

#define CA (0x18) / two of these in succession aborts transfer /

#define CRC16 (0x43) / ‘C’ == 0x43, request 16-bit CRC */


下面先看下YModem协议传输的完整的握手过程:

这里写图片描述


SENDER:发送方;

RECEIVER:接收方;

第一步先由接收方,发送一个字符’C’;

发送方收到’C’后,发送第一帧数据包,内容如下:


SOH 00 FF Foo.c NULL[123] CRCH CRCL


**第1字节SOH:**表示本包数据区大小为128字节,如果头为STX表示本包数据区大小为1024;

第2字节00: 编号,第一包为00,第二包为01,第三包为02依次累加,到FF后继续从0循环递增。

**第3字节FF:**编号的反码,编号为 00 对应 FF,为 01 对应FE,以此类推。

第4字节到最后两字节:若第1字节为SOH时有128字节,为STX时有1024字节,这部分为数据区。“Foo.c” 文件名, 超级终端下,在文件名后还有文件大小。官方dome也是因为使用了这个文件大小进行比对。 在文件名和文件大小之后,如果不满128字节,以0补满。

最后两字节:这里需要注意,只有数据部分参与了效CRC验,不包括头和编码部分。16位CRC效验,高字节在前,低字节在后。


接收方收到第一帧数据包后,发送ACK正确应答。

然后再发送一个字符’C’。

发送方收到’C’后,开始发送第二帧,第二帧中的数据存放的是第一包数据。

接收方收到数据后,发送一个ACK然后等待下一包数据传送完毕,继续ACK应答。直到所有数据传输完毕。

数据传输完毕后,发送方发EOT,第一次接收方以NAK应答,进行二次确认。

发送方收到NAK后,重发EOT,接收方第二次收到结束符,就以ACK应答。

最后接收方再发送一个’C’,发送方在没有第二个文件要传输的情况下,

发送如下数据:

SOH 00 FF 00~00(共128个) CRCH CRCL

接收方应答ACK后,正式结束数据传输。


以上部分,为YMODEM协议的基本操作流程。

推荐阅读

史海拾趣

Digital Core Design公司的发展小趣事

1988年,Core Design由Jeremy Heath-Smith创立,起初仅有8名员工和1万6千英镑的注册资金。这家新兴的游戏开发公司很快凭借其首款游戏《Rick Dangerous》在英国游戏市场崭露头角。这款游戏凭借其独特的游戏机制和引人入胜的故事情节,迅速登上英国游戏销量榜的榜首,并赢得了欧洲年度游戏奖,为Core Design的未来发展奠定了坚实的基础。

DPA Components International公司的发展小趣事

随着全球环保意识的不断提高,DPA Components International公司也积极响应,将环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,减少生产过程中的污染和能耗。同时,DPA还推出了一系列绿色电子产品,这些产品不仅性能卓越,而且符合环保标准,受到了广大消费者的青睐。通过实践环保理念,DPA不仅提升了企业形象,也为行业的可持续发展做出了贡献。

A/D Electronics Inc公司的发展小趣事

A/D Electronics Inc深知人才是企业发展的核心力量。因此,公司高度重视研发团队的建设和人才培养。通过引进国内外优秀人才和加大研发投入,公司不断提升研发团队的实力和创新能力。同时,公司还建立了完善的培训体系,为员工提供持续的学习和成长机会,激发了员工的创造力和工作热情。

Belden Wire and Cable公司的发展小趣事

随着全球化的深入发展,Belden公司开始积极拓展国际市场。通过在全球范围内设立分支机构和工厂,百通不仅提升了自身的产能和效率,也更好地满足了全球客户的需求。同时,公司还不断推出新产品和新技术,拓展在工控线缆、音视频线缆和计算机网络等领域的市场份额。如今,Belden已经成为全球最大的综合布线及专业线缆制造商之一,其产品和服务遍布全球各地。

这五个故事只是Belden Wire and Cable公司发展历程中的一部分,但它们都客观地反映了公司在电子行业里不断发展、创新和壮大的事实。通过这些故事,我们可以看到一个企业通过不断创新和拓展市场,逐渐成长为行业领导者的过程。

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

E-T-A公司自创立以来,一直由Ellenberger和Poensgen家族掌控。家族成员代代相传,将公司的传统和价值观延续至今。同时,公司也注重培养新一代的管理和技术人才,为公司的持续发展注入新的活力。在家族传承的基础上,E-T-A公司不断追求创新,致力于为客户提供更加优质的产品和服务。

Esc Electronics Corp公司的发展小趣事

随着全球化进程的加速,Esc开始寻求国际合作和业务拓展的机会。公司与国际知名企业建立了战略合作关系,共同研发新产品、开拓市场。同时,Esc还积极拓展海外市场,通过设立海外分公司、参加国际展会等方式,加强与国际市场的联系和合作。这些努力不仅为Esc带来了更多的业务机会,也提升了公司的国际影响力。

问答坊 | AI 解惑

现在学习单片机是在学习它的控制理论

对于不同的单片机开发程序差别不大,你要是在89c51的程序语言上花费太多,而感觉在dsp上的程序语言不能学懂的话,我向你的精力花错了方向了。如果你学习了数据结构上的程序描述语言,就发现所有的程序结构都可以用一种标准语言来描述,而不同的 ...…

查看全部问答>

安规仪的检测及校准

安规仪器的检验及校准方法…

查看全部问答>

服务器通过GPRS上外网是否可行

一台机器A通过GPRS上外网,公网上的机器B在知道机器A的IP地址的情况下,是否能够与机器A建立TCP连接?…

查看全部问答>

s3c2410的问题

在s3c2410下程序是一定要下到0x30200000这里么?我自己修改了一个ucos的程序,下到芯片,但是指定的地址是从0开始,结果跑错了,然后就一直不能再下载其他程序了,请问应该怎么修正这个错误。    原因可能是:我查了下,下载程序时总是 ...…

查看全部问答>

如何在驱动中加载DLL

我想利用FILEMON来开发一个实时监控程序,想在驱动中使用loadlibray函数来加载DLL,但WINXPDDK总是报winbase.h文件出错,好像是和ntddk.h有重复的宏定义。请大家帮帮忙!以下是错误报告: 1>g:\\winddk\\inc\\crt\\winbase.h(293) : error C2061: s ...…

查看全部问答>

PB内核定制中出现的问题

我在用PB定制OS时候,想把映像模拟出来,但是每当运行时候都出现 The   specified   CE   boot   image   could   not   be   loaded. Your   virt ...…

查看全部问答>

VS2005中调试wince程序时,为什么进不去断点。

vs2005中开发win32程序很正常,但是下载到目标机中调试wince程序时,就是进不去断点…

查看全部问答>

什么叫地址对准?

所谓地址对准的意义是,比如32位双字地址的最低两位是00,这样可以从32位存储器数据总线一次读出。 请解释上面那句话是什么意思,不明白,什么叫地址对准…

查看全部问答>

高亮度LED寿命的致命问题散热

replyreload += \',\' + 702864;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

PCB电路设计中磁珠的选用

使用片式磁珠和片式电感的原因:是使用片式磁珠还是片式电感主 要还在于应用。在谐振电路中需要使用片式电感。而需要消除不需要的EMI噪声时,使用片式磁珠是最佳的选择。 1。磁珠的单位是欧姆,而不是亨特,这一点要特别注意。因为磁珠的单位是按 ...…

查看全部问答>