DEENESPTFRRUARHIKOZHNL

命名空间 apext::sm

用户指南人工智能生成

在 State Management 中实现操作系统电源状态的近硬件协调与自主唤醒。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 8273631beee4 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

在 State Management 中实现操作系统电源状态的近硬件协调与自主唤醒。

命名空间 apext::sm 提供了规范化的平台扩展接口,以在 AUTOSAR Adaptive State Management 与宿主操作系统之间协调电源状态 SWS StateManagement §C.1 “Header: apext/sm/power_state_interface.h”。通过枚举 apext::sm::PowerState 对 Linux 特定的节能模式进行类型化映射 [SWS_SM_71002]。此外,回调 apext::sm::WakeUpHandler 允许操作系统触发 State Management 中自主退出休眠状态,而无需上游控制应用程序的参与 [SWS_SM_71004],且该调用未设计为线程安全。

上下文

命名空间 apext::sm 为 AUTOSAR Adaptive Platform 内的 Functional Cluster State Management 提供了规范性平台扩展接口(Platform Extension Interfaces)SWS StateManagement §C.1 “Header: apext/sm/power_state_interface.h”。虽然 State Management 的标准接口主要用于跨模型边界协调应用状态、功能组和执行模式,但 apext::sm 侧重于近硬件耦合。扩展接口设计用于由 OEM 或集成商使用或提供,以扩展平台功能,并实现与底层操作系统 (OS) 的协调交互 SWS StateManagement §C.1 “Header: apext/sm/power_state_interface.h”。

该命名空间的核心组件是类 PowerStateInterface,用于与操作系统协调电源状态。作为辅助,头文件 apext/sm/power_state_interface.h 定义了类型化枚举和回调别名,它们充当操作系统驱动程序、外部唤醒源与内部状态管理之间的纽带。除操作系统外,这些接口在概念上还与 State Management 的 Controller 以及诸如 SMControlApplication 或 Update and Configuration Management (UCM) 等上层实例相关联,这些实例同样可以对状态转换产生影响 SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”。

OS Betriebssystem (Kernel) ApextSM apext::sm (PowerStateInterface, WakeUpHandler) OS->ApextSM Signalisiert Wake-up Setzt PowerState SMController State Management (Controller) ApextSM->SMController Autonomer Aufruf (WakeUpHandler) SMControlApp SMControlApplication / UCM SMControlApp->SMController Explizite Requests (RequestUpdateSession)

上下文图:操作系统、apext::sm 接口与 State Management 之间的交互。来源:SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”、SWS StateManagement §C.1 “Header: apext/sm/power_state_interface.h”。

生命周期

apext::sm 框架内的生命周期以离散的电源状态为特征,这些状态在枚举 apext::sm::PowerState 中基于 std::uint32_t 建模 [SWS_SM_71002]。这些状态直接源自 Linux 操作系统的内核视角:

  • kPmSuspendToIdle (= 1):派生自状态 PM_SUSPEND_TO_IDLE [SWS_SM_71002]。
  • kPmSuspendToRam (= 2):派生自状态 PM_SUSPEND_TO_RAM [SWS_SM_71002]。
  • kPmHibernation (= 3):派生自状态 PM_HIBERNATION(挂起到磁盘,Suspend-to-Disk)[SWS_SM_71002]。
  • kPmOff (= 4):派生自状态 PM_OFF(完全关机)[SWS_SM_71002]。

解释:类 PowerStateInterface 可能用作主要的针脚锚点,集成商通过它查询这些目标状态或将其传输到宿主操作系统。 问题 Q-800acae699828764 (未决)在停留在诸如 kPmSuspendToRam 等节能状态期间,正常处理处于静止状态,直到唤醒事件触发返回活动运行模式的转换。

使用路径

该命名空间的一个核心用例是整个系统从休眠状态自主唤醒(Autonomous wake-up from suspend state)SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”。虽然 SMControlApplication 可以显式请求退出 Suspend-to-RAM 模式,但 State Management 此外还能够对唤醒信号做出自主反应。

若操作系统通过接口 apext::sm::WakeUpHandler 指示唤醒事件(如果该接口已实现),State Management 将自主启动唤醒序列 SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”。apext::sm::WakeUpHandler 是 std::function<void(void)> 类型的函数别名 [SWS_SM_71004]。通过调用此处理程序,State Management 将 Controller 状态机从其挂起状态转换为专门为此建模的状态 LeaveSuspend [SWS_SM_CONSTR_00036]。在此状态下,控制器必须执行操作元素 LeaveSuspendToRam,从而在无需控制应用程序事先干预的情况下恢复常规平台活动 [SWS_SM_CONSTR_00037]、SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”。

