您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
业务架构设计
4月18-19日 在线直播
基于UML和EA进行系统分析设计
4月25-26日 北京+在线
AI 智能化软件测试方法与实践
5月23-24日 上海+在线
   
 
 订阅
AP AUTOSAR 更新与配置管理(UCM )模块详解
 
作者:刘向
   次浏览      
 2025-3-26
 
编辑推荐:
本文主要介绍了AP AUTOSAR 更新与配置管理(UCM )模块相关内容。 希望对您的学习有所帮助。
本文来自于微信公众号汽车电子与软件,由火龙果软件Linda编辑、推荐。

背 景

随着汽车电子电气架构向集中式、服务化方向演进,软件更新与配置管理成为确保车辆功能安全、提升用户体验的重要环节。UCM(Update and Configuration Management,更新与配置管理) 是 Adaptive AUTOSAR 平台的核心服务模块之一,旨在为车辆电子控制单元(ECU)提供灵活、安全的软件更新和配置管理功能。为现代智能网联汽车提供强大的软件生命周期管理能力——从开发、测试到部署与维护。

#01UCM逻辑架构概述

UCM功能集群:主要负责在自适应AUTOSAR平台上进行软件集群的安装、更新或移除操作。软件集群由一组自适应应用程序进程及相关数据元素组成,能够在运行时独立地被修改。

图 1. UCM Logical Architecture

1.1 核心概念

软件包:是包含构件(如可执行文件、库等)和更新指令的容器,用于执行对软件集群的变更。

UCM Client:这是一个特定于项目的自适应应用程序,它作为UCM与外界沟通的桥梁。

通信接口:UCM Client使用ARA::COM API与UCM PackageManagement服务交互,确保软件包能被正确传递和处理。

UCM Subordinate:这个进程直接在目标机器上执行实际的更新操作,根据接收到的软件包中的指令来实施具体的变更。

1.2 UCM 的核心作用

UCM主要负责软件包的管理,包括传输、验证、安装、更新与移除等操作。此外,它还与状态管理(STM)、加密等多个自适应平台功能集群进行交互。UCM是AP平台实现 OTA(Over-The-Air)更新的技术基石,更是保障车辆功能安全(ISO 26262)与网络安全(ISO 21434)的关键。

图 2. UCM Overview

通过标准化流程,UCM 解决了以下问题:

1.支持动态更新:支持在机器(Machine)运行时安装、更新或移除自适应应用程序(Adaptive Applications),无需完全重启系统。

2.确保安全性:通过加密验证(如 RSA、ECC)和完整性检查(如 SHA256)确保软件包的来源可信且未被篡改,防止恶意代码注入。

3.跨 ECU 协同:通过 UCM Master 和 UCM Subordinate 的协作,协调多节点更新,避免功能冲突。实现车辆内多 ECU 的集中式更新管理。

4.依赖管理和版本控制:验证软件包的运行时依赖关系,确保更新前后软件集群(Software Cluster)的版本兼容性和稳定性。

UCM模块的架构可分为 服务层、通信层、执行层 和 持久化层,各层协同工作以实现端到端的更新管理。

Adaptive AUTOSAR UCM 模块通过分层架构和标准化流程,实现了车辆软件的高效、安全更新。其核心价值在于:

灵活性:支持流式传输、并行处理,减少停机时间。

可靠性:依赖验证、回滚机制和状态管理确保系统稳定性。

扩展性:通过插件机制(如镜像更新适配器)支持不同硬件和项目需求。

#02 UCM 模块的组成部分

在Adaptive AUTOSAR中,UCM 模块由以下核心部分构成:

图 3. UCM Master Architecture

UCM Master作为中央协调者,管理多个UCM Subordinate实例,每个Subordinate可能对应不同的ECU或软件组件。

2.1 UCM Master

核心职责:作为更新和配置管理的中央协调者,负责全局控制。

发起软件更新(例如OTA)、配置变更请求。

管理多个UCM Subordinate的生命周期。

监控所有Subordinate的状态,处理错误和回滚。

应用场景:云端OTA服务器、车载中央网关或高性能计算单元(HPC)。

