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

Figure 9.123: Interfaces required by Diagnostic Management

SHA-256 Inhalts-Fingerabdruck: be04a80528d992b245079befc96246b23029b144dff34c18bc657902b21e4bc7
✦ 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(): WriteAccessor, 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.
  • Typkorrektur und Zugriffssicherheit im FileStorage: Der Rückgabetyp von OpenFileWriteOnly() ist nun typkorrekt als WriteAccessor modelliert (zuvor fehlerhaft als ReadWriteAccessor). Dadurch wird auf API-Ebene die strikte Trennung zwischen rein schreibendem (WriteAccessor) und lesend-schreibendem (ReadWriteAccessor) Dateizugriff für Diagnose-Dumps durchgesetzt.
  • 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)

R24-11 → R25-11 normative Änderung Vorgänger: FIG-f27af3f0f7906063
  • 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(): WriteAccessor + 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
R25-11 AUTOSAR_AP_EXP_SWArchitecture S. 176 9.123 Figure 9.123: Interfaces required by Diagnostic Management