DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_SWS_Persistency FIG-9c4c62a62e074c38 861 × 436 px 1 Release(s)

Figure 5.1: Interfaces Provided by Persistency to Other Functional Clusters

SHA-256 Inhalts-Fingerabdruck: 9c4c62a62e074c38d26caaecacd79c748cdb4c3d6c59d9722cf16e20cf33ffce
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07

1. Diagrammtyp & Architektur-Kontext

  • Diagrammtyp: UML-Komponenten- und Schnittstellendiagramm (AUTOSAR Adaptive Platform Metamodell-Projektion).
  • Technischer Zweck: Spezifikation der durch das Functional Cluster Persistency (ara::per) bereitgestellten Key-Value-Storage-Schnittstelle gegenüber Plattform-Daemons im Rahmen der Software-Architektur nach AUTOSAR AP R23-11.
  • Architektur-Einordnung: Persistency stellt grundlegende NV-Datenspeicherung für zentrale Plattformdienste bereit, um zustandsbehaftete Betriebsdaten, Diagnosezustände, Zeitstempel/Offset-Parameter und Update-Metadaten prozessübergreifend und manipulationssicher über System-Resets hinweg zu sichern.

2. Komponenten, Entitäten & Schnittstellen

Akteure & Komponenten (Functional Clusters)
  • Bereitstellendes Cluster:
    • Persistency («aapFunctionalCluster»): Realisiert das Persistenz-Subsystem (Bibliotheks-basiert in den Adressräumen der Clients oder als vermittelnde Plattforminstanz).
  • Konsumierende Cluster (alle als daemon-based klassifiziert, eigenständige OS-Prozesse):
    • Diagnostic Management («aapFunctionalCluster»): Speichert DTCs, Freeze Frames, Fault Records und Snapshot-Daten.
    • Time Synchronization («aapFunctionalCluster»): Speichert Drift-Parameter, historische Zeitstempel und Synchronisations-Offsets.
    • State Management («aapFunctionalCluster»): Speichert zuletzt aktive Function-Group-Zustände, Safe-State-Flags und Wiederanlauf-Konfigurationen.
    • Update and Configuration Management («aapFunctionalCluster»): Hält Rollback-Zustände, Kampagnen-Metadaten, Software-Cluster-Versionen und Paketstatus.
Schnittstelle & Stereotypen
  • Persistency::KeyValueStorage («aapAPI,aapPortInterface»):
    • Formales Port-Interface sowie typisierte C++-Klassenabstraktion (ara::per::KeyValueStorage).
  • Operationen:
    • DiscardPendingChanges(): Verwirft alle Modifikationen im Transaktions-/RAM-Puffer seit dem letzten Synchronisationspunkt.
    • GetAllKeys(): Abfrage aller im konfigurierten Namespace/Container registrierten Schlüssel.
    • GetValue(): Typsicherer Lesezugriff auf einen spezifischen Schlüssel.
    • KeyExists(): Vorabprüfung auf Existenz eines Schlüssels ohne Payload-Deserialisierung.
    • RecoverKey(): Manuelle Wiederherstellung eines korrupten Eintrags aus Redundanz-/Backup-Speichern.
    • RemoveAllKeys(): Löschen des gesamten Inhalts der Datenbank-Instanz.
    • RemoveKey(): Atomares Entfernen eines dedizierten Schlüssels.
    • ResetKey(): Rücksetzen eines Werts auf die im Manifest/Init-Image definierten Werks-/Defaultwerte.
    • SetValue(): Typisiertes Schreiben eines Werts in den Cache/Staging-Bereich.
    • SyncToStorage(): Erzwingt den synchronen/persistierten Flush des In-Memory-Status auf das nichtflüchtige Speichermedium (z. B. eMMC, UFS, NOR-Flash via OS-Dateisystem).
Beziehungen
  • Interface-Realisierung: Persistency realisiert Persistency::KeyValueStorage (gestrichelte Linie mit geschlossener Dreiecksspitze).
  • Nutzungsabhängigkeit: Die Daemons greifen über «aapRequiredPort» via «use»-Abhängigkeit auf das Interface zu.

