Figure 7.28: Master Core Halt Sequence 85 of 210 Document ID 78: AUTOSAR_SWS_ECUStateManager
45500c46de851baed8e7998e2b45e769d7a40ab3919a024f769179f907d008ce
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:
- 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.
- EcuM ruft intern
- 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 überActivate 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()) kehrtMcu_SetMode()zum EcuM zurück. - EcuM gibt globale Interrupts über
Os: EnableAllInterrupts()frei.
- Die Peripherie triggert ein Wakeup-Ereignis via
- 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.
- EcuM sperrt Interrupts via
- Wenn Bedingung
- 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.
- [Yes]: EcuM meldet
- Abschließend signalisiert EcuM den Slave-Cores über
Signal all SlaveCores to continue(), dass der Betrieb fortgesetzt werden kann.
- EcuM prüft den RAM-Zustand via
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 wirdEnableAllInterrupts()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ührtEcuM_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.