FireFly 线刷软件架构
版本号 | 说明 | 修改时间 | 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
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升级失败,需要修复等。
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 参数保存为模板可直接选取。