DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_ECUStateManager FIG-45500c46de851bae 885 × 1368 px 1 Release(s)

Figure 7.28: Master Core Halt Sequence 85 of 210 Document ID 78: AUTOSAR_SWS_ECUStateManager

SHA-256 Inhalts-Fingerabdruck: 45500c46de851baed8e7998e2b45e769d7a40ab3919a024f769179f907d008ce
✦ 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

UML-Sequenzdiagramm zur Spezifikation des standardisierten Master Core Halt Sequence im AUTOSAR ECU State Manager (EcuM, Fixed/Flexible Architektur). Das Diagramm stellt das Zusammenspiel zwischen EcuM auf dem Master-Core, dem Betriebssystem (Os), dem Microcontroller Driver (Mcu), interrupt-fähigen Peripheriegeräten («Peripheral» Wakeup Source), treiberspezifischen Modulen («module» Wakeup Source), projektspezifischem Integration Code sowie dem BswM (Basic Software Mode Manager) während des Übergangs in den stromsparenden HALT-Zustand und dem anschließenden Wakeup-Handling dar.

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Komponenten und Schnittstellen:

  • «module» EcuM: Führt die zentrale Ablaufsteuerung der Master-Core-Halt-Sequenz aus.
  • Integration Code: Ausführungsrahmen für projektspezifische Callouts und Synchronisationspunkte (Wait for all SlaveCores to be ready to sleep(), EcuM_GenerateRamHash(), EcuM_CheckRamHash(uint8), EcuM_ErrorHook(uint16), Activate PLL(), Signal all SlaveCores to continue()).
  • «module» Os: Betriebssystem zur globalen Interrupt-Steuerung (DisableAllInterrupts(), EnableAllInterrupts()).
  • «module» Mcu: Microcontroller Driver zur Hardware-Modusumschaltung (Mcu_SetMode(Mcu_ModeType), Mcu_SetMode()).
  • «Peripheral» Wakeup Source: Hardware-Peripheriequelle, die asynchrone Hardware-Interrupts (Interrupt()) auslöst.
  • «module» Wakeup Source: Treibermodul der Wakeup-Quelle zur Validierung und Ereignisabfrage (<Module>_CheckWakeup(), EcuM_SetWakeupEvent(EcuM_WakeupSourceType)).
  • «module» :BswM: Basic Software Mode Manager, informiert über Statusübergänge (BswM_EcuM_CurrentWakeup(sources, ECUM_WKSTATUS_PENDING), BswM_EcuM_CurrentWakeup(Sources, ECUM_WKSTATUS_VALIDATED)).

3. Dynamisches Verhalten & Sequenzablauf

Der Sequenzablauf gliedert sich in folgende Phasen:

  1. Vorbereitung und Eintritt in HALT:
    • EcuM ruft intern Wait for all SlaveCores to be ready to sleep() auf.
    • EcuM sperrt globale Interrupts via Os: DisableAllInterrupts().
    • EcuM stößt die Erzeugung des RAM-Integritätswerts via Integration Code: EcuM_GenerateRamHash() an.
    • EcuM versetzt die Hardware via Mcu: Mcu_SetMode(Mcu_ModeType) in den HALT-Zustand. Der Master-Core verharrt im Zustand HALT.
  2. Wakeup-Interrupt und MCU-Reaktivierung:
    • Die Peripherie triggert ein Wakeup-Ereignis via Interrupt() an den Integration Code.
    • Der Integration Code führt EcuM_CheckWakeup(EcuM_WakeupSourceType) aus, aktiviert die Taktversorgung über Activate PLL() und ruft das Wakeup-Treibermodul via <Module>_CheckWakeup() auf.
    • Das Treibermodul meldet das Ereignis über EcuM: EcuM_SetWakeupEvent(EcuM_WakeupSourceType) zurück.
    • Nach Rückkehr aus der ISR (Return from interrupt()) kehrt Mcu_SetMode() zum EcuM zurück.
    • EcuM gibt globale Interrupts über Os: EnableAllInterrupts() frei.
  3. Optionale AlarmClock-Behandlung (alt-Fragment „AlarmClock Service Present“):
    • Wenn Bedingung [EcuM_AlarmClock only pending event AND Alarm not expired] erfüllt ist:
      • EcuM sperrt Interrupts via DisableAllInterrupts().
      • RAM-Hash wird via EcuM_GenerateRamHash() neu erzeugt.
      • EcuM ruft erneut Mcu_SetMode(Mcu_ModeType) auf; das System wechselt wieder in HALT und setzt bei erneutem Interrupt oben fort.
  4. Integritätsprüfung und BswM-Benachrichtigung:
    • EcuM prüft den RAM-Zustand via Integration Code: EcuM_CheckRamHash(uint8).
    • opt-Fragment „RAM check failed“: Schlägt die Prüfung fehl, ruft EcuM EcuM_ErrorHook(uint16) auf (Aufruf kehrt niemals zurück: „This call never returns!“).
    • alt-Fragment „Validation Needed“:
      • [Yes]: EcuM meldet BswM_EcuM_CurrentWakeup(sources, ECUM_WKSTATUS_PENDING) an den BswM.
      • [No]: EcuM meldet BswM_EcuM_CurrentWakeup(Sources, ECUM_WKSTATUS_VALIDATED) an den BswM.
    • Abschließend signalisiert EcuM den Slave-Cores über Signal all SlaveCores to continue(), dass der Betrieb fortgesetzt werden kann.

