DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-f27af3f0f7906063 607 × 416 px 1 Release(s)

Figure 9.107: Interfaces required by Diagnostic Management

SHA-256 Inhalts-Fingerabdruck: f27af3f0f7906063a47567f7294b7551e43dd7b1db0258322a68c377efd3ca87
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: UML-Schnittstellen- und Komponentendiagramm (AUTOSAR Adaptive Platform Architecture Modeling Profile «aap*»).
  • Technischer Zweck: Spezifikation der strukturellen Abhängigkeiten und erforderlichen Serviceschnittstellen des Functional Clusters Diagnostic Management (DM) zu benachbarten Plattform-Clustern. Das Diagramm modelliert das DM als Daemon-basierte Architekturkomponente (daemon-based), die für Fehlerspeicherverwaltung, UDS-Protokollabwicklung (ISO 14229-1 via DoIP/ISO 13400-2) und Session-Handling auf standardisierte Basisdienste der Adaptive Platform zurückgreift.

2. Komponenten, Entitäten & Schnittstellen

Akteure / Functional Cluster:
  • Diagnostic Management («aapFunctionalCluster», Tag: daemon-based): Konsument aller modellierten Schnittstellen; agiert als zentraler Plattform-Daemon.
  • Persistency («aapFunctionalCluster»): Realisiert Persistierungsdienste für Diagnosedaten (DTC-Status, Freeze Frames, Extended Data Records, NvData).
  • Log and Trace («aapFunctionalCluster»): Realisiert standardisierte Logging- und Tracing-Dienste (ara::log).
Schnittstellen, Typen & Methoden:
  • FileStorage («aapAPI, aapPortInterface»):
    • Rolle: Dateibasierter Speicherzugriff für größere Datenblöcke (z. B. Crash-Logs, Trace-Puffer, binäre Speicherabbilder).
    • Methoden: DeleteFile(), FileExists(), GetAllFileNames(), GetCurrentFileSize(), GetFileInfo(), OpenFileReadOnly(): ReadAccessor, OpenFileReadWrite(): ReadWriteAccessor, OpenFileWriteOnly(): ReadWriteAccessor, RecoverFile(), ResetFile().
  • KeyValueStorage («aapAPI, aapPortInterface»):
    • Rolle: Granulare Key-Value-Persistierung für DTC-Ereignisse, Debounce-Counter, DID-Werte und Zustandskonfigurationen.
    • Methoden: DiscardPendingChanges(), GetAllKeys(), GetCurrentValueSize(), GetValue(), KeyExists(), RecoverKey(), RemoveAllKeys(), RemoveKey(), ResetKey(), SetValue(), SyncToStorage().
  • Logger («aapAPI, aapNativeInterface»):
    • Rolle: Direkte native Schnittstelle (ara::log::Logger) zur Übermittlung strukturierter Log- und Diagnose-Trace-Events an DLT.
    • Methoden: IsEnabled(): bool, Log(MsgId, Params), LogDebug(): LogStream, LogError(): LogStream, LogFatal(): LogStream, LogInfo(): LogStream, LogVerbose(): LogStream, LogWarn(): LogStream, WithLevel(): LogStream.
Beziehungen & Stereotypen:
  • Port-basierte Kopplung («use», «aapRequiredPort»): DM greift über formale Required Ports auf FileStorage und KeyValueStorage zu (AUTOSAR-Port-Modellierung, typisiert über PortInterface).
  • Native API-Nutzung («use»): Direkter C++-Aufruf von Logger ohne Port-Overhead (modelliert als NativeInterface).
  • Interface-Realisierung (gestrichelte Linie mit geschlossener, nicht gefüllter Dreieckspitze): Persistency realisiert FileStorage und KeyValueStorage; Log and Trace realisiert Logger.

