一、ymode协议传输过程

XmodemYmodemZmodem协议详解_boot

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

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

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

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

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

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

7、接收方发送NAK

8、发送方再次发送EOT

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

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

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

 

具体数据包内容参考     转自:

第一包文件信息: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效验,高字节在前,低字节在后。

 

 

二、软件设计流程

 

 

XmodemYmodemZmodem协议详解_数据区_02

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

 

三、使用主板升级子板

XmodemYmodemZmodem协议详解_多板升级_03

 

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

四、boot程序