4. Normative Relevanz & Entwickler-Hinweise

Normative Vorgaben und Entwickler-Hinweise:

  • Multicore-Synchronisation: Vor dem Eintritt in HALT müssen alle Slave-Cores synchronisiert und im Schlafzustand sein. Die Wiederaufnahme der Slave-Cores erfolgt erst nach vollständiger Validierungsinitiierung bzw. Statusmeldung an den BswM.
  • Interrupt-Sperre: Das System muss im gesperrten Interrupt-Zustand (DisableAllInterrupts) in HALT versetzt werden. Der Wakeup-Interrupt weckt die CPU auf Hardware-Ebene; erst nach Aktivierung der PLL und Rückkehr aus der ISR wird EnableAllInterrupts() ausgeführt.
  • RAM-Integrität: Die Hash-Generierung (EcuM_GenerateRamHash) vor HALT und die anschließende Prüfung (EcuM_CheckRamHash) schützen vor Datenkorruption im RAM während Low-Power-Phasen. Bei Hash-Diskrepanzen führt EcuM_ErrorHook() zwingend in eine Endlosschleife/Sicherheitszustand.
  • AlarmClock-Logik: Frühe oder nicht abgelaufene Alarm-Events triggern unmittelbar den Wiedereintritt in HALT, ohne die nachgelagerte Aufwachsequenz komplett zu durchlaufen.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

         | Integration Code «module» | :BswM | «Peripheral» | Wakeup Source | «module» | Mcu | «module» | EcuM | «module» | Wakeup Source | «module» | Os | HALT | opt RAM check failed | alt Validation Needed | [Yes] | [No] | alt AlarmClock Service Present | [EcuM_AlarmClock only pending event AND Alarm not expired] |    |   |   |  |   |    |  |  |  |             |  |  | EcuM_GenerateRamHash() | EcuM_CheckRamHash(uint8) | Return from interrupt() | Wait for all SlaveCores to be ready to sleep() | EcuM_ErrorHook(uint16) | Mcu_SetMode() | EcuM_SetWakeupEvent(EcuM_WakeupSourceType) | Mcu_SetMode(Mcu_ModeType) | Signal all SlaveCores to continue() | DisableAllInterrupts() | <Module>_CheckWakeup() | BswM_EcuM_CurrentWakeup(Sources, ECUM_WKSTATUS_VALIDATED) | Mcu_SetMode(Mcu_ModeType) | Interrupt() | EcuM_GenerateRamHash() | EcuM_CheckWakeup(EcuM_WakeupSourceType) | EnableAllInterrupts() | DisableAllInterrupts() | BswM_EcuM_CurrentWakeup(sources, ECUM_WKSTATUS_PENDING) | Activate PLL()

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R20-11 AUTOSAR_SWS_ECUStateManager S. 85 7.28 Figure 7.28: Master Core Halt Sequence 85 of 210 Document ID 78: AUTOSAR_SWS_ECUStateManager