3. Dynamisches Verhalten & Sequenzablauf

  • Diagnosedaten-Persistierung (Persistency):
    1. Beim Hochlauf initialisiert der DM-Daemon über seine Required Ports den Zugriff auf KeyValueStorage und FileStorage.
    2. Granulare Statusdaten (z. B. DTC-Statusmasken, UDS-Snapshots, Extended Data Records, Debounce-Zähler) werden über GetValue() abgefragt; vor dem Einlesen dynamischer Nutzdaten kann über GetCurrentValueSize() die Puffergröße ermittelt werden. Bei Statusänderungen werden Daten via SetValue() aktualisiert.
    3. Zur transaktionalen Sicherung im nichtflüchtigen Speicher ruft DM SyncToStorage() auf; fehlerhafte Transaktionen werden über DiscardPendingChanges() verworfen.
    4. Größere Diagnosedaten (z. B. Speicherabbilder, Log-Dateien) werden dateibasiert über OpenFileReadOnly(), OpenFileReadWrite() oder OpenFileWriteOnly() unter Verwendung der entsprechenden Accessor-Objekte gelesen oder geschrieben.
    5. Im Fehlerfall ermöglichen RecoverKey() bzw. RecoverFile() oder ResetKey()/ResetFile() die Wiederherstellung redundanter oder persistenter Datensätze.
  • Diagnose-Logging und Tracing (Log and Trace):
    1. Während der Protokollverarbeitung und bei Zustandsübergängen prüft DM über Logger::IsEnabled(): bool, ob Logging auf dem gewünschten Level aktiv ist.
    2. Bei aktivem Logging werden Diagnoseereignisse, UDS-Meldungen und Fehlerspeicheroperationen über Loglevel-spezifische Methoden (LogInfo(), LogWarn(), LogError(), LogDebug(), etc.) oder parametrisiert via Log(MsgId, Params) in den LogStream geschrieben.

4. Normative Relevanz & Entwickler-Hinweise

  • Architekturrolle des DM-Daemons: Diagnostic Management ist als zentraler Plattformdienst (daemon-based) ausgelegt und kapselt die UDS-Protokollverarbeitung sowie den Fehlerspeicher der Adaptive Platform.
  • Port-basierte vs. native Kopplung:
    • Die Anbindung an Persistency erfolgt strikt über Ports («aapRequiredPort») mit typisierten Port-Interfaces («aapPortInterface»). Dies erfordert entsprechende Port-Konfigurationen im AUTOSAR-Manifest (ARXML) und erlaubt die Entkopplung von Persistenz-Backends.
    • Die Bindung an Logger ist als «aapNativeInterface» spezifiziert. Sie erfolgt ohne Port-Abstraktion direkt über C++-APIs (ara::log), was den Aufruf-Overhead bei hochfrequentem Logging minimiert.
  • Transaktions- und Speicheroptimierung: Die Methode GetCurrentValueSize() in KeyValueStorage erlaubt dem DM-Daemon eine dynamische, exakte Speicherallokation vor dem Auslesen variabler Datensätze (z. B. Freeze Frames oder DID-Inhalte), wodurch statische Maximalpuffer vermieden werden. Änderungen an Schlüsselwerten verbleiben flüchtig, bis SyncToStorage() ausgeführt wird.
  • Typspezifikation im Logging: Die explizite Angabe von IsEnabled(): bool präzisiert das synchrone Boolean-Abfrageverhalten für bedingtes Logging zur Vermeidung unnötiger Formatierungs-Overheads.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R23-11 → R24-11 normative Änderung Vorgänger: FIG-64079698f24cd844
  • KeyValueStorage: Methode + GetCurrentValueSize() neu hinzugefügt.
  • Logger: Für die Methode IsEnabled() wurde der Rückgabetyp : bool explizit ergänzt (+ IsEnabled(): bool).
R24-11 → R25-11 normative Änderung Nachfolger: FIG-be04a80528d992b2
  • FileStorage: Der Rückgabetyp der Methode OpenFileWriteOnly() wurde von ReadWriteAccessor auf WriteAccessor korrigiert.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«aapFunctionalCluster» Diagnostic Management daemon-based | «aapAPI,aapPortInterface» | FileStorage | + DeleteFile() + FileExists() + GetAllFileNames() + GetCurrentFileSize() + GetFileInfo() + OpenFileReadOnly(): ReadAccessor + OpenFileReadWrite(): ReadWriteAccessor + OpenFileWriteOnly(): ReadWriteAccessor + RecoverFile() + ResetFile() | «aapAPI,aapNativeInterface» | Logger | + IsEnabled(): bool + Log(MsgId, Params) + LogDebug(): LogStream + LogError(): LogStream + LogFatal(): LogStream + LogInfo(): LogStream + LogVerbose(): LogStream + LogWarn(): LogStream + WithLevel(): LogStream | «aapFunctionalCluster» | Persistency | «aapFunctionalCluster» | Log and Trace | «aapAPI,aapPortInterface» | KeyValueStorage | + DiscardPendingChanges() + GetAllKeys() + GetCurrentValueSize() + GetValue() + KeyExists() + RecoverKey() + RemoveAllKeys() + RemoveKey() + ResetKey() + SetValue() + SyncToStorage() | «use» «aapRequiredPort» | «use» «use» «aapRequiredPort»

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R24-11 AUTOSAR_AP_EXP_SWArchitecture S. 159 9.107 Figure 9.107: Interfaces required by Diagnostic Management