Ymode协议的bootloader

本文深入解析YMode协议的传输过程,从初始化信号到数据包结构,再到CRC校验机制。并介绍了如何利用该协议进行主板及子板的升级,涉及串口通信、CAN总线数据传输以及flash擦写流程。

一、ymode协议传输过程

1、从接收方开始,先发送字符'C',开始传输。

2、发送方接受到‘C’以后,发送第一包数据数据内容为文件名大小等。

3、接收方接受到文件信息,发送ACK,并发送一个字符‘C’

4、发送方收到'C'以后开始发送数据包

5、接收方收到数据包,发送ACK应答,等待下一包并继续应答直到传输完毕。

6、发送方传输完毕,发送EOT

7、接收方发送NAK

8、发送方再次发送EOT

9、接收方ACK应答,并发送'C'

10、若无数据继续传输发送全0数据包

11、接收方ACK应答,结束传输

 

具体数据包内容参考     转自:http://www.cnblogs.com/hiker-blogs/archive/2013/03/17/stm32.html

第一包文件信息:SOH 00 FF Foo.c NUL[123] CRC CRC  

第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” 文件名, 超级终端下,在文件名后还有文件大小。在文件名和文件大小之后,如果不满128字节,以0补满。

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

16位CRC效验,高字节在前,低字节在后。

 

 

二、软件设计流程

 

 

主板的升级,采用串口接收数据,解析完第一包数据,擦除对应的flash,在之后收到数据校验完成以后,写入对应flash地址,传输完成以后,在没有继续升级APP的情况下,定时时间到直接跳转到目标地址,开始执行APP程序。

 

三、使用主板升级子板

 

子板的升级与主板类似,通过使用can总线发送升级数据包,同样使用ymode解析数据包,擦除flash并写入相对应地址,在主板的跳转指令下,跳转到对应地址并开始运行app。

四、boot程序

 

 

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值