UCM Master通过使用PackageManagement服务和通信管理功能集群可以与不同机器上的UCM Subordinate进行通信。主要是负责检索有关机器上软件包当前状态的信息,并将合适的软件包传输给UCM Subordinate。

2.2 UCM Subordinate

核心职责:作为执行单元,负责本地操作。

接收Master的指令,执行软件包操作(安装、更新、移除)。

上报本地资源状态(如存储空间、当前软件版本)。

实现原子化操作(例如事务性更新,失败时回滚)。

与状态管理(STM)、加密(Cryptography)、持久性(Persistency)等功能集群交互,确保更新过程的安全性。

管理本地软件集群数据库(SWC Database),记录已安装软件的状态和文件信息。

应用场景:单个ECU或功能域控制器。

UCM Subordinate是一个守护进程(ara-pkgmanagerd),负责执行更新。车辆中的每个Machine都将有一个UCM Subordinate实例,该实例由中央UCM Master实例通过通信管理功能集群使用PackageManagement服务控制。

2.3 UCM Master 和 Subordinate 的交互流程

2.3.1 内部状态

在应用程序更新期间,UCM Subordinate将经历内部状态的转变。UCM Master用于使用PackageManagement服务发起状态转变。状态转变的图表可以在图中看到。

图 4. UCM Internal State Machine

2.3.2 交互流程

交互基于Adaptive AUTOSAR的 服务导向架构(SOA),通过标准化的API和SOME/IP通信协议实现。

(1) 初始化与状态同步

Master→Subordinate:

通过GetInstalledPackages 或GetSwClusterState方法获取Subordinate的当前软件/配置状态。

Subordinate → Master:

返回状态信息(如软件包版本、校验和、依赖关系)。

(2) 更新/配置操作流程

1. 操作请求:

Master通过 TransferStart发起传输请求,推送更新包(例如差分更新文件)或配置数据。

使用 TransferData 分段传输数据,确保大文件的分块可靠性。

TransferExit 方法接收软件包。

2. 验证与准备:

Subordinate调用 Verify 方法校验数据完整性(例如数字签名、哈希值)

检查资源(如存储空间、依赖版本)是否满足条件。

解析清单文件(Manifest),提取制品(Artifacts)。

3. 执行操作:

Master通过PrepareUpdate和StartUpdate触发安装或配置变更。

调用 Activate 执行操作,并通知状态管理关闭或重启相关应用程序。

Subordinate在事务性上下文中执行操作,确保原子性。

4. 状态反馈与提交:

Subordinate通过 GetUpdateStatus 上报进度(例如 UPLOADING、VERIFYING、INSTALLING)。

通过 VerifyUpdate 检查更新完整性,操作成功后,Master发送 Commit命令使变更生效;失败时触发回滚(Rollback)。

(3) 错误处理与恢复

Subordinate主动上报:通过 NotifyEvent 发送错误码(例如 INSUFFICIENT_STORAGE)。

Master协调恢复:根据错误类型重试、回滚或触发诊断服务(例如DTC记录)。

UCM Master和Subordinate通过标准化的服务接口和事务性操作,实现了分布式车载系统的安全、可靠更新。

2.4 UCM Client

UCM客户端是一种针对特定项目的自适应应用程序,主要职责是作为外界与UCM之间的桥梁。它不仅能够接收来自不同来源(如云端服务、诊断测试仪等)的OTA(Over-The-Air,空中下载)软件包,还能够根据项目需求决定最佳的更新时机和内容。

主要功能如下:

软件包接收:UCM客户端可以从本地文件系统或通过远程OTA方式接收软件包。需要注意的是,AUTOSAR标准并未规定用于与基于云的软件包仓库通信的具体OTA协议。

更新决策:依据内部逻辑或外部输入,UCM客户端可以智能地选择何时以及如何处理接收到的软件包。

与UCM交互:UCM客户端直接使用ARA::COM和服务接口PackageManagement与UCM进行交互。ARA::COM提供了一种基于服务导向的通信接口,而PackageManagement则是由UCM提供的服务接口,用于管理和执行软件包的更新流程。

根据具体项目的需求,UCM客户端的功能可以进一步扩展,例如增加对特定更新策略的支持,或是增强与其他系统组件的集成能力。

2.5 软件包(Software Package)

