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.
- Rolle: Direkte native Schnittstelle (
Beziehungen & Stereotypen:
- Port-basierte Kopplung (
«use»,«aapRequiredPort»): DM greift über formale Required Ports aufFileStorageundKeyValueStoragezu (AUTOSAR-Port-Modellierung, typisiert überPortInterface). - Native API-Nutzung (
«use»): Direkter C++-Aufruf vonLoggerohne Port-Overhead (modelliert alsNativeInterface). - Interface-Realisierung (gestrichelte Linie mit geschlossener, nicht gefüllter Dreieckspitze):
PersistencyrealisiertFileStorageundKeyValueStorage;Log and TracerealisiertLogger.
3. Dynamisches Verhalten & Sequenzablauf
- Diagnosedaten-Persistierung (Persistency):
- Beim Hochlauf initialisiert der DM-Daemon über seine Required Ports den Zugriff auf
KeyValueStorageundFileStorage. - Granulare Statusdaten (z. B. DTC-Statusmasken, UDS-Snapshots, Extended Data Records, Debounce-Zähler) werden über
GetValue()abgefragt; vor dem Einlesen dynamischer Nutzdaten kann überGetCurrentValueSize()die Puffergröße ermittelt werden. Bei Statusänderungen werden Daten viaSetValue()aktualisiert. - Zur transaktionalen Sicherung im nichtflüchtigen Speicher ruft DM
SyncToStorage()auf; fehlerhafte Transaktionen werden überDiscardPendingChanges()verworfen. - Größere Diagnosedaten (z. B. Speicherabbilder, Log-Dateien) werden dateibasiert über
OpenFileReadOnly(),OpenFileReadWrite()oderOpenFileWriteOnly()unter Verwendung der entsprechenden Accessor-Objekte gelesen oder geschrieben. - Im Fehlerfall ermöglichen
RecoverKey()bzw.RecoverFile()oderResetKey()/ResetFile()die Wiederherstellung redundanter oder persistenter Datensätze.
- Beim Hochlauf initialisiert der DM-Daemon über seine Required Ports den Zugriff auf
- Diagnose-Logging und Tracing (Log and Trace):
- 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. - Bei aktivem Logging werden Diagnoseereignisse, UDS-Meldungen und Fehlerspeicheroperationen über Loglevel-spezifische Methoden (
LogInfo(),LogWarn(),LogError(),LogDebug(), etc.) oder parametrisiert viaLog(MsgId, Params)in denLogStreamgeschrieben.
- Während der Protokollverarbeitung und bei Zustandsübergängen prüft DM über
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
Persistencyerfolgt 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
Loggerist als«aapNativeInterface»spezifiziert. Sie erfolgt ohne Port-Abstraktion direkt über C++-APIs (ara::log), was den Aufruf-Overhead bei hochfrequentem Logging minimiert.
- Die Anbindung an
- Typkorrektur und Zugriffssicherheit im FileStorage: Der Rückgabetyp von
OpenFileWriteOnly()ist nun typkorrekt alsWriteAccessormodelliert (zuvor fehlerhaft alsReadWriteAccessor). 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()inKeyValueStorageerlaubt 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, bisSyncToStorage()ausgeführt wird. - Typspezifikation im Logging: Die explizite Angabe von
IsEnabled(): boolpräzisiert das synchrone Boolean-Abfrageverhalten für bedingtes Logging zur Vermeidung unnötiger Formatierungs-Overheads.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.