[RDA8910 CSDK系列]724ug 差分fota之证实-附带ota简要流程分析

这两天在学习csdk系统,昨晚销售小哥给了一个链接:http://doc.openluat.com/article/1416/0 其中零妖大佬说了关于cat1 差分升级的事。

本着求实的精神,就很像知道确凿的证据,最好有代码或者数据的依据。

所以今天特意准备了下评估板子,看看能不能拿到些直观的线索。

第一个想到的就是通过coolwatcher追查系统的日志。这里有个开发板和我的usb uart小板电平不匹配的小插曲,定位此问题又额外浪费了点时间,暂不展开,如果有人想细究再补充,先说结论:想稳定看coolwatcher的日志,你需要使用host log的串口方式,而不是用usb方式。

测试使用的是官方的ota平台: iot.openluat.com ,设备初始代码是自己编译的测试包, ota包使用同样的代码,只是改了下版本号,因为主要是验证流程,所以不用关注功能逻辑。

fota包的下载使用的是http,注意是http,不是https,主要原因就是简单,https是趋势。

第一步:

通过http获取到文件大小,这里对应是的是Content-Length

[ota] HTTPClientFindFirstHeader 21,Content-Length: 48330

[ota]GetSize fsz: 48330

6M左右的原始bin档,实际的下载大小只有48K左右,这就说明下载的是差分,而不是全量包。

第二步:

ota_parse otaProcess file size 48320, type 1

从48330 变成了48320 说明有10byte可能是控制描述数据,不细表。

第三步:

[ota] HTTPClientReadData readSize 511

[ota] HTTPClientReadData readTotalLen 1022, 48330

每次下载511个字节,一包一包开始下载

第四步:

中间重复无数包,通过总包大小控制下载次数,直到最后一包下载完成

[ota]--HTTPIntrnConnectionClose--

ota_parse otaDownloadDone appState 3 CoreState 1

[ota_parse] FILE: app 48320 0

app应该是文件名,48320是大小,0 是属性或者权限之类的吧。

第五步:校验

ota_app crc (f7ddf30f,f7ddf30f)

ota openat_newApp appImageIsVaild ok

使用的应该是crc32 的校验的多包累加和,纯瞎猜,不求证

第六步:更新ota的标志

ota check 1,0

ota check 1,1

ota OPENAT_newOtaFlagSet 102

这个102应该就是告诉bootloader这个是刚ota完成,第一次需要做些特殊的工作。

第七步:下载完成

ota_parse _otaDownloadDone ok

[ota]fota end 0

看日志,整个升级48k大小的样子,花了6s完成,基本无感知,所以如果你用usb方式看日志,可能coolwatch还没连接上,升级就完成了