Figure 33: CAN Transceiver Wakeup by Interrupt
49bef37631fdc3590029e779e7c320b9bf061fb676aae41dbeb37ce0cb4e7ebf
1. Diagrammtyp & Architektur-Kontext
UML-Sequenzdiagramm aus der AUTOSAR Classic Platform Spezifikation des ECU State Managers (AUTOSAR_SWS_ECU_StateManager, Releases R3.0.7 und R3.1.5). Dargestellt ist das Zusammenspiel zwischen System Services (EcuM, OS), Integrationscode bzw. Callout-Ebene (ECU Firmware), MCAL-Treibern (MCU, ICU, CAN), Hardware-Abstraktionsmodulen (CanIf, CanTrcv) sowie Hardware-Peripherien (CanController, CAN Transceiver Hardware) während des Übergangs in den Schlafmodus (GOSLEEP, SLEEP, HALT), der Weckverarbeitung über einen externen Transceiver-Interrupt (Wakeup by Interrupt) und des Wiederanlaufs bis zur Wakeup-Validierung (WAKEUP I, WAKEUP VALIDATION).
2. Komponenten, Entitäten & Schnittstellen
Beteiligte Entitäten und Lebenslinien:
OS::Os: AUTOSAR OS; stellt Primitiven zur Ressourcenverwaltung bereit (GetResource(uint8),ReleaseResource(uint8)).«module» EcuM::EcuM: ECU State Manager; steuert die ZuständeGOSLEEP,SLEEP,WAKEUP IundWAKEUP VALIDATION.Generic Elements::ECU Firmware: Integrationsschicht / Callout-Ebene; realisiertEcuM_EnableWakeupSources(EcuM_WakeupSourceType),EcuM_CheckWakeup(EcuM_WakeupSourceType),EcuM_DisableWakeupSources(EcuM_WakeupSourceType)und die PLL-Aktivierung (activate PLL()).«module» Mcu::Mcu: Microcontroller Driver (MCAL); steuert Low-Power-Modi überMcu_SetMode(Mcu_ModeType).«module» Icu::Icu: Input Capture Unit Driver (MCAL); konfiguriert Wakeup-Trigger überIcu_EnableWakeup(Icu_ChannelType)/Icu_DisableWakeup(Icu_ChannelType)und dient als ISR-Eintrittspunkt.«module» CanIf::CanIf: CAN Interface; delegiert Transceiver-Weckmodi (CanIf_SetTransceiverWakeupMode(...)) und prüft Weckereignisse (CanIf_CheckWakeup(uint8)).«module» Can::Can: CAN Driver (MCAL); passive Lebenslinie ohne Interaktion im dargestellten Pfad.«module» CanTrcv::CanTrcv: CAN Transceiver Driver; steuert den Transceiver-Hardware-Modus (CanTrcv_SetWakeupMode(...)) und verifiziert Bus-Wakeup (CanTrcv_CB_WakeupByBus(...)).«Peripheral» Hardware::CanController: On-Chip CAN-Controller; passive Lebenslinie.«Peripheral» Hardware::CAN Transceiver Hardware: Externe Transceiver-Hardware; signalisiert Busaktivität überWakeup Interrupt().
Wesentliche Schnittstellenaufrufe:
EcuM_EnableWakeupSources(EcuM_WakeupSourceType)/EcuM_DisableWakeupSources(EcuM_WakeupSourceType)CanIf_SetTransceiverWakeupMode(Std_ReturnType, uint8, CanIf_TrcvWakeupModeType)CanTrcv_SetWakeupMode(CanIf_TrcvWakeupModeType, uint8, Std_ReturnType)Icu_EnableWakeup(Icu_ChannelType)/Icu_DisableWakeup(Icu_ChannelType)GetResource(uint8)/ReleaseResource(uint8)Mcu_SetMode(Mcu_ModeType)Wakeup Interrupt()/Return from interrupt()EcuM_CheckWakeup(EcuM_WakeupSourceType)CanIf_CheckWakeup(uint8)CanTrcv_CB_WakeupByBus(uint8, Std_ReturnType)EcuM_SetWakeupEvent(EcuM_WakeupSourceType)
3. Dynamisches Verhalten & Sequenzablauf
- Einschlafphase (
GOSLEEPnachSLEEP/HALT):- Vorbedingung gemäß Diagrammkommentar: CanSM hat vorab
CanIf_SetControllerModeundCanIf_SetTransceiverModeaufgerufen. EcuMstößtEcuM_EnableWakeupSources(...)anECU Firmwarean.ECU Firmwareaktiviert den Transceiver-Wakeup überCanIf_SetTransceiverWakeupMode(...), welcher anCanTrcv_SetWakeupMode(...)weiterleitet.ECU Firmwareaktiviert den zugehörigen ICU-Kanal viaIcu_EnableWakeup(...).EcuMfordert überGetResource(uint8)die Scheduler-Ressource des OS an, um Re-Scheduling nach dem Wecken zu sperren.EcuMwechselt inSLEEPund ruftMcu_SetMode(Mcu_ModeType)auf; die CPU geht in den ZustandHALT.
- Vorbedingung gemäß Diagrammkommentar: CanSM hat vorab
- Aufwecken und ISR-Ablauf:
Hardware::CAN Transceiver Hardwaredetektiert ein Busereignis und löstWakeup Interrupt()anIcu::Icuaus.IcuruftEcuM_CheckWakeup(...)anECU Firmwareauf.ECU Firmwareführt internactivate PLL()zur Taktstabilisierung aus.ECU Firmwaretriggert die Validierung überCanIf_CheckWakeup(...).CanIffragt die Bus-Validierung überCanTrcv_CB_WakeupByBus(...)beimCanTrcvab.CanIfmeldet das validierte Ereignis mittelsEcuM_SetWakeupEvent(EcuM_WakeupSourceType)direkt anEcuM.- Die ISR schließt mit
Return from interrupt()zur Transceiver-Hardware ab.
- Aufwachsequenz (
WAKEUP InachWAKEUP VALIDATION):- Die Ausführung wird unmittelbar hinter der HALT-Instruktion fortgesetzt (
Execution continues after HALT instruction);Mcu_SetMode()kehrt zuEcuMzurück. EcuMwechselt inWAKEUP Iund stellt über erneutesMcu_SetMode(Mcu_ModeType)den Normalmodus sicher.EcuMruftEcuM_DisableWakeupSources(...)auf, woraufhinECU Firmwareden ICU-Kanal viaIcu_DisableWakeup(...)und den Transceiver-Modus viaCanIf_SetTransceiverWakeupMode(...)/CanTrcv_SetWakeupMode(...)deaktiviert bzw. umkonfiguriert.EcuMgibt überReleaseResource(uint8)die Scheduler-Ressource an das OS frei, wodurch andere Tasks wieder ausgeführt werden können.- Die Sequenz mündet in den Zustand
WAKEUP VALIDATION.
- Die Ausführung wird unmittelbar hinter der HALT-Instruktion fortgesetzt (
4. Normative Relevanz & Entwickler-Hinweise
- OS-Scheduler-Ressource: Die Sperre über
GetResourcevor Eintritt in den Halt-Modus ist essenziell. Ohne Scheduler-Lock ist nicht gewährleistet, dass der Programmfluss nach dem Halt-Befehl fortgesetzt wird, da eine ISR der Kategorie 2 (Cat 2) ein Re-Scheduling auslösen würde, bevorWAKEUP Iinitialisiert ist. - Taktwiederherstellung (
activate PLL): Vor der Ausführung höherer BSW-Prüfungen (CanIf_CheckWakeup) innerhalb der Wakeup-Behandlung muss die PLL wieder aktiviert werden, um definierte System- und Peripherietakte für die Buskommunikation zu gewährleisten. - Schnittstellen- und Typsyntax: Im Diagramm sind Rückgabetypen teilweise als Parameter notiert (z. B.
Std_ReturnTypeinCanIf_SetTransceiverWakeupMode(Std_ReturnType, uint8, CanIf_TrcvWakeupModeType)undCanTrcv_SetWakeupMode(CanIf_TrcvWakeupModeType, uint8, Std_ReturnType)). Implementierer müssen sich an die standardisierten Signaturen der AUTOSAR-SWS-Dokumente halten. - Rolle der ECU Firmware: Die Entität
Generic Elements::ECU Firmwarefungiert als Callout- bzw. Integrationsschicht zwischen standardisiertem EcuM und den projektspezifischen MCAL-Treibern (Mapping von EcuM-Wakeup-Source auf Icu-Channel und CanIf-Transceiver-ID). - Inaktive Lebenslinien:
Can::CanundHardware::CanControllersind lediglich zur Vollständigkeit des CAN-Subsystems abgebildet; das Aufwecken erfolgt rein über ICU und Transceiver.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.