模块 ara::sm — State Management
模块指南人工智能生成
编排 Adaptive Machine 的系统状态、功能组、节能模式和软件更新。
编排 Adaptive Machine 的系统状态、功能组、节能模式和软件更新。
Adaptive Cluster State Management 与 Execution Management 及 UCM 协同控制 Adaptive Machine 的全系统运行模式、功能组状态和软件更新阶段 EXP SWArchitecture 第51页。它通过配置的表格和动作列表确定性地处理迁移触发条件,通过 StateMachineNotification 报告中间状态,并通过 Hub-Satellite 模式编排 Suspend-to-RAM [SWS_SM_91107],[SWS_SM_81110]。诸如对更新许可的严格检查以及强制性的 ANY 错误捕获路径等边界条件确保了平台的稳健运行 [SWS_SM_91108]。
功能集群 State Management (SM) 在 AUTOSAR Adaptive Platform 中充当中央平台守护程序,用于控制机器状态、功能组状态以及执行模式 EXP SWArchitecture 第51页。它将控制应用程序(SMControlApplication)中特定于车辆的决策逻辑与 Execution Management (EM) 的实际进程管理严格解耦 EXP PlatformDesign 第40页。除厂商专属实现外,AUTOSAR 还提供了一种标准化的 StateMachine 方法,其中通过表格元模型和配置的动作列表来处理迁移 SWS StateManagement 第42页。
状态迁移通过 StateMachineService 的方法 RequestTransition 发起 [SWS_SM_91107],并对照 TransitionRequestTable 进行校验 SWS StateManagement 第44页。在处理关联的 ActionList 期间,通知字段 CurrentState 向消费应用程序指示过渡值 "inTransition",随后在完全确认后发布目标状态 [SWS_SM_91109],SWS StateManagement 第67页。
时序图:通过 StateMachineService 进行规则状态迁移并通过 StateMachineNotification 进行通知的流程。来源:[SWS_SM_91107],[SWS_SM_91109],SWS StateManagement 第51页
为了执行软件更新,State Management 为 Update and Configuration Management (UCM) 提供接口 UpdateRequest [SWS_SM_91102],EXP SWArchitecture 第56页。在检查应用程序字段 UpdateAllowed 后,该模块协调准备步骤(PrepareUpdate)、验证步骤(VerifyUpdate)或回滚步骤(PrepareRollback),并通过 ResetMachine 协调机器重启 [SWS_SM_91100],[SWS_SM_91103],[SWS_SM_91108]。对于 Suspend-to-RAM 等节能模式,S2RHub 和 S2RSatellite 同步应用程序和操作系统的冻结与恢复运行 [SWS_SM_81010],[SWS_SM_81110],[SWS_SM_71001]。
在发生错误时,SmErrorDomain [SWS_SM_81247] 以及 ErrorRecoveryTable 中强制性的 ANY 捕获条目可确保确定性地捕获来自 Execution Management 或 Platform Health Management 的意外执行错误,并将正在运行的操作立即转换至定义的恢复状态 SWS StateManagement 第42页。
平台体系中的角色与功能系统边界
功能集群 State Management (SM) 构成了 AUTOSAR Adaptive Platform 中编排全系统运行模式、功能组和进程生命周期的中央实体 EXP SWArchitecture 第51页。作为自主平台守护程序运行,State Management 将平台内部的状态执行与通常封装在独立控制应用程序(SMControlApplication)中的特定于车辆和厂商的控制逻辑解耦 EXP PlatformDesign 第40页。在 State Management 制定并验证逻辑状态决策的同时,它通过 StateClient 将进程的物理启动、终止和切换委派给 Execution Management (EM) SWS StateManagement 第40页。
在架构上,该模块依托双重集成理念:由于面向 State Management 的接口保持公开,集成商既可以使用平台协议栈标准化的、基于 manifest 的 StateMachine 方法,也可以实现完全由制造商专有的状态逻辑 SWS StateManagement 第42页。在标准化方法中,State Management 对来自控制应用程序的外部触发、Platform Health Management (PHM) 的错误报告以及 Network Management (NM) 的网络状态变更作出确定性响应 SWS StateManagement 第45页。此外,State Management 还构成了通过 Update and Configuration Management (UCM) 进行软件更新的关键控制实体 EXP SWArchitecture 第56页。
上下文图:Functional Cluster State Management 在 AUTOSAR Adaptive 系统环境中的嵌入。来源:EXP PlatformDesign 第40页,SWS StateManagement 第28页
状态转换与基于 StateMachineService 接口的控制
为了启动状态更改,State Management 为每个已配置的 StateMachine 实例提供基于服务的 service StateMachineService SWS StateManagement 第44页。应用程序通过服务方法 RequestTransition 请求转换 [SWS_SM_91107]。State Management 根据静态存储在 manifest 中的 TransitionRequestTable,对照状态机的当前状态检查该请求 SWS StateManagement 第44页。如果转换已定义,则停止当前操作列表(ActionList)的执行,并启动向目标状态的切换 SWS StateManagement 第45页。
一旦状态转换启动,State Management 便将 StateMachineNotification 接口的服务字段 CurrentState 的值设置为 "inTransition" [SWS_SM_91109],SWS StateManagement 第67页。该过渡状态通过 ara::com 向依赖的 Adaptive Application 发出信号,表明系统正在进行重配置 EXP SWArchitecture 第52页。在操作列表内部,可以通过 SYNC 元素对功能组进行同步或并行化,以精确映射依赖关系 SWS StateManagement 第56页。仅当所有 ActionListItems 均已完全处理并收集完结果之后,CurrentState 才会采用新状态的最终名称 SWS StateManagement 第67页。
时序图:通过 StateMachineService 进行常规状态转换以及通过 StateMachineNotification 进行通知的流程。来源:[SWS_SM_91107],[SWS_SM_91109],SWS StateManagement 第51页,EXP SWArchitecture 第219页
状态图:基于 TransitionRequestTable 的 StateMachine 典型生命周期和转换逻辑。来源:EXP InterfacesGuidelines 第22页,SWS StateManagement 第44页
与 UCM 协同编排软件更新
在软件更新框架下,State Management 承担 Update and Configuration Management (UCM) 与机器执行状态之间的接口功能 EXP SWArchitecture 第142页。为此,State Management 提供了接口 UpdateRequest,该接口每台机器最多只能实例化一次,且专有绑定到运行控制器状态机的进程 SWS StateManagement 第79页。更新通过 UCM 调用方法 RequestUpdateSession 来启动 [SWS_SM_91102]。State Management 并不自主做出准许决定,而是咨询 UpdateAllowedService 的服务字段 UpdateAllowed,该字段由应用程序控制逻辑设置 [SWS_SM_91108],SWS StateManagement 第81页。
如果会话获得批准,控制器会将受影响的状态机标记为 ImpactedByUpdate SWS StateManagement 第81页。在实际导入之前,UCM 会携带受影响功能组的列表调用 PrepareUpdate,随后这些功能组被转入非活动状态 [SWS_SM_91103],PlatformDesign 第58页。如果更新需要重启,UCM 会通过 fire-and-forget 方法 ResetMachine 请求有序重置,在此之前必须先保存所有数据 [SWS_SM_91100]。在重置期间,State Management 通过字段 ResetMachineNotifier 将状态更改通知 UCM [SWS_SM_91106],SWS StateManagement 第92页。重启或更新之后,通过 VerifyUpdate 进行验证 [SWS_SM_91104],SWS StateManagement 第87页。如果检查失败,PrepareRollback 会准备回滚 [SWS_SM_91105],SWS StateManagement 第88页。整个周期的结束通过 StopUpdateSession 进行确认 [SWS_SM_91101],SWS StateManagement 第79页。
时序图:UCM、State Management 与控制逻辑之间软件更新会话的交互流程。来源:[SWS_SM_91100],[SWS_SM_91102],[SWS_SM_91103],[SWS_SM_91104],SWS StateManagement 第78页
Hub-Satellite 体系中的电源管理与 Suspend-to-RAM
针对诸如 Suspend-to-RAM (S2R) 等扩展电源管理功能,State Management 实现了 Hub-Satellite 架构模式 EXP SWArchitecture 第54页。平台守护进程中的中央控制实体使用类 S2RHub [SWS_SM_81103],而参与的 Adaptive Application 则在其自身的进程空间中集成 S2RSatellite 的实例 [SWS_SM_81003],[SWS_SM_81014],SWS StateManagement 第35页。Satellite 通过 Offer [SWS_SM_81012] 激活其接收模式切换的就绪状态,或通过 StopOffer [SWS_SM_81013] 将其停用。它们实现纯虚方法 EnterSuspendMode [SWS_SM_81010] 与 LeaveSuspendMode [SWS_SM_81011],作为用于准备和收尾挂起状态的回调机制。
一旦挂起过程启动,S2RHub 会通过 RequestToEnterSuspendMode 并带有可配置的超时异步寻址所有已注册的 Satellite [SWS_SM_81110]。在所有 Satellite 均已成功完成其挂起准备之后,Hub 通过 EnterSuspendToRamOs 促使操作系统进入保持 RAM 状态 [SWS_SM_81112],SWS StateManagement 第101页。在接近硬件的 OS 包装层上,State Management 借助 apext::sm::PowerStateInterface:它允许通过 SetPowerState [SWS_SM_71001] 根据枚举 PowerState [SWS_SM_71002] 设置接近硬件的运行状态,并允许通过 RegisterWakeUpHandler [SWS_SM_71003] 和 UnregisterWakeUpHandler [SWS_SM_71005] 使用函数类型 WakeUpHandler [SWS_SM_71004],SWS StateManagement 第105页 注册和注销自主唤醒处理程序。唤醒后,Hub 通过 RequestToLeaveSuspendMode 请求所有 Satellite 进行协调的重新启动 [SWS_SM_81111]。
时序图:使系统进入 Suspend-to-RAM 及后续重新唤醒的两阶段流程。来源:[SWS_SM_71001],[SWS_SM_81110],[SWS_SM_81112],SWS StateManagement 第101页
发生错误时的行为
针对自身的运行错误,该模块定义了 SmErrorDomain [SWS_SM_81247],它通过 GetSmDomain 获取 [SWS_SM_81251],并带有标识符 "Sm" [SWS_SM_81248]。它提供错误描述 [SWS_SM_81249],并在发生异常时通过 ThrowAsException 将代码转换为 SmException [SWS_SM_81243],[SWS_SM_81250]。通过枚举 SmErrc 对特定的故障原因进行类型化,其中包括用于与平台守护进程连接断开的 kOfferFailed,以及用于 Satellite 通信失败的 kCommunicationFailed [SWS_SM_81240],可通过 MakeErrorCode [SWS_SM_81244] 生成。
在逻辑状态机领域,State Management 通过 ErrorRecoveryTable 强制实施无遗漏的错误处理 SWS StateManagement 第69页。每个表都必须强制包含恰好一个值为 ANY 的条目,作为所有未显式映射的执行错误的确定性兜底路径 SWS StateManagement 第42页,SWS StateManagement 第69页。如果 Platform Health Management 或 Execution Management 报告了错误,且受影响的状态机未被标记为 ImpactedByUpdate,则它会设置正在进行错误恢复的内部标志,立即中止当前操作列表,并立刻切换到参数化的恢复状态 SWS StateManagement 第42页。当发生 Execution Management 的严重错误(如 kIntegrityOrAuthenticityCheckFailed)时,State Management 假定平台的可靠性已受损且后续请求将会失败,因此纠正措施超出了该 Cluster 的范畴 SWS StateManagement 第40页。
活动图:传入执行错误时的决策和处理流程以及对 ErrorRecoveryTable 的求值。来源:SWS StateManagement 第42页,SWS StateManagement 第69页
进一步详细证据
State Management 的架构与交互路径由以下规范性需求和设计规范所证实:
- 系统控制与转换:[SWS_SM_91107] 定义了面向服务的转换请求,而 [SWS_SM_91109] 规范了用于解耦应用程序的通知字段。基于表格的控制由 SWS StateManagement 第44页 提供支持。
- 软件更新集成:用于会话管理 [SWS_SM_91102]、准备 [SWS_SM_91103]、验证 [SWS_SM_91104]、回滚准备 [SWS_SM_91105] 和终止 [SWS_SM_91101] 的方法,以及机器重置 [SWS_SM_91100] 和释放字段 [SWS_SM_91106]、[SWS_SM_91108],确定了符合 EXP SWArchitecture 第56页 的与 UCM 的协同运作。
- Suspend-to-RAM 与电源管理:围绕
S2RHub[SWS_SM_81103]、[SWS_SM_81110]、S2RSatellite[SWS_SM_81003]、[SWS_SM_81010] 的原生类与接口层次结构以及操作系统接口 [SWS_SM_71001]、[SWS_SM_71003] 构成了节能的规范基石 EXP SWArchitecture 第54页。 - 错误空间:带有异常和 ErrorCode 生成器的标准化错误域的构建依托于 [SWS_SM_81240]、[SWS_SM_81244] 和 [SWS_SM_81247]。
本模块指南由 AI 策展助手基于针对 Release R25-11 的 AUTOSAR Adaptive 规范生成,并梳理了关于 State Management 的规范性要求。
function: 31 service method: 7 class: 5 type alias: 3 service field: 3 enumeration: 2
服务接口
StateMachineNotificationStateMachineServiceUpdateAllowedServiceUpdateRequest主题图
此版本没有元素数据
apext::sm
class for power state coordination with OS
Power State Enumeration.
enum class PowerState : std::uint32_t {...};WakeUpHandler function.
using WakeUpHandler = std::function<void(void)>;ara::sm
Defines the error domain for State Management.
继承自 ara::core::ErrorDomain
Exception type thrown by State Management.
继承自 ara::core::Exception
Returns the global SmErrorDomain object.
constexpr const ara::core::ErrorDomain & GetSmDomain () noexcept;Creates an error code.
constexpr ara::core::ErrorCode MakeErrorCode (SmErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;Defines an enumeration class for the State Management error codes.
enum class SmErrc : ara::core::ErrorDomain::CodeType {...};ara::sm::s2r
S2RHub class.
S2RSatellite abstract class.
服务接口
Als ara::com-Dienst modellierte Schnittstelle; Methoden/Felder werden über generierte Proxies/Skeletons aufgerufen (Parameterrichtung IN/OUT).
Als ara::com-Dienst modellierte Schnittstelle; Methoden/Felder werden über generierte Proxies/Skeletons aufgerufen (Parameterrichtung IN/OUT).
Als ara::com-Dienst modellierte Schnittstelle; Methoden/Felder werden über generierte Proxies/Skeletons aufgerufen (Parameterrichtung IN/OUT).
Als ara::com-Dienst modellierte Schnittstelle; Methoden/Felder werden über generierte Proxies/Skeletons aufgerufen (Parameterrichtung IN/OUT).
命名空间
- apext::sm 1 Klassen, 0 freie Funktionen
- ara::sm 2 Klassen, 2 freie Funktionen
- ara::sm::s2r 2 Klassen, 0 freie Funktionen
服务接口(通过 ara::com 建模)
- StateMachineNotification 1 Mitglieder
- StateMachineService 1 Mitglieder
- UpdateAllowedService 1 Mitglieder
- UpdateRequest 7 Mitglieder
模块的 UML 类图
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · 德文原文