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采用强制验签