DEENESPTFRRUARHIKOZHNL

namespace ara::sm::s2r

User GuideKI-GENERIERT

Koordiniert den Eintritt und das Verlassen des Suspend-to-RAM-Zustands für adaptive Anwendungen.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a8390997dcdf Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Koordiniert den Eintritt und das Verlassen des Suspend-to-RAM-Zustands für adaptive Anwendungen.

Der Namespace ara::sm::s2r koordiniert den Suspend-to-RAM-Mechanismus zur Optimierung von Abschalt- und Startzeiten in der AUTOSAR Adaptive Platform (SWS StateManagement §7.5 „Interaction with Suspend-to-RAM Functionality“). Über die zentrale Komponente S2RHub und registrierte S2RSatellite-Instanzen werden S2R-fähige Prozesse vor dem Eintritt in den Betriebssystem-Ruhezustand benachrichtigt und beim Aufwachen wieder in den Regelbetrieb überführt. Als wesentliche Randbedingung schließt die Nutzung über den internen StateMachine-Ansatz den Zugriff über die C++-API strikt aus, während IAM-Prüfungen sämtliche beteiligten Prozesskontexte absichern ([SWS_SM_00684]).

Kontext

Der Namespace ara::sm::s2r stellt Funktionalitäten zur Koordination von Suspend-to-RAM (S2R) innerhalb des Moduls State Management bereit. Ziel dieses Mechanismus ist die Optimierung von Abschalt- und Hochlaufzeiten der Maschine, indem anstelle eines vollständigen Herunterfahrens und Kaltstarts ein RAM-basierter Ruhezustand des Betriebssystems genutzt wird (SWS StateManagement §7.5 „Interaction with Suspend-to-RAM Functionality“). Vor dem Wechsel in den Suspend-Zustand des Betriebssystems müssen Funktionsträger ohne S2R-Unterstützung deaktiviert und Prozesse, deren Executable als suspendToRamAware gekennzeichnet ist, rechtzeitig benachrichtigt werden (SWS StateManagement §7.5 „Interaction with Suspend-to-RAM Functionality“).

Die zentrale Drehscheibe bildet die Klasse S2RHub, welche die Kommunikation mit Instanzen der abstrakten Klasse S2RSatellite steuert (SWS StateManagement §7.5.1 „S2R Hub“). Die Orchestrierung des S2RHub kann entweder intern über den StateMachine-Ansatz von State Management oder extern über eine C++-API (beispielsweise in einer SMControlApplication) erfolgen; beide Ansätze schließen sich wechselseitig strikt aus ([SWS_SM_00684], SWS StateManagement S. 96). Zugriffe auf den Hub und die Registrierung von Satelliten sind durch Identity and Access Management (IAM) abgesichert ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).

diag_s2r_kontext sm_control SMControlApplication / State Management hub ara::sm::s2r::S2RHub sm_control->hub orchestriert Suspend und Resume satellite ara::sm::s2r::S2RSatellite hub->satellite koordiniert Suspend-Modus process S2R-Aware Process satellite->process ruft Callbacks auf iam IAM (Identity & Access Management) iam->hub validiert Prozesskontext iam->satellite authentifiziert Satelliten

Kontextdiagramm: Zusammenspiel von State Management, S2RHub, S2RSatellite und IAM. Quellen: SWS StateManagement §7.5.1 „S2R Hub“, [SWS_SM_00684], [SWS_SM_00715].

Lebenszyklus

Die Instanziierung von ara::sm::s2r::S2RHub erfolgt abhängig vom Architekturansatz: Im StateMachine-Modus wird die Instanz automatisch von State Management erzeugt, sobald die Aktionslistenelemente EnterSuspendToRam, EnterSuspendToRamOS oder LeaveSuspendToRam beendet werden ([SWS_SM_00690]). Beim Aufruf des Konstruktors ara::sm::s2r::S2RHub::S2RHub wird über IAM geprüft, ob der aktuelle Prozesskontext mit der Konfiguration SuspendToRamHubMapping.process übereinstimmt ([SWS_SM_00706]). Nur berechtigte Prozesse dürfen die Instanziierung durchführen ([SWS_SM_00714]).

Satelliten werden über die Fabrikmethode ara::sm::s2r::S2RSatellite::Create initialisiert ([SWS_SM_00716]). Da S2RSatellite eine abstrakte Klasse ist, dürfte eine anwendungsspezifische Ableitung implementiert werden, um die konkreten Reaktionen bereitzustellen (Interpretation). Frage Q-e4747345883235e0 (offen) Die Registrierung am Hub erfolgt aktiv durch Aufruf von ara::sm::s2r::S2RSatellite::Offer ([SWS_SM_00710]). Der Hub validiert den Prozesskontext des Satelliten anhand von SuspendToRamSatelliteMapping.process ([SWS_SM_00715]). Ein Satellit verbleibt im Zustand der aktiven Registrierung, bis er sich über ara::sm::s2r::S2RSatellite::StopOffer wieder abmeldet ([SWS_SM_00710], [SWS_SM_00713]).

Hinsichtlich des Lebenszyklus von Zustandsmaschinen gilt die Randbedingung, dass Zustände, die für den Suspend-Zustand verantwortlich sind, nicht mit dem Aktionslistenelement LeaveSuspendToRam konfiguriert werden dürfen ([SWS_SM_CONSTR_00035]). Dieses Element ist ausschließlich für die Rückkehrphase beim Aufwachen reserviert (SWS StateManagement S. 98).