从 Suspend-to-RAM 自主唤醒Betriebssystemapext::sm::WakeUpHandlerState Management (Controller)Use Case: 触发唤醒信号Wake-up signalisierenAufruf operator()Use Case: 自主状态转换状态切换至 LeaveSuspend执行 ActionListItem LeaveSuspendToRamNormalbetrieb aktiv

时序图:通过 WakeUpHandler 自主唤醒的流程。来源:SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”、[SWS_SM_71004]、[SWS_SM_CONSTR_00036]、[SWS_SM_CONSTR_00037]。

错误场景

在使用和集成 apext::sm 时,必须注意系统特定的边界条件和并发风险:

  • 缺乏线程安全性:根据规范,调用类型 apext::sm::WakeUpHandler 明确为非线程安全(not thread-safe)[SWS_SM_71004]。如果操作系统或中断上下文触发多次或并行信号,集成商必须提供适当的同步机制,以防止 State Management 中出现数据争用和不一致的状态转换。
  • 未实现的处理程序:如果 WakeUpHandler 在目标系统中未实现,则无法通过操作系统进行自主唤醒;在这种情况下,系统将保持在休眠状态,直到收到外部请求(例如由 UCM 通过 RequestUpdateSession 发起)或显式的应用程序请求 SWS StateManagement §7.7.15.1 “Autonomous wake-up from suspend state”。
  • Manifest 中的建模错误:如果部署清单中缺少针对 Controller 的状态 LeaveSuspend [SWS_SM_CONSTR_00036],或者该状态未包含强制性元素 LeaveSuspendToRam [SWS_SM_CONSTR_00037],则自动转换将失败,且平台在休眠状态后无法按规范恢复运行。

本指南基于 AUTOSAR Adaptive Platform R25-11 规范。所有内容均已根据 State Management 的规范性 Platform Extension Interfaces 进行了验证。

主题图

类图

Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.

G cluster_ns apext::sm napext__sm__PowerStateInterface PowerStateInterface

详细视图

请在大纲中选择一个条目。

类

class for power state coordination with OS

类型与常量

PowerState 枚举

Power State Enumeration.

enum class PowerState : std::uint32_t {...};
WakeUpHandler 类型别名

WakeUpHandler function.

using WakeUpHandler = std::function<void(void)>;

枚举

枚举 PowerState [SWS_SM_71002] Upstream: RS_SM_00402

enum class PowerState :         std::uint32_t {...};

Power State Enumeration.

Header-Datei#include "apext/sm/power_state_interface.h"
Forwarding-Header#include "apext/sm/sm_fwd.h"
Scopenamespace apext::sm
SymbolPowerState
Basistypstd::uint32_t

Werte

EnumeratorBeschreibung
kPmSuspendToIdle=1 Derived from Linux Power State PM_SUSPEND_TO_IDLE (Kernel view)
kPmSuspendToRam=2 Derived from Linux Power State PM_SUSPEND_TO_RAM (Kernel view)
kPmHibernation=3 Derived from Linux Power State PM_HIBERNATION (Kernel view)
kPmOff=4 Derived from Linux Power State PM_OFF (Kernel view)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_SM_71002
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_SM_71002@rel:R25-11#47ea242b
Content hash
47ea242b
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_StateManagement.pdf#nameddest=SWS_SM_71002
Status: valid/unmigrated Version: rel:R25-11#4f68e3fd Versionshistorie & Revisions (1 transition)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_SM_71002@rel:R25-11#4f68e3fd
Point-in-Time History:
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

类型别名

类型别名 WakeUpHandler [SWS_SM_71004] Upstream: RS_SM_00402

using WakeUpHandler = std::function<void(void)>;

WakeUpHandler function.

Header-Datei#include "apext/sm/power_state_interface.h"
Scopenamespace apext::sm
SymbolWakeUpHandler
Thread-Sicherheitnot thread-safe

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_SM_71004
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_SM_71004@rel:R25-11#0e953407
Content hash
0e953407
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_StateManagement.pdf#nameddest=SWS_SM_71004
Status: valid/unmigrated Version: rel:R25-11#29968d23 Versionshistorie & Revisions (1 transition)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_SM_71004@rel:R25-11#29968d23
Point-in-Time History:
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill