手表端

ota标志位怎么置,才能重启后进入ota。

nor方案代码看dfu_ctrl.c nand方案代码看dfu_ctrl_ext.c

../../_images/user_ota.png

资源/数据异常导致设备一开机就,进入异常ota升级救砖

资源出现问题,或者bug导致机器变砖。
可以加个策略规避下资源异常导致无限重启变砖的问题,异常重启多少次,进入ota。
开机致标志位,到正常界面后清除。累计标志位5次(或更多/避免产线焊电池导致进入ota模式)进入异常ota模式。

../../_images/ota_err_flag.png

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。导致文件异常

../../_images/ota_off_flage.png
../../_images/ota_off_err.png
../../_images/ota_err_kvdb.png

支持断点续传的OTA软件升级过程中出现重启,重启之后无法进行升级

  • 出现如下错误:

../../_images/Ota_err.png

需要确认是否有如下修改,如果没有,需要加上:

../../_images/DFU_state.png

修改flash分区后,怎么ota

  • 注意: 修改flash分区后,ota只建议软件调试阶段使用。量产/批次操作不建议

nor方案修改flash分区后,怎么ota

1.nor方案先确认你的版本是否有DFU_DISABLE_IMAGE_LENGTH_CHECK这个宏,以及是否配置为1 如果有DFU_DISABLE_IMAGE_LENGTH_CHECK这个宏,有并且配置为1,可以直接调过这步
需要先打开这个宏编译,先升级一次hcpu。去掉长度限制

../../_images/ota_flash_menuconfig.png
../../_images/ota_flash_menuconfig2.png

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();

../../_images/ota_nand_flash_patch.png

2.然后再进行更改分区的升级