手表端¶
ota标志位怎么置,才能重启后进入ota。¶
nor方案代码看dfu_ctrl.c nand方案代码看dfu_ctrl_ext.c
资源/数据异常导致设备一开机就,进入异常ota升级救砖¶
资源出现问题,或者bug导致机器变砖。
可以加个策略规避下资源异常导致无限重启变砖的问题,异常重启多少次,进入ota。
开机致标志位,到正常界面后清除。累计标志位5次(或更多/避免产线焊电池导致进入ota模式)进入异常ota模式。
ota手表打印dfu_link_sync_check error排查方向¶
目前遇到的都是app没发数据了,需要排查app。
看图中log是有客户的ble消息,可以重点排查是不是app处理其他ble服务去了。
ota的时候,客户有私有协议交互。会导致我们的ota服务出现异常,sdk会停止送数。
1)其他ble服务影响:手机手表都不要有,包括ota service之外的读写,连接参数更新
send error notify error组包错误
2)app切后台(app在后台时间长了,被系统杀掉,会停止发包)
3)手机灭屏(灭屏,app在后台被杀。会停止发包)
4)手机超时未发包(处理其他逻辑去了)
ota时要规避弹窗,读写文件系统,大小核通信,最好关闭sensor,闹钟等¶
ota是裸写,如果有弹窗。可能访问资源出现异常。访问的资源地址可能变了,可能没了。 ota时读写文件系统也是一样的,由于是裸写,会导致ota资源时,文件系统出现变化。如果正在ota时,有其他代码来改动了,会导致ota数据效验失败。
全量ota跟非全量ota¶
对于有修改ota相关代码的客户需要注意,非全量ota不会动到除app外的dyn/root/music等分区。所以有其他数据记录写flash没什么大影响。
但是对于全量升级,有ota到dyn/root/music分区。ota时如果不停止其他的写操作,会导致写flash出现问题。
有客户遇到ota没做区分,在ota完重启前写了数据到flashdb。导致文件异常
支持断点续传的OTA软件升级过程中出现重启,重启之后无法进行升级¶
出现如下错误:
需要确认是否有如下修改,如果没有,需要加上:
修改flash分区后,怎么ota¶
注意: 修改flash分区后,ota只建议软件调试阶段使用。量产/批次操作不建议
nor方案修改flash分区后,怎么ota¶
1.nor方案先确认你的版本是否有DFU_DISABLE_IMAGE_LENGTH_CHECK这个宏,以及是否配置为1
如果有DFU_DISABLE_IMAGE_LENGTH_CHECK这个宏,有并且配置为1,可以直接调过这步
需要先打开这个宏编译,先升级一次hcpu。去掉长度限制
2.修改flash分区后,需要先升级一次ota_manager。在整包升级
nand方案修改分区后,怎么ota¶
1.每次升级前,先升级一个未改变分区的中间版本,实现需要修改地址分区的对应weak函数.
先确认你的代码是否有以下弱函数,没有的先合入patch才能支持。
uint32_t dfu_res_addr_get();
uint32_t dfu_dyn_addr_get();
uint32_t dfu_music_addr_get();
2.然后再进行更改分区的升级