AUTOSAR_EXP_SWArchitecture
FIG-739a260c8e4c20ae
391 × 239 px
1 Release(s)
Figure 9.6: Overview of Core
SHA-256 Inhalts-Fingerabdruck:
739a260c8e4c20ae0325f6987195ba47817ae5daeea02cb73179632d43519301
✦
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-Klassendiagramm / Schnittstellen-Realisierungsdiagramm (Component Realization).
- Architektur-Kontext: AUTOSAR Adaptive Platform (ARA – AUTOSAR Runtime for Adaptive Applications), Functional Cluster Core (
ara::core). - Funktionale Einordnung: Das Diagramm spezifiziert die basalen Lebenszyklus- und Prozesskontroll-Schnittstellen, die der Funktionscluster
Coregegenüber Adaptive Applications bereitstellt.Corebildet das fundamentale Basismodul zur Initialisierung der ARA-Laufzeitumgebung innerhalb eines POSIX-OS-Prozesses sowie zur deterministischen Terminierung im Fehlerfall.
2. Komponenten, Entitäten & Schnittstellen
- Komponente:
Core: Zentrale Adaptive-Plattform-Komponente (gekennzeichnet durch das UML-Komponenten-Symbol). Implementiert die Basisinfrastruktur und Core-Typen (ara::core).
- Schnittstellen (Stereotyp
«applicationInterface»):Runtime Controller: Definiert den prozesslokalen Initialisierungslebenszyklus der Plattform.+ Initialize(): Initialisiert die zugrunde liegende ARA-Laufzeitumgebung und interne Plattformstrukturen.+ Deinitialize(): Gibt allokierte Plattformressourcen frei und fährt die Plattform-Subsysteme deterministisch herunter.
Process Termination: Definiert Mechanismen für den sofortigen, unkonditionierten Prozessabbruch bei fatalen Fehlern.+ Abort(): Löst die unmittelbare Beendigung des laufenden Prozesses aus (Notaus-/Panic-Mechanismus).+ SetAbortHandler(): Registriert eine benutzerdefinierte Hook-Funktion (AbortHandler), die vor dem endgültigen Prozessende ausgeführt wird.
- Beziehungen:
- Gestrichelte Pfeile mit geschlossener, nicht ausgefüllter Spitze (UML-Interface-Realization): Die Komponente
Corerealisiert/implementiert sowohlRuntime Controllerals auchProcess Termination.
- Gestrichelte Pfeile mit geschlossener, nicht ausgefüllter Spitze (UML-Interface-Realization): Die Komponente
3. Dynamisches Verhalten & Sequenzablauf
- Initialisierungspfad (Normalbetrieb):
- Prozessstart (
main()-Eintritt der Adaptive Application). - Synchrone Ausführung von
ara::core::Initialize(). - Erst nach erfolgreicher Rückkehr dürfen funktionale Cluster-APIs (z. B.
ara::com,ara::exec,ara::log) aufgerufen werden.
- Prozessstart (
- Deinitialisierungspfad (Regulärer Shutdown):
- Applikationslogik beendet funktionale Tätigkeiten (z. B. getriggert via Execution Management State Client / POSIX Signals wie
SIGTERM). - Alle Kommunikations- und Verarbeitungsinstanzen werden zerstört.
- Unmittelbar vor Rückkehr aus
main(): Synchroner Aufruf vonara::core::Deinitialize().
- Applikationslogik beendet funktionale Tätigkeiten (z. B. getriggert via Execution Management State Client / POSIX Signals wie
- Abnormaler Pfad (Fehlerzustand / Termination):
- Optional während des Starts: Registrierung eines Callbacks via
ara::core::SetAbortHandler(). - Tritt ein nicht behebbarer Fehler auf (Invariantenbruch, fehlgeschlagene Preconditions,
ara::core::Abort()direkt aufgerufen oder viaara::core::Result::Value()auf fehlerhaftem Objekt): Coreruft den registriertenAbortHandlersynchron auf.- Unmittelbarer Prozessabbruch (ohne reguläres Stack Unwinding; POSIX
std::abort()bzw.SIGABRT).
- Optional während des Starts: Registrierung eines Callbacks via
4. Normative Relevanz & Entwickler-Hinweise
- Spezifikationsbezug: Normiert in
AUTOSAR_SWS_AdaptiveCore. - Ausführungssemantik & Thread-Safety:
Initialize()undDeinitialize()sind sequenziell und nicht threadsicher; sie dürfen prozessweit genau einmal und strikt im Kontext des Haupt-Threads (main) aufgerufen werden.- Fehlendes
Initialize()vor dem Zugriff auf beliebige ARA-Dienste führt zu undefiniertem Verhalten (UB).
- Restriktionen für den AbortHandler:
- Der via
SetAbortHandler()übergebene Handler darf nicht blockieren, keine weiteren Exceptions werfen und keine dynamischen Heap-Allokationen vornehmen (Gefahr von Deadlocks in korrumpierten Speicherzuständen). Er dient ausschließlich für minimales Notfall-Logging oder das synchrone Setzen von Crash-Metadaten vor der Terminierung.
- Der via
- Paradigma: Unterstützt die Exception-freie C++14/17-Entwicklungsleitlinie von AUTOSAR Adaptive (Ersetzt Exceptions durch
ara::core::Resultund terminiert bei schwerwiegenden Vertragsverletzungen deterministisch viaAbort()).
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.