namespace ara::sm::s2r
User GuideKI-GENERIERT
Koordiniert den Eintritt und das Verlassen des Suspend-to-RAM-Zustands für adaptive Anwendungen.
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]).
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:
- Registrierung: Die S2R-fähige Anwendung erzeugt ihren Satelliten und ruft
ara::sm::s2r::S2RSatellite::Offerauf, um sich am Hub anzumelden ([SWS_SM_00710]). Vermutlich erfolgt die Benachrichtigung zwischen Hub und Satelliten über plattforminterne Interprozesskommunikation (Interpretation). Frage (offen) - Suspend anfordern: Die Steuerungsebene ruft
ara::sm::s2r::S2RHub::RequestToEnterSuspendModeauf ([SWS_SM_00701]). ImStateMachine-Ansatz wird dies durch das ElementEnterSuspendToRamausgelöst, wobei dessen KonfigurationswertmaxActionItemDurationals Timeout-Parameter übergeben wird ([SWS_SM_00689]). - 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]).RequestToEnterSuspendModekehrt zurück, sobald alle Satelliten reagiert haben, abgemeldet wurden oder ein Timeout eingetreten ist ([SWS_SM_00702]). - Betriebssystem anhalten: Durch den Aufruf von
ara::sm::s2r::S2RHub::EnterSuspendToRamOs(bzw. über das AktionslistenelementEnterSuspendToRamOs) wird der eigentliche Ruhezustand des Betriebssystems eingeleitet ([SWS_SM_00692]). - Aufwachen koordinieren: Nach dem Wiederanlauf wird
ara::sm::s2r::S2RHub::RequestToLeaveSuspendModeaufgerufen ([SWS_SM_00703], [SWS_SM_00691]). Der Hub instruiert die Satelliten, den Callbackara::sm::s2r::S2RSatellite::LeaveSuspendModeauszuführen ([SWS_SM_00703], [SWS_SM_00711]). - Deregistrierung: Möchte ein Prozess nicht weiter teilnehmen, meldet er sich über
ara::sm::s2r::S2RSatellite::StopOfferab ([SWS_SM_00710], [SWS_SM_00713]).
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 ViolationInsufficientPermissionsViolationausgelöst und das SicherheitsereignisSEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED</a>gemeldet ([SWS_SM_00706]). - Abweisung nicht authentifizierter Satelliten: Weicht der Kontext von
S2RSatellitevom inSuspendToRamSatelliteMappinghinterlegten 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::Createmit dem FehlercodekAuthenticationRequiredfehl ([SWS_SM_00716]). - Kommunikationszeitüberschreitung: Antwortet ein adressierter Satellit während der Suspend- oder Aufwachphase nicht innerhalb der Frist
timeout, liefert die Operation den FehlercodekCommunicationTimeout([SWS_SM_00707]). - Probleme beim Verlassen des Suspend-Modus: Antwortet mindestens ein Satellit auf die Aufforderung zum Verlassen des Suspend-Modus negativ mit
kRejected, quittiertRequestToLeaveSuspendModedas Gesamtergebnis mitkAtLeastOneHadIssuesToLeave([SWS_SM_00707]). - Konkurrierende API-Nutzung: Die gleichzeitige Nutzung der C++-API von
S2RHubneben dem internenStateMachine-Ansatz ist verboten und führt zu Inkonsistenzen ([SWS_SM_00684]).
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR_AP_SWS_StateManagement (Release R25-11).
Für dieses Release liegen keine Elementdaten vor
Klassen
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.
gemini-3.8-flash-medium· 2026-10-13