2.5.1 软件包与车辆包的概念

软件包:作为UCM(Update and Configuration Management)的基本操作单元,每个软件包封装了针对UCM的操作(安装、更新、移除)。一个典型的软件包包括:

应用程序(Executables)和配置数据(Data):实际需要部署到车辆上的可执行文件和配置信息。

Manifest文件:这是一个ARXML格式的元数据文件,包含了软件包的关键信息如名称、版本号、依赖关系等。此外,Manifest还支持身份验证和完整性验证,确保软件包来自可信来源且未被篡改。

车辆包:由原始设备制造商(OEM)在后端系统中组装完成,车辆包整合了针对具体车辆所需的所有软件包。它同样包含一个Manifest文件,这个文件不仅记录了各软件包的信息,还包括活动编排(即更新操作的顺序和条件)和车辆内部软件包分发所需的其他字段。这种结构使得车辆包可以作为一个整体被发送到车辆,并确保所有组件能按照预定计划进行更新。

2.5.2 打包与组装流程

1.查询与合并:当需要对车辆进行软件更新时,服务器会从后端数据库中查询相关的软件包。然后,这些软件包的清单(Manifests)会被合并到车辆包的主清单中,确保所有必要的更新都被包括进来,并且符合车辆的具体需求。

2.组装车辆包:在合并完成后,组装过程将开始创建最终的车辆包。这一步骤不仅仅是简单地将各个软件包组合在一起,还需要根据车辆的具体情况调整更新策略,比如确定哪些软件包应优先安装,如何处理依赖关系等。

3.下发至车辆:一旦车辆包组装完成,它将通过安全可靠的传输机制(例如OTA技术)下发到目标车辆。在此过程中,使用适当的通信协议以保证数据的安全性和完整性。

4.安装与验证:车辆接收到车辆包后,将按照预设的规则执行安装程序,并通过一系列验证步骤确保更新的成功实施。这通常涉及到与UCM模块的紧密合作,利用其提供的功能来管理整个更新过程。

2.5.3 软件包的组成

图 5. Software Package Structure

软件包结构:

Manifest文件:描述操作类型(安装/更新/移除)、依赖关系、版本信息、加密证书等关键信息。

Artifacts:包含可执行文件、配置文件等,支持TAR归档或镜像格式。此外,还包括数据文件,即应用程序所需的配置或资源文件。

身份验证块:采用链式签名(RSA 2048、SECP256R1)和哈希(SHA256)确保软件包的安全性,防止未经授权的修改或损坏。

版本管理:遵循语义版本(Semantic Versioning),拒绝降级操作,确保系统的稳定性和兼容性。

二进制包特性:

支持包级别的完整性和真实性检查。

兼容直接(流式)或间接(存储)更新方式。

提供通用格式用于图像、应用程序和设备更新。

支持不同包格式版本的处理。

根据底层ara::com限制支持不同的片段或块大小。

易于扩展以适应不同的或新的格式。

图 6. 签名身份验证块

块索引表(BIT)和签名身份验证块共同作用,下图是通过链式身份验证方法保障软件包的安全性,具体包括签名和哈希存储机制。

图 7. 链式身份验证与存储

#03UCM的依赖与相关模块的交互

3.1 UCM依赖的功能集群

UCM Client是一种与UCM协作的应用程序,它将软件包传输给UCM,并支持(项目特定的)OTA协议。

状态管理(State Management, STM):

在更新前关闭应用程序,更新后重启,并管理功能组(如 Off、Verify 状态)。

加密(Cryptography):

验证软件包签名和证书链,确保来源合法性和完整性。

持久性(Persistency):

存储诊断会话信息,支持回滚操作(由应用程序自行管理)。

执行管理(Execution Management, EXM):

管理自适应应用程序的生命周期,确保更新后配置重新加载。

3.2 UCM与相关模块的交互

UCM(更新和配置管理)在自适应AUTOSAR平台中与其他多个功能集群有着紧密的交互关系,这些交互对于确保软件包的安全、有效更新至关重要。以下是UCM与几个关键功能集群的具体交互方式:

1) 与 EXM(执行管理)的通信

隐式 IPC:UCM通过共享内存(如 UCMS_IPC_EXM_SOCKET)通知 EXM 启动或停止自适应应用。

