ymodem协议及其程序升级应用

目录

一、ymodem协议

1、协议介绍

2、协议传输过程

3、传输数据帧格式

4、ymodem协议具体实现

二、基于YModem协议实现串口程序升级

1、实现方法

2、FLASH分区

3、升级过程


一、ymodem协议

1、协议介绍

YModem分成 YModem-1K 与 YModem-g;YModem-1K用1024字节信息块传输取代标准的128字节传输,数据使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部接收。YModem-g传输形式与YModem-1K差不多,只是它去掉了数据的CRC校验码,同时在发送完一个数据块信息后,它不会等待接收端的ACK信号,而直接传输下一个数据块。正是它没有涉及错误校验与等待响应,才使得它的传输速度比YModem-1K来得快。我们常用的YModem一般是指带CRC校验的YModem-1K

2、协议传输过程

协议又接收端(从机)主动发起,在发送端(主机)收到 'C' 字符后,开启数据传输,传输过程如下。先发起始帧,告诉从机即将要发送的文件名称和文件大小;接着开始发送数据帧,将文件分包发送给从机;数据帧发送完成后,发送结束帧,结束此次的文件传输

3、传输数据帧格式

起始帧数据格式

YModem的起始帧用于传输文件名与文件的大小,注意该数据包号为0,帧长=3字节的数据首部+128字节数据+2个字节CRC16校验码 = 133字节。数据结构为:

SOH 00 FF filename filezise NUL CRCH CRCL

数据帧数据格式

YModem的数据帧从第二包数据开始,注意该数据包号为1。帧长 = 3字节的数据首部+1024字节数据+2字节的CRC16校验码 = 1029字节。数据结构为:

STX/SOH + [编号] + 编号的取反 + data[0] + data[1] + data[2] + … + CRCH + CRCL

SOH 表示有128个字节, STX 表示有1024个字节。若文件数据的最后一包数据在128~1024之间,则数据部分剩余空间全部用0x1A填充;如果文件的大小小于或等于128字节或者文件数据最后剩余的数据小于128字节,则YModem会选择使用SOH数据帧,即用128字节来传输数据,如果数据不满128字节,剩余的数据用0x1A填充。

结束帧数据格式

当传输结束时,发送端需要发送结束标识EOT,并等待接收端的回复,最后还会再发送一包空数据包以表示传输真正结束,只是数据内容为空。帧长=3字节首部+128字节的数据+2字节CRC16校验码 = 133字节,其数据帧结构为:

SOH + 00 + FF + NULL + NULL + … + NULL + CRCH + CRCL

4、ymodem协议具体实现

软件结构如下,在更换硬件平台后,只需修改ymodem.c/h支持文件即可

二、基于YModem协议实现串口程序升级

1、实现方法

根据IAP(在应用编程),可以在程序运行过程中对用户FLASH的部分区域进行编程;将程序分为boot引导程序、app应用程序、download待更新的应用程序,可以通过FOTA方式在app中对download进行更新,或是通过超级终端串口方法在直接在boot中对download进行更新,boot的功能就是接收超级终端发送的文件并写入download分区 和 将download分区拷贝到app分区, 以实现程序升级的功能。其中通过超级终端串口方法就是使用ymodem进行的固件文件传输的

2、FLASH分区

分区名

起始地址

分区大小

分区位置

功能

boot

0x8000000

自定义

片内FLASH

接收ymodem文件并写入download,更新app

app

自定义

自定义

片内FLASH

应用程序

download

自定义

自定义

片内FLASH或片外SPI FLASH

待升级固件

para

自定义

自定义

片内FLASH或片外SPI FLASH

设备参数(升级标志位)

3、升级过程

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值