01.CP 与 FOTA
FOTA(Firmware Over-The-Air)是一种通过无线网络远程更新车辆中的软件的技术。
随着安全要求的不断提升以及分布式、互联功能带来的软件复杂性日益增加,车辆系统需要频繁保持最新状态。为了减少因软件更新而带来的耗时和重复前往维修厂的麻烦,应通过 FOTA 技术向车辆推送软件更新。
CP AUTOSAR 对 FOTA 的支持主要体现在以下几个方面:
- 软件包管理:CP AUTOSAR 提供了一套丰富的软件包管理功能,以支持 FOTA。这些功能包括软件包的下载、验证、存储和安装。车辆可以通过无线网络接收到新的软件包,并使用 CP AUTOSAR 提供的安全机制进行验证,以确保软件包的完整性和可靠性。验证通过后,软件包可以被存储在车辆的存储器中,准备进行更新。
- 更新过程执行:CP AUTOSAR 定义了 FOTA 更新过程的执行流程。这包括检测新的软件包、下载软件包、安装软件包以及更新后的验证等步骤。在更新过程中,CP AUTOSAR 提供了数据完整性和安全性的保障,以确保软件包的正确性和可靠性。
不过,CP AUTOSAR 自身是不直接支持 OTA 的。这意味着要更新在 CP AUTOSAR 上运行的应用程序,就必须更新整个 ECU 的代码。通过其他控制器对运行 CP AUTOSAR 的控制器进行更新,并不被视为 CP AUTOSAR 自身的 OTA 功能。
02.FOTA 简介
FOTA 引入了一种通用机制,允许在车辆运行时更新 ECU(电子控制单元)软件。当当前 ECU 软件正在执行且功能完全正常时,新的 ECU 软件应在后台进行打包准备。在安装过程中,必须验证新软件的真实性和完整性。一旦验证通过,ECU 应能启用新的软件版本。不过,软件的启用需要 ECU 进入一种特殊模式,因此在车辆行驶过程中不得启动或执行新软件的启用操作。启用新软件应在确保车辆安全的状态下进行,比如车辆静止、发动机熄火且已施加驻车制动时。
如果在启用新软件的过程中或之后发现异常或错误,ECU 应具备内部回滚功能,即能够恢复到之前的软件版本。这意味着之前的软件会保留在 ECU 上,并可以随时重新启用。
不同的无线技术(UMTS、LTE、蓝牙、WiFi、5G)可用于将车辆连接到后端/云系统,以提供将软件下载到车辆的能力。通过 CAN、CAN-FD、Flexray 或汽车以太网等车辆总线,将新软件分发到需要更新的目标 ECU。
如今,大多数 ECU 都具备更新升级功能。通常,这种软件更新的实现接口采用闪存引导加载程序的形式,并且支持通过 OTA 技术更新主 ECU。可以通过将软件更新任务从外部诊断仪发送到已连接的车载 ECU(作为 OTA-Master)上,来实现无线的软件更新。从目标 ECU 的角度来看,无论是通过传统的诊断仪还是通过 OTA-Master 进行更新,整个过程都十分便捷。
这种方法涉及几个重要方面,需要在实施过程中仔细考虑(以下针对单分区升级方案):
首先,从功能角度来看,在整个软件更新过程中,目标 ECU 将无法正常运行,这通常意味着整个车辆在软件更新期间会处于不可用状态。
其次,在分布式电子电气架构中,由于多个 ECU 需要在一次更新活动中同步更新,与单独更新一个 ECU 相比,车辆的不可用时间可能会更长。
再者,如果在安装新软件的过程中或之后出现问题,虽然可以通过 OTA 主控端启动并重新安装之前的软件来进行修复,但这一操作会进一步延长车辆的不可用时间,并有可能导致 ECU 功能完全失效。
此外,如果需要进行软件回滚,那么与更新相关的所有依赖 ECU 也必须同步进行回滚操作。
最后,采用这种方法时,我们还需要特别注意电池的剩余容量,以确保更新过程的顺利进行。
03.FOTA 流程
FOTA 的整体更新过程可分为几个阶段,可以参考如下图示:
FOTA 升级过程图示
1. Update
术语“(FOTA)update”用于表示 ECU 的整个更新过程(如果是其他依赖 ECU 更新,则表示多个 ECU)。它包含下面描述的所有任务,例如 download, installation, verification, activation 等。如有必要,可以将回滚功能视为更新过程的一部分。
2. Download
下载镜像是指将 FOTA 目标 ECU 的完整更新所需的 ECU 软件、数据和配置从后端服务器传输到 FOTA 主节点,即 FOTA 的 Master ECU。
3. Installation
Installation 是指将待更新的 ECU 软件从 FOTA 主节点 ECU 转移到 FOTA 目标 ECU。由于一次将整个 ECU 软件完全传输到 FOTA 目标 ECU 并不方便,因此该过程是使用数据块实现的。当没有更多块要传输到 FOTA 目标 ECU 并且所有块都已成功写入内存堆栈时,安装过程就完成了。
此外,安装过程还包括 FOTA 目标 ECU 内的 flash 驱动程序将软件实际写入非活动目标分区。
4. Verification
Verification 验证过程是要确保更新的 ECU 软件的正确性。这只会影响相应 FOTA 目标 ECU 中的普通 ECU 软件(例如镜像或者差异化更新)。
5. Activation
Activation 激活过程是 ECU 引导分区的实际启动操作。对于采用不可切换内存架构的 ECU,比如那些使用外部闪存或固定多分区内存的 ECU,这个过程还涉及到从临时存储(例如外部闪存)到内部闪存的复制。一旦确认了前一个 ECU 软件版本的备份,激活过程即告完成。新安装的软件必须在车辆处于安全状态时才能最终激活,开发者有责任确保车辆在这种安全状态下进行操作。
6. Rollback
在回滚过程中,必须恢复之前运行软件的所有 ECU 和用户数据。回滚完成后,ECU 软件和用户数据必须与整个更新过程开始之前没有差异。
04.FOTA 技术架构
FOTA 流程中所有相关组件和模块的架构概述
整体 FOTA 架构设计如上图所示,包括:
- FOTA Target ECU
它接收从 FOTA Master 刷写的 ECU 软件,并将软件写入到内存堆栈(实际的 ECU 软件烧录过程);
- FOTA Master ECU
缓存所有新的 ECU 软件工件,以发送到 FOTA 目标 ECU;
- 后端服务器
为 FOTA Master ECU 提供要安装到 FOTA Target ECU 的镜像;
1. FOTA Target ECU
由于 FOTA 处理程序规范目前仍在发展阶段,尚未涵盖和明确定义所有功能,因此现阶段将其视为 CDD。如果未来 FOTA 的功能集增长到足够复杂,足以构成一个独立的 BSW 模块时,AUTOSAR 可能会考虑定义 FOTA BSW 模块。
由于 AUTOSAR Dcm 模块实现了 UDS 诊断协议,因此直接提供了许多有用的功能以实现 FOTA 功能。对于 FOTA 程序,可以有如下的功能实现:
- 会话处理
- 安全访问
- 身份验证
- 服务处理(用户工作),例如:
- 0x22/0x2E Read/WriteDataByIdentifier
- 0x31 路由控制
- 0x34 RD/0x36 TD/0x37 TE(请求下载/传输数据/传输退出)
- 错误处理
- 检查更新升级条件
- 重置/重启 ECU
Nv Data
在 AUTOSAR 中,NvM 模块主要负责管理数据闪存,包括用户数据、标定数据、错误记录、快照以及 ECU 软件的其他运行时数据。这些数据会被组织成所谓的 NvDataBlock。NvM 模块提供了功能接口,允许读取、写入或删除这些数据块。
为了迁移或修改 NvData,应当使用 NvM 模块提供的功能,而不是直接操作数据闪存。这是因为 FOTA(固件空中升级)的 Master 和 Target 端都不应直接与数据闪存交互,以防止数据受到干扰、阻塞或损坏。
如果数据发生变化,例如影响到 NvData 或用户数据的迁移,这些变化需要由实施者进行处理。
然而,为了安全地存储与 FOTA 进程相关的信息(如当前 FOTA 进程状态、FOTA 处理程序上次成功写入的内存地址等),并确保这些信息在中断期间能够持续存在,应使用 NvM 模块来处理这些(FOTA 特定的)用户数据。
2. FOTA Master (UCM-Master)
FOTA Target ECU 需要与相应的主节点通信,以便接收 FOTA 镜像数据。此 Master 实例必须存储车辆网络中所有相关 ECU 的镜像数据,数据量突然不会少。
通常,Classic Platform 所针对的嵌入式 ECU 在内存、存储及计算能力上资源较为有限。因此,一种可行的方案是将 FOTA Master 实例的职责转移到资源更丰富的 AP 平台上的 ECU 中。
与 FOTA Target ECU 通信的实现目前由更新和配置管理模块(UCM,Update And Configuration Management)完成。这将产生以下逻辑体系结构:
3. Backend
后台 FOTA 服务器 Backend 实例表示要更新的车辆的初始镜像程序和通知接口。有关可用新软件的通知可以从后端实例触发到车辆,或者车辆自行决定何时询问是否有新软件可用(轮询方法)。但是,如果车辆网络中一个或多个 ECU 的新软件可用,则启动镜像拉取过程并将镜像存储在车辆内的适当位置(例如 FOTA Master)。后台服务器还必须提供有关与其他软件包的依赖关系的信息。车辆可以与后台服务器共享有关 FOTA 流程的状态和更新进度信息,以便进行分析和诊断。
05.FOTA 内部状态
FOTA Handler 模块需要在处理 FOTA 镜像期间处理并指示所有不同的状态。这还包括恢复中断(例如由于驾驶周期更改)或暂停(例如通过更高优先级的诊断请求)。为了将此信息提供给启动和触发 FOTA 程序的 FOTA Master,应实现诊断服务,从 FOTA Target 的角度提供和更新安装程序的当前状态。这些不同的状态应通过以下状态来反映:
- IDLE
ECU 启动程序后 FOTA Handler 的初始状态
- INIT
FOTA 处理程序已初始化,Dcm 已设置为正确状态(在 Dcm FOTA 会话中,已授予安全访问权限)。
- READY
所有 FOTA 数据块均已完成安装,可以触发激活程序。
- PROCESSING
FOTA Handler 由 Dcm 调用触发,因为新块已被接收并正在处理。
- WAIT
FOTA 处理程序已成功处理最后一个接收到的数据块,返回了 Dcm 函数返回值,并正在等待下一个数据块。
- VERIFY
自行设定如何验证数据包,CP 对这方面没有具体的约定。
- ACTIVATE
FOTA 安装已完成,并从 FOTA Master 收到相应的工作指令,该指令指示下一次启动过程中的分区切换。
- ERROR
可以反馈 Target 的错误状态,根据实际情况自已进行定义,CP 对这方面没有具体的约定。
上述所有状态应有助于保持 FOTA Target 状态,从而保持整个 FOTA 更新过程的确定性、可靠性和可恢复性。这将导致一个状态机来处理 FOTA 更新,如图所示:
FOTA 状态机
06.小 结
AUTOSAR CP 中的 FOTA 流程是一种在运行时更新 ECU 软件的机制,它通过无线技术将新软件下载到车辆上,并在后台进行安装和验证,以减少车辆停机时间并提高软件更新效率。FOTA 技术架构包括 FOTA 目标 ECU、FOTA 主机和后端等组件,通过一系列步骤实现软件的下载、安装、激活和回滚等功能。内部状态机则管理 FOTA 过程中的各种状态转换,确保软件更新的可靠性和安全性。
END
作者:不可说
来源:汽车电子与软件
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。)