生命周期管理:在激活阶段,EXM 负责加载新软件集群的配置(如 exm_flatcfg.bin)。

2) 与 STM(状态管理器)的交互

交互目的:确保在执行更新前后的系统状态正确转换。

具体操作:

在更新之前,UCM需要通过调用UpdateRequest::PrepareUpdate方法请求状态管理器将相关功能组切换到关闭状态,以便安全地终止并更新自适应应用程序。(如关闭车载摄像头模块)。

更新完成后,UCM会通知状态管理器重新启动这些应用程序,并通过UpdateRequest::VerifyUpdate方法检查它们是否正常运行。

安全恢复:若更新失败,STM 确保系统返回安全状态(如禁用部分自动驾驶功能)。

3) 加密功能集群的交互

交互目的:验证软件包的真实性与完整性,防止未经授权的修改。

具体操作: UCM依赖加密功能集群来对传入的软件包进行身份验证和签名验证。这包括使用特定算法(如SHA256用于摘要计算,RSA 2048或椭圆曲线密码学SECP256R1用于真实性检查)来确保只有授权来源发布的包才能被接受。

4) 持久性功能集群交互

交互目的1:执行文件系统的读写操作,以及通知其他受影响的功能集群其配置已更改。

具体操作: 在应用程序更新过程中,UCM直接与文件系统交互,执行文件的复制、删除和添加等操作。此外,当内容发生变更时,UCM还需与其他功能集群(如执行管理和加密)沟通,告知它们配置已经发生变化,要求重新解析相关配置。

交互目的2:存储诊断会话的信息。

具体操作: 尽管UCM本身不直接处理持久性数据的更新和回滚,但它依赖于持久性API来管理某些类型的数据(例如诊断会话信息)。在VRTE中,UCM有一个内部数据库用于跟踪软件包的状态变化。

5) 诊断

交互目的:支持通过统一诊断服务(UDS)传输软件包。

具体操作: 当车库测试仪需要与ECU通信并执行更新时,UCM使用ISO 14229-1:2013规定的UDS协议来进行数据交换。这意味着UCM可以接收来自外部诊断工具的指令,并根据这些指令执行相应的更新操作。

6) 包管理

交互目的:协调软件包的接收和安装。

具体操作:UCM需要从被称为“UCM Master”的包管理自适应应用程序接收信号。UCM Master负责收集关于机器上当前软件包状态的信息,并决定何时何物进行更新。它还负责将合适的软件包传递给UCM下属实例以完成具体的更新任务。

7) 其他功能集群

HSM(硬件安全模块):存储根证书与私钥,防止物理攻击。

端到端加密:软件包从云端到 ECU 的传输全程加密(如 TLS 1.3)。

UCM不仅是一个独立的服务,而且是整个自适应AUTOSAR生态系统中的重要组成部分,它通过与多种功能集群的有效协作,实现了复杂但有序的软件更新流程。这种设计保证了即使是在高度动态和分布式的环境中,也能实现高效且安全的软件管理。

8) 工具链支持(以RTA-VRTE为例)

ISOLAR-VRTE xAAP 编辑器:配置SoftwareCluster 和SoftwarePackage。

ucms-swp-generator:生成二进制软件包,支持单步或三步签名流程。

ara-pkgmanagerd:UCM Subordinate 的核心守护进程,处理本地更新操作。

#04 UCM的核心功能

1. 软件包管理

UCM处理软件包的传输、解析及执行。每个软件包都包含一个或多个<SoftwareCluster>元素,这些元素描述了需要执行的操作及其相关制品。UCM 以 软件包(Software Package) 为最小管理单元,涵盖以下功能:

传输:支持流式传输(Streaming)与分块传输(Chunked Transfer),优化带宽与内存占用。

验证:基于 X.509 证书链 验证软件包来源,通过 SHA256/RSA 2048 确保内容完整性。

安装与更新:按需执行安装(Install)、更新(Update)或移除(Remove)操作。

依赖解析:检查软件包间的版本依赖(如 dependsOn),拒绝冲突版本(如主版本不兼容)。

2. 状态管理