Nutzungspfad

Die typische Nutzung des Namespace gliedert sich in die Registrierung, die Vorbereitung des Ruhezustands, den Betriebssystem-Suspend sowie das anschließende Wiederaufwachen:

  1. Registrierung: Die S2R-fähige Anwendung erzeugt ihren Satelliten und ruft ara::sm::s2r::S2RSatellite::Offer auf, um sich am Hub anzumelden ([SWS_SM_00710]). Vermutlich erfolgt die Benachrichtigung zwischen Hub und Satelliten über plattforminterne Interprozesskommunikation (Interpretation). Frage (offen)
  2. Suspend anfordern: Die Steuerungsebene ruft ara::sm::s2r::S2RHub::RequestToEnterSuspendMode auf ([SWS_SM_00701]). Im StateMachine-Ansatz wird dies durch das Element EnterSuspendToRam ausgelöst, wobei dessen Konfigurationswert maxActionItemDuration als Timeout-Parameter übergeben wird ([SWS_SM_00689]).
  3. Satelliten benachrichtigen: Der Hub adressiert alle registrierten Satelliten und veranlasst die Ausführung des Callbacks ara::sm::s2r::S2RSatellite::EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00711]). RequestToEnterSuspendMode kehrt zurück, sobald alle Satelliten reagiert haben, abgemeldet wurden oder ein Timeout eingetreten ist ([SWS_SM_00702]).
  4. Betriebssystem anhalten: Durch den Aufruf von ara::sm::s2r::S2RHub::EnterSuspendToRamOs (bzw. über das Aktionslistenelement EnterSuspendToRamOs) wird der eigentliche Ruhezustand des Betriebssystems eingeleitet ([SWS_SM_00692]).
  5. Aufwachen koordinieren: Nach dem Wiederanlauf wird ara::sm::s2r::S2RHub::RequestToLeaveSuspendMode aufgerufen ([SWS_SM_00703], [SWS_SM_00691]). Der Hub instruiert die Satelliten, den Callback ara::sm::s2r::S2RSatellite::LeaveSuspendMode auszuführen ([SWS_SM_00703], [SWS_SM_00711]).
  6. Deregistrierung: Möchte ein Prozess nicht weiter teilnehmen, meldet er sich über ara::sm::s2r::S2RSatellite::StopOffer ab ([SWS_SM_00710], [SWS_SM_00713]).
Ablauf der Suspend-to-RAM-KoordinierungAufrufer (SMControlApplication / SM)ara::sm::s2r::S2RHubara::sm::s2r::S2RSatelliteOffer()Use Case: Übergang in den Suspend-ZustandRequestToEnterSuspendMode(timeout)EnterSuspendMode()Rückmeldung BereitschaftResultEnterSuspendToRamOs()Use Case: Verlassen des Suspend-ZustandsRequestToLeaveSuspendMode()LeaveSuspendMode()Bestätigung oder kRejectedGesamtergebnisUse Case: DeregistrierungStopOffer()

Sequenzdiagramm: Aufrufreihenfolge zur Vorbereitung und Beendigung von Suspend-to-RAM. Quellen: [SWS_SM_00701], [SWS_SM_00702], [SWS_SM_00703], [SWS_SM_00707], [SWS_SM_00710], [SWS_SM_00711].

Fehlerszenarien

Im Zusammenspiel der Klassen treten spezifische Fehlerbedingungen auf:

  • IAM-Verletzung bei Hub-Erzeugung: Stimmt der Prozesskontext beim Konstruktoraufruf nicht mit SuspendToRamHubMapping.process überein, wird die Violation InsufficientPermissionsViolation ausgelöst und das Sicherheitsereignis SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED</a> gemeldet ([SWS_SM_00706]).
  • Abweisung nicht authentifizierter Satelliten: Weicht der Kontext von S2RSatellite vom in SuspendToRamSatelliteMapping hinterlegten Prozess ab, weist der Hub die Registrierung ab ([SWS_SM_00715]).
  • Authentifizierungsanforderung am Satelliten: Falls die Konfiguration Force IAM switch gesetzt ist, schlägt ara::sm::s2r::S2RSatellite::Create mit dem Fehlercode kAuthenticationRequired fehl ([SWS_SM_00716]).
  • Kommunikationszeitüberschreitung: Antwortet ein adressierter Satellit während der Suspend- oder Aufwachphase nicht innerhalb der Frist timeout, liefert die Operation den Fehlercode kCommunicationTimeout ([SWS_SM_00707]).
  • Probleme beim Verlassen des Suspend-Modus: Antwortet mindestens ein Satellit auf die Aufforderung zum Verlassen des Suspend-Modus negativ mit kRejected, quittiert RequestToLeaveSuspendMode das Gesamtergebnis mit kAtLeastOneHadIssuesToLeave ([SWS_SM_00707]).
  • Konkurrierende API-Nutzung: Die gleichzeitige Nutzung der C++-API von S2RHub neben dem internen StateMachine-Ansatz ist verboten und führt zu Inkonsistenzen ([SWS_SM_00684]).

Dieser Leitfaden basiert auf der Spezifikation AUTOSAR_AP_SWS_StateManagement (Release R25-11).

Klassen

S2RHub class

S2RHub class.

S2RSatellite abstract class.

Klassendiagramm

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 ara::sm::s2r nara__sm__s2r__S2RHub S2RHub nara__sm__s2r__S2RSatellite S2RSatellite