AUTOSAR_SWS_ECUStateManager
FIG-dd72e5e5f62978cd
898 × 1056 px
1 Release(s)
Figure 30: Master Core Poll Sequence
SHA-256 Inhalts-Fingerabdruck:
dd72e5e5f62978cd59cc7970f5bb58bc6e590400ab056ae2abe675cb097c7c9b
✦
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 2.x Sequenzdiagramm (Interaktionsdiagramm).
- Funktionaler Kontext: AUTOSAR Classic Platform (Release 4.0.3), Spezifikation des ECU State Managers (
AUTOSAR_SWS_ECUStateManager, EcuM mit Flexible/Fixed Management). - Systemische Einordnung: Detailablauf der Polling-basierten Schlaf-/Aufwachsequenz auf dem Master-Core (
Master Core Poll Sequence) im ZustandECUM_STATE_SLEEP. Das Diagramm spezifiziert das deterministische Zusammenspiel zwischen EcuM, Integration-Callouts, MCAL-Treibern, OS und BswM, wenn die ECU in einem Schlafmodus betrieben wird, in dem Wakeup-Events nicht (oder nicht ausschließlich) autark über asynchrone Hardware-Interrupts (ISRs) gemeldet werden, sondern zyklisches Polling erfordern. Es beinhaltet die anschließende Multicore-Synchronisation zur Reaktivierung von Slave-Cores.
2. Komponenten, Entitäten & Schnittstellen
- Akteure & Lebenslinien (Lifelines):
«module» EcuM: Zentraler BSW-Zustandsverwalter (System Services Layer). Steuert Schlafsequenz, Wakeup-Polling, Event-Pufferung und Multicore-Freigabe.Integration Code: OEM-/Plattformspezifischer BSW-Callout-Layer. Kapselt hardwarespezifische Dispatcher-Logik (EcuM_CheckWakeup,EcuM_SleepActivity).«module» Os: Operating System (System Services Layer). Bereitstellung von System-Interruptsperren (DisableAllInterrupts,EnableAllInterrupts).«module» Mcu: Microcontroller Driver (MCAL). Hardware-Abstraktion zur Umschaltung des Systemtakts und der CPU-Stromsparmodi (Mcu_SetMode).«module» Wakeup Source: MCAL-/Hardware-Treiber (z. B. Can, Lin, Fr, Icu, Gpt, interner AlarmClock-Timer), welche physikalische Wakeup-Ereignisse erfassen.«module» :BswM: Basic Software Manager (System Services Layer). Schiedsrichter für Moduswechsel; empfängt Wakeup-Zustandsänderungen zur Regelauswertung via BswM-Actions/Rules.
- Schnittstellen & Parameter:
DisableAllInterrupts(),EnableAllInterrupts(): OSEK/AUTOSAR OS API.Mcu_SetMode(Mcu_ModeType): MCAL-Treiberschnittstelle zur Aktivierung des spezifizierten Low-Power-/Halt-Modus.EcuM_SleepActivity(): Integrations-Callout zur zyklischen Ausführung während des Polling-Zustands (z. B. Watchdog-Servicing).EcuM_CheckWakeup(EcuM_WakeupSourceType): Integrations-Callout zur Weiterleitung des Abfragebefehls.<Module>_CheckWakeup(): MCAL-spezifische Treiberschnittstelle (z. B.Can_CheckWakeup()).EcuM_SetWakeupEvent(EcuM_WakeupSourceType): Asynchroner/synchroner Callback an den EcuM zur Registrierung erkannter Wakeup-Quellen.EcuM_GetPendingWakeupEvents(EcuM_WakeupSourceType): Interne EcuM-Prüfung ausstehender Wakeup-Bitmasken.BswM_EcuM_CurrentWakeup(sources, EcuM_WakeupStatusType): Benachrichtigung des BswM mit den StatuswertenECUM_WKSTATUS_PENDING(Validierung erforderlich) bzw.ECUM_WKSTATUS_VALIDATED(keine Validierung erforderlich).Signal SlaveCores to continue(): Inter-Core-Kommunikationsmechanismus (z. B. OS-Events, IPC, Shared Memory Flag / Core Release Barrier).
3. Dynamisches Verhalten & Sequenzablauf
- Sleep Mode Entry (Vorbereitung):
- EcuM sperrt alle System-Interrupts synchron via
DisableAllInterrupts(). - EcuM setzt den Low-Power-Modus über
Mcu_SetMode(Mcu_ModeType)ab (die MCU wechselt in den Sleep/Reduce-Power-Zustand oder reduziert den Core-Takt). - EcuM reaktiviert die Interrupts synchron via
EnableAllInterrupts().
- EcuM sperrt alle System-Interrupts synchron via
- Polling-Hauptschleife (
loop WHILE no pending wakeup events):- Guard Condition: Die Schleife iteriert, solange keine Wakeup-Ereignisse ausstehen (
no pending wakeup events). - Erweiterte Schleifenbedingung (Diagramm-Notiz):
While (AlarmClockService Present AND EcuM_AlarmClock only pending event AND Alarm not expired). Wenn ausschließlich das Wakeup-Event der internen AlarmClock vorliegt, der konfigurierte Alarm-Timer aber noch nicht abgelaufen ist, verbleibt die Schleife aktiv. - Zyklus-Schritte:
- Ausführung von
EcuM_SleepActivity()(Integration Code). - Innere Schleife (
loop FOR all wakeup sources that need polling):- EcuM ruft für jede polling-basierte Wakeup-Quelle den Callout
EcuM_CheckWakeup(EcuM_WakeupSourceType)auf. - Der Integration Code delegiert synchron an die korrespondierende Treiberschnittstelle
<Module>_CheckWakeup(). - Bedingter Zweig (
opt Wakeup detected): Stellt der Treiber ein physikalisches Wakeup fest, meldet er dies überEcuM_SetWakeupEvent(...)an den EcuM zurück.
- EcuM ruft für jede polling-basierte Wakeup-Quelle den Callout
- EcuM aktualisiert intern die anstehenden Events über
EcuM_GetPendingWakeupEvents(...)zur Auswertung der Schleifenabbruchbedingung.
- Ausführung von
- Guard Condition: Die Schleife iteriert, solange keine Wakeup-Ereignisse ausstehen (
- Post-Wakeup-Notifizierung an BswM (
alt):- Sobald die Schleife terminiert (mindestens ein valides Event detektiert):
- Pfad
[Yes](Wakeup-Quelle erfordert Validierung): EcuM meldetBswM_EcuM_CurrentWakeup(sources, ECUM_WKSTATUS_PENDING). Der BswM startet daraufhin die Validierungsphase (z. B. Protokoll-Frames abwarten). - Pfad
[No](Wakeup-Quelle erfordert keine Validierung): EcuM meldetBswM_EcuM_CurrentWakeup(sources, ECUM_WKSTATUS_VALIDATED)(im Vektortext alsBswMEcuM_CurrentWakeuptypographisch fehlerhaft abgebildet).
- Pfad
- Sobald die Schleife terminiert (mindestens ein valides Event detektiert):
- Multicore-Freigabe:
- Der Master-Core führt die interne Aktion
Signal SlaveCores to continue()aus. Zuvor angehaltene/schlafende Slave-Cores werden synchronisiert und setzen ihren Post-Sleep-Pfad fort.
- Der Master-Core führt die interne Aktion
4. Normative Relevanz & Entwickler-Hinweise
- Konfigurationsvertrag (ECUC):
- Wakeup-Quellen müssen über den Parameter
EcuMPollingWakeupSource = TRUEdeklariert sein, um in die innere Polling-Schleife aufgenommen zu werden. - Das Attribut
EcuMValidationTimeoutbestimmt den Pfad imalt-Block: Bei Werten> 0wirdECUM_WKSTATUS_PENDINGan den BswM gesendet; bei= 0wird direktECUM_WKSTATUS_VALIDATEDsignalisiert.
- Wakeup-Quellen müssen über den Parameter
- Implementierungsanforderungen im Integration Code:
EcuM_CheckWakeup()muss als Switch/Demux implementiert werden, um dieEcuM_WakeupSourceType-Bitmaske auf die konkreten Treiber-APIs (Can_CheckWakeup,Lin_CheckWakeupetc.) aufzulösen.EcuM_SleepActivity()muss nicht-blockierend und deterministisch sein. Ein Überschreiten der Polling-Laufzeit führt zu erhöhtem Stromverbrauch und potenziellen Watchdog-Timeouts.
- Treiberanforderungen (MCAL/Transceiver):
- Module, die Polling unterstützen, müssen reentrante/synchrone
<Module>_CheckWakeup()-Funktionen bereitstellen und darin direktEcuM_SetWakeupEvent()aufrufen, sofern Statusflags auf Controller- oder Transceiver-Ebene gesetzt sind.
- Module, die Polling unterstützen, müssen reentrante/synchrone
- Multicore-Restriktionen:
- Die Polling-Sequenz läuft ausschließlich auf dem Master-Core (Core mit der zugewiesenen EcuM-Master-Instanz).
- Slave-Cores müssen sich vor dem Eintritt des Master-Cores in die Schleife in einem sicheren Ruhezustand (z. B. WFI/Halt via OS) befinden. Das Core-Signalisieren (
Signal SlaveCores to continue()) erfordert zwingend deterministische Inter-Core-Mechanismen (z. B. Cross-Core-Interrupts / IOC).
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.