UCM依赖于状态管理器(State Manager, STM)来确保在更新前后的系统状态正确转换。例如,在更新之前停止应用程序,并在更新后重启它们。管理以下状态转换:

空闲(Idle):无更新任务,系统正常运行。

处理中(Processing):软件包传输与解析阶段。

激活(Activating):执行安装或更新操作。

回滚(Rollback):更新失败时恢复至上一稳定状态。

3. 资源管理

UCM在更新过程中检查所需的存储空间、内存和其他计算资源是否充足,避免因资源不足导致的更新失败。

存储空间:动态检查目标 ECU 的存储容量,拒绝超限操作。

内存分配:为并行传输与处理预留资源,避免资源耗尽。

计算资源:在激活阶段协调 CPU 占用,确保实时性任务不受影响。

4. 版本报告与历史记录

软件版本追踪:记录每个软件集群的版本号、供应商与更新时间。

操作日志:存储更新成功/失败记录,支持故障诊断。

审计功能:符合法规要求(如 UNECE R155/R156)的日志可追溯性。

UCM 模块的配置与工作流程详解

准备阶段:首先需要创建一个包含所需更新信息的软件包。

使用AP工具链配置SoftwareCluster和SoftwarePackage。

创建制品归档(例如TAR文件),这些文件包含了要更新的应用程序、配置文件等。将制品归档与清单文件一起打包成最终的软件包。

确保目标ECU上已正确配置并运行了必要的服务,如ara-pkgmanagerd(UCM的核心服务)。

1. 配置流程

UCM 的配置需通过AP工具链完成,具体步骤如下:

(1) 配置 SoftwareCluster

关键属性:

vendorId(必填):标识供应商。

version(必填):遵循语义版本(主版本.次版本.修订号)。

category(必填):分为 APPLICATION_LAYER(可移除)、PLATFORM_CORE(不可移除)、PLATFORM(平台软件)。

update_type(必填):Application、Image 或 Device(当前仅支持前两者)。

依赖关系:

通过 xAAP 扩展属性定义运行时依赖,确保激活前依赖项已满足。

制品配置:

定义文件路径(root_path)、压缩类型(compression_type)、归档格式(archive_type)等。

(2) 配置 SoftwarePackage

操作类型:install、update 或 remove。

激活动作:nothing(无需操作)、reboot(重启机器)、restartApplication(重启应用)。

加密证书:需配置证书链(X.509 DER/PEM 格式),确保软件包签名可验证。

(3) 生成软件包

生成一个软件包通常涉及三个步骤:

1. 使用UCM Manifest编辑器创建一个包Manifest

2. 创建包含要修改的可执行文件和配置数据的工件存档

3. 将工件存档和manifest打包在一起形成一个软件包

文件要求:制品需命名为 artefact_<ID>.tar,清单文件必须重命名为 manifest。

(4) 目标环境配置

UCM Subordinate 配置:

设置临时目录(scratch_folder)、软件集群数据库路径(swc_db_folder)。

启用与状态管理(fc_stm_enable=true)和执行管理(fc_exm_enable=true)的交互。

加密配置:确保加密守护进程(crypto_daemon)的证书存储中包含根证书。

2. UCM的工作流程

UCM 的更新操作分为 传输、处理、激活、验证、完成事务 五个阶段:

图 8. Software Package State Machine

(1) 传输阶段

使用UCM Master或OTA客户端将软件包安全地传输到目标ECU上的UCM Subordinate实例。这可以通过调用TransferStart()方法开始,并通过TransferData()发送数据块,最后通过TransferExit()完成传输。

图 9. Transferring a Software Package

步骤:

1. TransferStart:初始化传输,指定软件包大小和块大小。

2. TransferData:分块传输软件包数据(支持流式传输)。

3. TransferExit:结束传输,缓存至临时目录。

图 10. Streaming a Software Package

流式传输:

在传输过程中调用 ProcessSwPackage,实现并行处理(支持镜像更新)。

(2) 处理阶段

提取与解析:UCM下属接收并缓存传入的软件包,然后开始提取其内容并对清单文件进行解析。这一阶段会检查所有依赖关系,并为后续安装做准备。

图 11. Processing a Software Package

ProcessSwPackage:

解析清单文件,提取制品至临时目录。