3. Dynamisches Verhalten & Sequenzablauf

  • Zugriffsparadigma (Staging & Commit):
    • Modifizierende Operationen (SetValue(), RemoveKey(), RemoveAllKeys()) arbeiten primär auf einem Prozess-lokalen Cache oder Staging-Puffer.
    • Änderungen sind bis zum Aufruf von SyncToStorage() nicht zwingend spannungsausfallsicher (kein automationsfreier Flush).
    • Bei Fehlern vor dem Persistieren dient DiscardPendingChanges() als Rollback-Mechanismus.
  • Synchronisation & Blockierverhalten:
    • SyncToStorage() ist eine blockierende, I/O-intensive Operation, die synchrone Dateisystem-Barrieren (fsync() / fdatasync()) auslöst.
  • Integritäts- und Redundanzpfad:
    • Schlägt GetValue() aufgrund von Prüfsummen- oder CRC-Fehlern fehl (Rückgabe von PerErrc::kIntegrityCorrupted), initiiert der jeweilige Daemon über RecoverKey() die Wiederherstellung oder über ResetKey() das Revertieren auf den Initialzustand.

4. Normative Relevanz & Entwickler-Hinweise

  • Port-Konfiguration im Execution/Instance-Manifest:
    • Jeder konsumierende Daemon erfordert im ARXML-Manifest einen dedizierten RPortPrototype typisiert über das PersistencyKeyValueDatabaseInterface.
    • Das Deployment erfordert ein explizites Binding (PersistencyPortPrototypeToKeyValueDatabaseMapping) an eine physische PersistencyKeyValueDatabase.
  • Prozess-Isolation & Concurrency:
    • Da alle vier Konsumenten als separate Daemons (daemon-based) laufen, muss die ara::per-Implementierung Dateisystem-Locks (Multi-Process Access Serialization) sicherstellen oder der Zugriff auf unterschiedliche, isolierte Storage-Pfade/Dateien partitioniert sein.
  • Fehlerbehandlung (ara::core::Result):
    • Sämtliche Operationen liefern Fehlertypen nach ara::per::PerErrc zurück (z. B. kKeyNotFound, kPhysicalStorageFailure, kStorageConfigurationExhausted). Daemons dürfen keine unbehandelten Exceptions werfen und müssen I/O-Fehler defensiv auffangen.
  • Einschränkungen für Plattform-Entwickler:
    • Während Time Synchronization und State Management harte Echtzeitanforderungen haben, darf SyncToStorage() niemals im zyklischen Echtzeit-Thread aufgerufen werden; Persistierungsoperationen müssen asynchron oder in dedizierten Hintergrund-Worker-Threads ausgeführt werden.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«aapFunctionalCluster» | Persistency | «aapFunctionalCluster» | Time Synchronization | daemon-based | «aapFunctionalCluster» Diagnostic Management | daemon-based | «aapFunctionalCluster» | State Management | daemon-based | «aapAPI,aapPortInterface» Persistency::KeyValueStorage | + DiscardPendingChanges() + GetAllKeys() + GetValue() + KeyExists() + RecoverKey() + RemoveAllKeys() + RemoveKey() + ResetKey() + SetValue() + SyncToStorage() | «aapFunctionalCluster» Update and Configuration | Management | daemon-based | «use» «aapRequiredPort» | «use» «aapRequiredPort» | «use» «aapRequiredPort» «use»

Begleitender Spezifikationstext:

Specification of Persistency AUTOSAR AP R23-11 5 Dependencies to Other Functional Clusters This chapter provides an overview of the dependencies to other Functional Clusters in the AUTOSAR Adaptive Platform. Section 5.1 “Provided Interfaces” lists the direct interfaces provided by Persistency to other Functional Clusters. Section 5.2 “Required Interfaces” lists the interfaces required by Persistency. A detailed technical architecture documentation of the AUTOSAR Adaptive Platform is provided in [4, EXP SW Architecture]. 5.1 Provided Interfaces «aapFunctionalCluster» Persistency «aapFunctionalCluster» Time Synchronization daemon-based «aapFunctionalCluster» Diagnostic Management daemon-based «aapFunctionalCluster» State Management daemon-based «aapAPI,aapPortInterface» Persistency::KeyValueStorage + DiscardPendingChanges() + GetAllKeys() + GetValue() + KeyExists() + RecoverKey() + RemoveAllKeys() + RemoveKey() + ResetKey() + SetValue() + SyncToStorage() «aapFunctionalCluster» Update and Configuration Management daemon-based «use» «aapRequiredPort» «use» «aapRequiredPort» «use» «aapRequiredPort» «use» Figure 5.1: Interfaces Provided by Persistency to Other Functional Clusters Figure 5.1 “Interfaces Provided by Persistency to Other Functional Clusters” shows the Key-Value Storage interfaces provided by Persistency to other Functional Clusters within the AUTOSAR Adaptive Platform. 16 of 196 Document ID 858: AUTOSAR_AP_SWS_Persistency

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R23-11 AUTOSAR_AP_SWS_Persistency S. 16 5.1 Figure 5.1: Interfaces Provided by Persistency to Other Functional Clusters