一、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应答,结束传输
具体数据包内容参考 转自:
第一包文件信息: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程序