验证依赖关系和版本兼容性(拒绝旧版本或冲突包)。

(3) 激活阶段

执行更新操作:根据清单文件中的指示,UCM Subordinate执行相应的操作(安装、更新或移除)。在此过程中,它会与状态管理器交互以确保系统处于安全状态,并适当停止或重启受影响的应用程序。

检查依赖关系:在激活之前,UCM Subordinate会检查所有的依赖关系是否满足,确保新版本能够正常运行。

图 12. Activating a Software Package

Activate:

1. 依赖检查:确保所有依赖项已满足。

2. 状态管理交互:

调用 UpdateRequest::RequestUpdateSession 请求安全状态。

调用 UpdateRequest::PrepareUpdate 关闭受影响功能组(终止应用程序)。

3. 执行操作:根据清单安装/更新/移除文件(直接修改 POSIX 文件系统或镜像)。

(4) 验证阶段

启动并验证应用程序:一旦激活成功,相关功能组会被切换到“验证”状态,允许新的或更新后的应用程序启动并自我验证其完整性。

回滚机制:如果验证失败,UCM会尝试回滚至之前的稳定状态,保证系统的可用性。

如果更新过程中出现错误,UCM能够自动回滚至先前版本,确保系统稳定。

问题:更新失败后,备份文件损坏导致无法回滚。

解决方案:

双重备份:在独立存储分区(如 eMMC 的 A/B 分区)保留两份备份。

事务日志:记录每一步操作,支持断点续滚。

图13. Verifying Software Package

VerifyUpdate:

状态管理将功能组切换至 Verify 状态,启动更新后的应用程序自检。

图 14. Failure During Verifying Software Package

若验证失败,触发回滚(Rollback)并恢复至旧版本。

(5) 完成事务

清理工作:调用Finish()方法后,UCM进入清理状态,删除任何备份数据,并通知状态管理器操作已完成,使系统返回空闲状态。

图 15. Ending a Transaction

Finish:

清理缓存文件和备份数据。

调用 UpdateRequest::StopUpdateSession 结束更新会话,返回空闲状态。

软件包生命周期状态

图 16. Software Cluster State Machine

1) 已添加(Added) - UCM完成了对首次安装传输的软件包的安装操作(kInstall)。激活后,添加的软件包将进入Present状态。

2) 已更新(Updated) - UCM完成了对传输的软件包的更新操作(kUpdate)。处理后的软件包需要激活才能进入Present状态。

3) 已移除(Removed) - UCM完成了对软件包的移除操作(kRemove)。激活后,该软件包将从UCM中完全移除。

4) 当前存在(Present) - 处理后的软件包(无论是新安装还是更新的包)已经成功完成激活。在此生命周期状态下,软件包的<软件集群>已准备好运行。

 

   
次浏览       
 
相关文章

CMM之后对CMMI的思考
对软件研发项目管理的深入探讨
软件过程改进
软件过程改进的实现
 
相关文档

软件过程改进框架
软件过程改进的CMM-TSP-PSP模型
过程塑造(小型软件团队过程改进)
软件过程改进:经验和教训
 
相关课程

以"我"为中心的过程改进(iProcess )
iProcess过程改进实践
CMMI体系与实践
基于CMMI标准的软件质量保证

最新活动计划
DeepSeek在软件测试应用实践 4-12[在线]
DeepSeek大模型应用开发实践 4-19[在线]
UAF架构体系与实践 4-11[北京]
AI智能化软件测试方法与实践 5-23[上海]
基于 UML 和EA进行分析设计 4-26[北京]
业务架构设计与建模 4-18[北京]
 
 
最新文章
iPerson的过程观:要 过程 or 结果
基于模型的需求管理方法与工具
敏捷产品管理之 Story
敏捷开发需求管理(产品backlog)
Kanban看板管理实践精要
最新课程
基于iProcess的敏捷过程
软件开发过程中的项目管理
持续集成与敏捷开发
敏捷过程实践
敏捷测试-简单而可行
更多...   
成功案例
英特尔 SCRUM-敏捷开发实战
某著名汽车 敏捷开发过程与管理实践
北京 敏捷开发过程与项目管理
东方证券 基于看板的敏捷方法实践
亚信 工作量估算
更多...