OTA刷写流程如下:


注意事项:
-
上面有两个OTA刷写流程,流程A(第一张图)和流程B的区别在于流程A是先刷写的Flash
Driver再刷写的APP,而流程B直接刷写的APP。 -
使用zlgcan手写can传输代码时,每次只能发8个bytes数据,如果超过8个bytes数据就要用多帧,多帧格式是,前两bytes出第一个bytes高四位必须是1(代表多帧)其他12个bits用来表示数据长度。然后后面数据超过6bytes,就要首先等待对方给你发流控帧(30 00 00 00 00 00 00 00(一般第一个byte是30 后面不一定都是00))然后按照21作为下一帧的开始开始发。如果21-2F都用完了,数据还没发完,则从20开始继续发20-2F一个周期开始发,一般会定义数据能发送的最大长度,不超过长度内,作为一块就全发完。示例如下:

注意不要发生如下错误:

-
流程里面涉及hex文件解析,参考链接:https://blog.csdn.net/lone5moon/article/details/117792834?fromshare=blogdetail&sharetype=blogdetail&sharerId=117792834&sharerefer=PC&sharesource=miantu123&sharefrom=from_link
-
34服务数据长度计算不对


起始地址是:1FFE0000
结束地址是:1FFE0234
计算逻辑原本是找到棕色那个标志位“01”代表文件结束,再找它上一行的地址,作为文件的结束地址,但是上一行不一定是标志位“00”数据段,所以要找到“01”前面遇到的第一个“00”的地址作为结束地址。 -
31 01 02 02计算校验码不对,原来程序未校验,出错了不会提示,但是后续31 01 FF 00 44会报0x22。
-
OTA刷写刷的是App.hex文件,正常用J-link刷写的是Production文件夹内的AudioDev.hex(Full hex)。
-
当你在10 02会话下,但是31 01 02 02报0x7f,大概率是超时退出10 02会话了,(5s就会退出),循环发送3E 80即可。
-
3E 80 的诊断ID需要用7DF(功能寻址)不然会打断772 内容发送。
-
36服务一块最多发送4095的数据(包含两字节的36 XX),一块最多发数据4093

509

被折叠的 条评论
为什么被折叠?



