手机端

ota后(手表重启后)app回连手表无法连接

这个目前只在IOS系统遇到过,iOS 在刚打开蓝牙中心连接手表时,手表可能会disable service,手机端会收到 serviceModified 事件,在这个事件之后重新发现服务。
app 里面有轮询检查连接状态,当前失败了,也可以下一个轮询机会再连接
原因:思澈手表固件ble连接后,会跟新服务参数。app连接后立马来发现,就会出现发现服务超时/异常。

iPhone8以前的frequency可以设成5(这个会出现ble传输异常,app不发数据导致手表主动断连)

原因:在早期的iphone手机上,它不支持持续的写入20个数据切片,固件端收包错误,断开连接。
判断一下机型低于等于iphone 8,把回复频率降低到5能得到改善。
iphone出现组包异常时,也可以适当降低默认的frequency 参数,来提高稳定性

../../_images/ota_frequency.png

手机跟app进度对不上

1.检查手表代码,看使用的是总传输进度,还是单个bin的进度
设备固件进度份两种:
单个bin文件进度:DFU_PROGRESS_PART
单次升级所有文件总进度:DFU_PROGRESS_TOTAL

../../_images/ota_progress.png

2.看app传输的bin文件跟要升级的bin文件是否匹配
有客户出现过全量升级后,app缓存的压缩包没清除。
下次ota时只升hcpu时导致文件异常(多了其他bin文件)。ctrl_packet.bin跟客户要升级的包对不上。

手机有发包,但是没发出来。手表超时15S没收到包主动断连

app怎么排查:
1.看手机log.cat。出问题的事件点,在做些什么。思澈dfu服务可以搜索sifli-DFU标志

../../_images/ota_logcat.png

2.看手机hci_log。出问题的事件点,在做些什么

../../_images/ota_hcilog.png

一般是app在ota时有做其他事情,导致发包中断
也有可能是手机系统宽带被其他外设占用,如wifi,蓝牙播放

手表超时15S没收到手机的包就会断连
1.修改建议:要么让手机尽量不去做其他的,要么就把手表的下载超时时间改长。增加容错时间

升级差分资源失败

app提示:load list file fail DFU end with 133

需要检查差分包文件跟list列表里的记录能否对齐,list有重名,但是实际bin文件无法存在重名文件。

../../_images/ota_err_file_list.png

ota偶现时间长

这是客户经常反馈的问题,这个问题需要抓空中包,手表hci log看是什么影响了传输速度
1.看ble连接间隔(是不是高速模式没切换成功)建议进入ota时由手机先发起
手表发起的连接参数更新请求,手机不一定响应。
ios跟Android的最小连接间隔也不一样

2.app配置的frequency(回包频率)

3.手机系统宽带被其他外设占用,如wifi,蓝牙播放(这种行为就跟手表没关系,客户行为无法约束)

nand差分包,app里是哪个类型

nor方案不支持差分包,不用考虑
NAND方案 :
●IMAGE_ID_HCPU = 0
●IMAGE_ID_LCPU = 1
●IMAGE_ID_HCPU_PATCH = 2
●IMAGE_ID_FS_ROOT = 3
●IMAGE_ID_LCPU_PATCH = 4
●IMAGE_ID_FS_DYN = 5
●IMAGE_ID_FS_MUSIC = 6
●IMAGE_ID_NAND_RES 差分包资源
NOR方案:
●DFU_IMG_ID_HCPU 0,HCPU代码
●DFU_IMG_ID_LCPU 1,LCPU RAM 代码,前提是启用了FLASH 4
●DFU_IMG_ID_LCPU_ROM_PATCH = 2
●DFU_IMG_ID_RES 3,资源
●DFU_IMG_ID_FONT 4, 字体
●DFU_IMG_ID_EX = 5
●DFU_IMG_ID_OTA_MANAGER 6,升级ota manager本身
●DFU_IMG_ID_TINY_FONT 7, TINY 字体

NAND方案的●IMAGE_ID_NAND_RES容易跟NOR方案的●DFU_IMG_ID_RES搞混

Android nand差分包类型如下图所示

../../_images/ota_nand_res.png

ios nand差分包类型如下图所示

../../_images/ota_nand_zipPatch.png