FireFly 线刷软件架构

FireFly 线刷软件架构

 

版本号

说明

修改时间

Author

版本号

说明

修改时间

Author

v0.1

initial version

20240807

YangChuan

本方案适用场景为:A-Core、M-Core、ECU工作状态正常,ECU支持UDS烧写,M核支持UDS烧写、支持PDU Router。

方案简述:通过网线,连接PC与ZCU,PC端选择镜像对ZCU 的A-Core、M-Core、M核下挂ECUs进行烧录。

1. Architecture

image-20240807-095007.png

 

 

2. Components & functionality

1、Flash tool

  • 连接界面:配置将被烧录的ZCU IP与刷写服务Port,包含”连接“、”断开连接”按钮与对应功能实现;

  • 版本展示:

    • 界面展示处于连接状态ZCU、下游ECUs的版本信息,

    • 包含A/B分区的版本;

    • M核版本包含bootloader 与 M7_app版本;

  • 烧录操作:

    • 1)提供选择待升级镜像界面,选择A/M核镜像,选择ECU镜像并配置对应逻辑地址;

    • 2)包含”开始烧录”、”终止烧录“按钮,点击”开始烧录”,将镜像发送至ZCU并开始烧录;

    • 3)选择单板/全车模式,以确定是否需要pre-condition判断;

  • 状态显示:展示当前FZCU连接状态、镜像传输进度、烧录进度;

 

2、Updater

  • 连接功能:等待并接收Flash tool发起的sovd连接;

  • 升级包处理:接收/校验/解压升级包;

  • 条件检查:(若有)进行pre-condition、post-condition检查,检查项及数据链路与ceer ota保持一致;

  • 触发A核更新:

    • 通过调用系统侧接口,触发A-Core installer进行安装、调用active接口,

    • 获取installer安装进度、刷写结果,并上报至Flash tool展示;

  • 管理M核、ECUs更新:

    • SOVD-DoIP,编排与引导M核及下级ECUs升级;

  • 版本收集:收集A核、M核、ECUs版本信息并上报,升级前与完成升级后均需要;

 

3、M-Core

  • PDU router;

  • Doip-Docan;

  • 自身UDS刷写服务;

 

4、A核Linux系统

  • 提供升级包安装功能(具体的分区刷写操作);

  • 提供Linux升级包安装进度查询功能;

  • 提供meta数据操作接口(分区active、boot 标识修改)、版本回滚实现、meta数据查看;

  • 合理的A/B分区结构;

 

3. Workflow

1)准备升级镜像:包含A核镜像、M核镜像、ECUs镜像;

2)在Flash tool中,配置好ZCU的网络参数、连接端口后,连接ZCU;

3) 建立连接后,updater收集A/M核、ECUs版本,发送至Flash too进行展示;

4)在Flash tool界面,选择单板/整车模式,选择待烧录镜像,ECU填写对应逻辑地址;由工具压缩为一个包,并声称manifest文件;发送至updater;

5)Updater接收包,并验证包的完整性,Updater 解包;

6)如果是整车模式,检查precondition,返回检查结果至Flash tool;

7)Updater依据manifest,传输M核镜像、ECU镜像;触发installer 读取A核镜像。

8)调用Installer安装A核镜像至eMMC中inactive分区;

M核接收镜像安装到norflash中inactive分区;活转发至下游ECU进行安装;

9)Updater激活升级的分区,重启切换到新的镜像;

10)重启后,检查升级结果并在PC端展示;

11)如果失败,进行异常处理:版本回滚(切回之前的分区),上报flash tool内容:another slot升级失败,需要修复等。

image-20240806-025345.png

 

 

4. 刷写策略

A-Core需支持Kernel、dtb、rootfs、HHEV.OS、OTA组件分区刷写;M-Core需支持M7-app刷写。

1)目前只需支持整个镜像/分区刷写,无需支持差分升级。

2)A-Core、M-Core 支持A/B分区,针对A/B的刷写逻辑,内部设计实现;

5. 异常处理

1、过程中断:线刷过程中,如果网络连接中断/ZCU掉电,不影响下次正常启动;

要求active时,只有到升级镜像完全写入磁盘,才能修改启动标识。

2、启动异常:A核/M核升级后,如果启动多次失败,自动回滚。

要求设置单slot最大启动失败次数,超过最大次数切回备份分区。

 

相关详细设计

Flash tools:操作与展示信息界面,连接、烧写逻辑触发;

A核updater:SOVD SVR、通信接口,包下载、验证、烧写,信息上报,flash tools调用的接口;

A核系统:提供接口与环境:A/B分区、路径、刷写磁盘工具、slot状态查看与设置;

M核:协议与报文格式(DoIP、DoCAN)、分区结构、norflash刷写逻辑。

 

评审会议讨论:

1、由于各家的ECU flash sequence都不太一样,所以updater目前先将RZCU作为典型ECU,按照其 flash sequence进行设计;

2、RZCU 支持在APP与bootloader中进行UDS烧录;

3、ECU烧录必备参数:TA、镜像在存储中的目标地址,以上数据不便于记忆。建议Flash tool端将M核/RZCU 参数保存为模板可直接选取。