专栏算法工具链J6 云端Ota升级方案设计与实现

J6 云端Ota升级方案设计与实现

狗子别怕2024-11-27
176
1

1. 引言

在开发、调测过程中,经常通过Ota技术升级应用软件、底软。目前,项目上已将Matrix6的Demo部署在实车上,每次软件、底软需要版本更替或版本升级时,都需要研发测试同学上到车上使用工控机进行手动升级。这流程存在耗费人力多,花费时间长,流程易出错的问题,并且车辆异地时远程操作困难的问题。
基于当前现状,需要基于Trigger进程、Boyan Ota组件、底软Ota工具等模块,实现一套Matrix6 云端Ota升级方案,具有云端下发到车辆实现Ota的全自动化流程,代替人工升级的方案。

2. 全流程方案设计

基于Trigger进程、Boyan Ota组件、底软Ota工具等模块的Matrix6 云端Ota升级方案的方案设计图如下。

Description

通过模块、数据链路,Matrix6 云端Ota升级方案的流程可以被分解成如下步骤:

  1. 本地/CICD服务器上构建对应版本的Ota升级包。

  2. 上传Ota包到云端系统上。

  3. 研发测试同学在云端系统上选择指定车辆,触发云端Ota升级。

  4. 车云系统与工控机上的Trigger模块交互,将对应的Ota升级包下发给Trigger。

  5. Trigger模块与板端Ota manager模块交互,请求发起Ota,并将升级包传输到板端。

  6. Ota manager与板端SM、EM模块交互,切换系统状态、关闭上层应用进程。

  7. Ota manger与Ota service模块交互,下发升级包给Ota service,并同事Ota service进行ota升级。

  8. Ota service对升级包进行校验、解压等操作,并使用LibUpdate.so动态库进行刷写升级。

  9. Ota service刷写成功后,通过Ota manager通知SM模块下电重启域控。

  10. 域控重启后,Ota manager通过SM/EM校验系统是否正常,Ota service通过Libupdate.so动态库校验刷写、引导是否正常。

  11. 校验完成后,Ota manager与Trigger模块通信,通知Trigger模块本次Ota升级结果。

  12. 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。获取步骤如下:

  1. 判断J6 域控是 secure/non-secure (国密/国际) 类型,判断指令如下:

  1. 根据 国密/国际 类型,在 releaser note文档 - 发布镜像 中下载对应的 OTA 包。

  2. 解压镜像包,选择所需要的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模块,在板端完成开发测试验证。操作步骤如下:

  1. 上传Ota测试工具manager_client_test到板端。

  2. 查看/记录升级前域控的分区面:

  1. 运行模拟测试工具,按照如下步骤操作:

    1. 输入c,选取本机IP地址:

  1. 输入5,订阅ota状态变化:

  1. 输入3,准备ota升级

  1. 输入4,传输文件,并输入ota包的绝对路径:

  1. 等待ota升级到restart_prepared状态并重启

  1. 查看 Ota_manager 的日志,确认是否验证-激活 成功

  2. 查看/记录升级后域控的分区面:

4.2 升级测试操作结果

  1. 升级前,处于B面:

  1. Ota_manager 日志:

  1. 升级后,处于A面:

算法工具链
社区征文征程6技术深度解析底层软件官方教程
评论1
0/1000
  • 卖报小郎君
    Lv.1

    方案很好,点赞

    2025-03-20
    0
    0