DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_ECU_StateManager FIG-49bef37631fdc359 910 × 1144 px 2 Release(s)

Figure 33: CAN Transceiver Wakeup by Interrupt

SHA-256 Inhalts-Fingerabdruck: 49bef37631fdc3590029e779e7c320b9bf061fb676aae41dbeb37ce0cb4e7ebf
✦ 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 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ände GOSLEEP, SLEEP, WAKEUP I und WAKEUP VALIDATION.
  • Generic Elements::ECU Firmware: Integrationsschicht / Callout-Ebene; realisiert EcuM_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 über Mcu_SetMode(Mcu_ModeType).
  • «module» Icu::Icu: Input Capture Unit Driver (MCAL); konfiguriert Wakeup-Trigger über Icu_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 über Wakeup 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

  1. Einschlafphase (GOSLEEP nach SLEEP / HALT):
    • Vorbedingung gemäß Diagrammkommentar: CanSM hat vorab CanIf_SetControllerMode und CanIf_SetTransceiverMode aufgerufen.
    • EcuM stößt EcuM_EnableWakeupSources(...) an ECU Firmware an.
    • ECU Firmware aktiviert den Transceiver-Wakeup über CanIf_SetTransceiverWakeupMode(...), welcher an CanTrcv_SetWakeupMode(...) weiterleitet.
    • ECU Firmware aktiviert den zugehörigen ICU-Kanal via Icu_EnableWakeup(...).
    • EcuM fordert über GetResource(uint8) die Scheduler-Ressource des OS an, um Re-Scheduling nach dem Wecken zu sperren.
    • EcuM wechselt in SLEEP und ruft Mcu_SetMode(Mcu_ModeType) auf; die CPU geht in den Zustand HALT.
  2. Aufwecken und ISR-Ablauf:
    • Hardware::CAN Transceiver Hardware detektiert ein Busereignis und löst Wakeup Interrupt() an Icu::Icu aus.
    • Icu ruft EcuM_CheckWakeup(...) an ECU Firmware auf.
    • ECU Firmware führt intern activate PLL() zur Taktstabilisierung aus.
    • ECU Firmware triggert die Validierung über CanIf_CheckWakeup(...).
    • CanIf fragt die Bus-Validierung über CanTrcv_CB_WakeupByBus(...) beim CanTrcv ab.
    • CanIf meldet das validierte Ereignis mittels EcuM_SetWakeupEvent(EcuM_WakeupSourceType) direkt an EcuM.
    • Die ISR schließt mit Return from interrupt() zur Transceiver-Hardware ab.
  3. Aufwachsequenz (WAKEUP I nach WAKEUP VALIDATION):
    • Die Ausführung wird unmittelbar hinter der HALT-Instruktion fortgesetzt (Execution continues after HALT instruction); Mcu_SetMode() kehrt zu EcuM zurück.
    • EcuM wechselt in WAKEUP I und stellt über erneutes Mcu_SetMode(Mcu_ModeType) den Normalmodus sicher.
    • EcuM ruft EcuM_DisableWakeupSources(...) auf, woraufhin ECU Firmware den ICU-Kanal via Icu_DisableWakeup(...) und den Transceiver-Modus via CanIf_SetTransceiverWakeupMode(...) / CanTrcv_SetWakeupMode(...) deaktiviert bzw. umkonfiguriert.
    • EcuM gibt über ReleaseResource(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.

4. Normative Relevanz & Entwickler-Hinweise

  • OS-Scheduler-Ressource: Die Sperre über GetResource vor 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, bevor WAKEUP I initialisiert 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_ReturnType in CanIf_SetTransceiverWakeupMode(Std_ReturnType, uint8, CanIf_TrcvWakeupModeType) und CanTrcv_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 Firmware fungiert 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::Can und Hardware::CanController sind lediglich zur Vollständigkeit des CAN-Subsystems abgebildet; das Aufwecken erfolgt rein über ICU und Transceiver.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«Peripheral» | Hardware::CAN | Transceiver | Hardware | «Peripheral» | Hardware::CanController | «module» | CanTrcv::CanTrcv | «module» | Can::Can | «module» | CanIf::CanIf | «module» | Icu::Icu | «module» | Mcu::Mcu | Generic Elements::ECU | Firmware «module» | EcuM::EcuM | OS::Os | GOSLEEP | CanSM will have called CanIf_SetControllerMode and CanIf_SetTransceiverMode when going to sleep. EcuM_EnableWakeupSources(EcuM_WakeupSourceType) | CanIf_SetTransceiverWakeupMode(Std_ReturnType, uint8, CanIf_TrcvWakeupModeType) | CanTrcv_SetWakeupMode(CanIf_TrcvWakeupModeType, uint8, Std_ReturnType) | Icu_EnableWakeup(Icu_ChannelType) | Release Scheduler resource to allow other tasks to run. | GetResource(uint8) | If the Scheduler will not be acquired as resource it is not assured that the program flow continues after HALT instruction because re-scheduling takes place after occurence of an ISR Cat 2. | SLEEP | Mcu_SetMode(Mcu_ModeType) | HALT | Wakeup interrupt() EcuM_CheckWakeup(EcuM_WakeupSourceType) | activate PLL() | CanIf_CheckWakeup(uint8) | CanTrcv_CB_WakeupByBus(uint8, Std_ReturnType) | EcuM_SetWakeupEvent(EcuM_WakeupSourceType) | Return from interrupt() | Execution continues after HALT instruction. | Mcu_SetMode() | WAKEUP I | Mcu_SetMode(Mcu_ModeType) | EcuM_DisableWakeupSources(EcuM_WakeupSourceType) | Icu_DisableWakeup(Icu_ChannelType) | CanIf_SetTransceiverWakeupMode(Std_ReturnType, uint8, CanIf_TrcvWakeupModeType) | CanTrcv_SetWakeupMode(CanIf_TrcvWakeupModeType, uint8, Std_ReturnType) | ReleaseResource(uint8) | WAKEUP VALIDATION

Vorkommen in AUTOSAR-Releases (2)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R3.0.7 AUTOSAR_SWS_ECU_StateManager S. 138 33 Figure 33: CAN Transceiver Wakeup by Interrupt
R3.1.5 AUTOSAR_SWS_ECU_StateManager S. 138 33 Figure 33: CAN Transceiver Wakeup by Interrupt