701_707 双备份升级DEMO
📎 原始文档:https://www.kdocs.cn/l/cu1hmVWaplGL 701_707 双备份升级DEMO
demo 也适用于707 sdk 。
双备份代码资源不够,可能涉及分区参考:norflash相关.otl
JL701N的WATCH资源分区功能说明.otl
问题描述: 客户反馈移植双倍分升级之后,概率出现升级失败问题。 文档最后有参考demo
双备份升级需要打开对应宏,生成 db_update_data.bin
(1)用uart或者spi 或者其他方式 发送接收到db_update_data.bin (2)调用初始化,写接口 走双备份升级流程,校验,升级成功。问题分析: (1) 查看log 看起来是校验失败,引起的升级失败 。可能的原因有
升级文件传输过来错乱 b, 校验搬运流程错乱 c,写保护等参数影响 (2) 参考客户代码流程

在dual_bank_passive_update_init 前加入 norflash_set_write_protect(0); 写保护清除
(3)公板验证写一个701 demo
打开 #define CONFIG_DB_UPDATE_DATA_GENERATE_EN 1
#define CONFIG_DOUBLE_BANK_ENABLE 1
在初始化前解除写保护 norflash_set_write_protect(0); 写保护清除
/********************************************************************************
* 跟上位机通信接口
* 1.数据来源:串口、SPi、BLE等。数据包很小,dual_ota_app_data_deal缓存成一包大包
* 2.必须在低优先级任务执行,不能在中断函数、蓝牙回调函数执行
* 3.升级流程: 升级初始化,写文件到flash,校验升级
* --初始化:发送55 AA 开始,大小为四位 ,校验码四位,默认写0 。
* 如文件大小:164054(hex:280D6) ,首包发送55 AA D6 80 02 00 00 00 00 00
* --写文件: 文件发送时建议每buf为256 或者512 字节,方便组包成2K写入flash,主机发送延时建议50mS以上每包
* --校验升级:文件写完整以后发送AA 55 执行校验文件。
*********************************************************************************/
int update_mcufw_write(u32 msg, u8 *buf, u32 len)
com_uart_ctrl.c
dual_update_demo.c
(4)707 demo
打开 #define CONFIG_DB_UPDATE_DATA_GENERATE_EN 1
#define CONFIG_DOUBLE_BANK_ENABLE 1
在初始化前解除写保护 norflash_set_write_protect(0); 写保护清除
/********************************************************************************
* 跟上位机通信接口
* 1.数据来源:串口、SPi、BLE等。数据包很小,dual_ota_app_data_deal缓存成一包大包
* 2.必须在低优先级任务执行,不能在中断函数、蓝牙回调函数执行
* 3.升级流程: 升级初始化,写文件到flash,校验升级
* --初始化:发送55 AA 开始,大小为四位 ,校验码四位,默认写0 。
* 如文件大小:164054(hex:280D6) ,首包发送55 AA D6 80 02 00 00 00 00 00
* --写文件: 文件发送时建议每buf为256 或者512 字节,方便组包成2K写入flash,主机发送延时建议50mS以上每包
* --校验升级:文件写完整以后发送AA 55 执行校验文件。
*********************************************************************************/
int update_mcufw_write(u32 msg, u8 *buf, u32 len)
流程参考文档:
https://doc.zh-jieli.com/AC63/zh-cn/master/module_demo/ota/ota_introduce.html#app
3. 问题反馈: 已完成