1. 引言
基于当前现状,需要基于Trigger进程、Boyan Ota组件、底软Ota工具等模块,实现一套Matrix6 云端Ota升级方案,具有云端下发到车辆实现Ota的全自动化流程,代替人工升级的方案。
2. 全流程方案设计
基于Trigger进程、Boyan Ota组件、底软Ota工具等模块的Matrix6 云端Ota升级方案的方案设计图如下。

通过模块、数据链路,Matrix6 云端Ota升级方案的流程可以被分解成如下步骤:
本地/CICD服务器上构建对应版本的Ota升级包。
上传Ota包到云端系统上。
研发测试同学在云端系统上选择指定车辆,触发云端Ota升级。
车云系统与工控机上的Trigger模块交互,将对应的Ota升级包下发给Trigger。
Trigger模块与板端Ota manager模块交互,请求发起Ota,并将升级包传输到板端。
Ota manager与板端SM、EM模块交互,切换系统状态、关闭上层应用进程。
Ota manger与Ota service模块交互,下发升级包给Ota service,并同事Ota service进行ota升级。
Ota service对升级包进行校验、解压等操作,并使用LibUpdate.so动态库进行刷写升级。
Ota service刷写成功后,通过Ota manager通知SM模块下电重启域控。
域控重启后,Ota manager通过SM/EM校验系统是否正常,Ota service通过Libupdate.so动态库校验刷写、引导是否正常。
校验完成后,Ota manager与Trigger模块通信,通知Trigger模块本次Ota升级结果。
Trigger模块将本次Ota升级结果上传到云端,研发测试同学确认结果。
在方案开发验证阶段,本文聚焦于J6 Ota包和J6板端相关的流程1和流程4~11,使用ota测试工具manager_client_test程序代替trigger模块,在板端完成开发测试验证。
3. 构建Ota整包
制作底软Ota整包用于ota升级(应用包等其他包同流程)。底软Ota整包中包括组件:底软ota包 + 签名文件 + manifest文件。各组件作用如下:
底软ota包:用于刷写升级底软
签名文件:用于对Ota包的校验,反正Ota包损坏或被篡改等
manifest文件:用于记录Ota包的相关升级信息
组件a底软ota包来源于系统软件发布;签名文件和manifest文件需按照Boyan ota组件的规则生成。最后将这些组件按照规则压缩成zip包即可。
3.1 获取底软Ota包
底软包来源于系统软件发布,详情见系统软件release note。获取步骤如下:
判断J6 域控是 secure/non-secure (国密/国际) 类型,判断指令如下:
根据 国密/国际 类型,在 releaser note文档 - 发布镜像 中下载对应的 OTA 包。
解压镜像包,选择所需要的ota包。ota包目前分为两种:all_in_one.zip 和 all_in_one_full.zip。
all_in_one.zip: 只刷写更新底软分区,不刷写更新中间件和应用。
all_in_one_full.zip: 同时刷写底软 + 中间件 + 应用分区。
3.2 制作签名/manifest文件
签名文件和manifest文件模板如下:
签名文件模板:
manifest文件模板:
3.3 制作Ota整包
将ota包、签名文件、manifest文件放到同一目录下,通过zip压缩获取压缩包(保证解压后 all_in_one 目录下就有ota包等文件)。操作命令如下:
制作好的 all_in_one.zip 整包就可以用于ota升级。
4. Ota升级测试
4.1 升级测试操作步骤
Ota测试工具manager_client_test程序代替trigger模块,在板端完成开发测试验证。操作步骤如下:
上传Ota测试工具manager_client_test到板端。
查看/记录升级前域控的分区面:
运行模拟测试工具,按照如下步骤操作:
输入c,选取本机IP地址:
输入5,订阅ota状态变化:
输入3,准备ota升级
输入4,传输文件,并输入ota包的绝对路径:
等待ota升级到restart_prepared状态并重启
查看 Ota_manager 的日志,确认是否验证-激活 成功
查看/记录升级后域控的分区面:
4.2 升级测试操作结果
升级前,处于B面:
Ota_manager 日志:
升级后,处于A面:

