OTA开发指导FAQ

FAQ001: OTA分区

问:看slot信息,存储在misc分区,这个是什么分区,如何防止被改动?

答:(1)这是存储boot 信息的分区,比如A/B状态等信息。(2)misc分区平时是只读的,OTA时可以写入


问:userdata分区在OTA的升级范围内吗?

答:userdata没有镜像的概念,不在OTA的范围内


问:APP分区只升级部分文件可以吗?

答:app分区OTA是以镜像的形式,无论整包还是差分,都不能支持只升级部分文件


问:当前emmc上分区规划,有多少分区?linux能支持这么多分区吗?

答:见分区表,大约有30几个分区。我们采用GPT分区表的分区形式,最多128个分区


FAQ002: OTA升级

问:分区slot AB转换是如何实现的?

答:B分区OTA升级完之后会将slot B置为待启动(通过改misc分区信息),下次启动boot流程(spl/uboot等)会检测到这个状态,然后切为从B slot启动


问:otaupdate成功的话,可以关掉自动reboot吗?

答:可以,升级命令后面加参数no_reboot


问:基于文件的升级,也会触发A/B分区转换吗?hbupdate写入镜像时,会不会检查签名key?

答:(1)无论是基于文件还是基于块的升级,都会触发A/B分区转换。文件和块的方式只是烧写方式不同,不会影响OTA的分区切换逻辑。(2)这里的签名key只是在OTA场景下用,hbupdate升级时不用OTA镜像,当然会有secure boot的安全校验


FAQ003: OTA错误处理

问:整包ota时候,如果中间某一个环节失败,就代表整包升级失败吗?

答:整包升级如果某一环节失败,代表这次升级失败


问:升级成功后,会同步覆盖部分备区,要是在后续运行过程中出现故障,需要回退版本,这种场景是如何考虑的?

答:车载场景一般需要防回滚来减小安全漏洞。OTA不支持版本回退的升级,对于bak分区这种,如果需要版本回退,那么只能通过hbupdate方式


FAQ004: OTA安全方案

问:OTA加密验签过程在debug阶段可以关闭嘛?

答: 为了保证镜像的完整性与安全性,OTA采用强制验签