DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_ECU_StateManager FIG-49b6c3d4a23ec0b6 928 × 948 px 1 Release(s)

Figure 38: LIN controller wake up by interrupt

SHA-256 Inhalts-Fingerabdruck: 49b6c3d4a23ec0b62dc17bea8065c30f1d238240501158b6ae34bba6a80907e7
✦ 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 (sd EcuM_LinWakeupByControllerInterrupt) mit eingebetteten Zustandsmarkern (GOSLEEP, SLEEP, HALT, WAKEUP I) aus der Spezifikation des ECU State Managers (AUTOSAR_SWS_ECU_StateManager, Release R3.2.3, Figure 38). Das Diagramm modelliert den Übergang in den Sleep-Zustand, das Versetzen der MCU in den Halt-Modus, die asynchrone Erkennung eines LIN-Bus-Wakeups direkt über den peripheren LIN-Controller/UART-Interrupt sowie die schrittweise Wiederherstellung der Ausführungsumgebung in der Phase WAKEUP I.

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Entitäten und Komponenten:

  • «module» Os: AUTOSAR Operating System, stellt Scheduler-Ressourcenverwaltung bereit (GetResource, ReleaseResource).
  • «module» EcuM: ECU State Manager, steuert die Gesamtabläufe für Sleep-Vorbereitung, Event-Erfassung und Wakeup-Phasen.
  • ECU Firmware: Integrations- und Callout-Schicht für plattformspezifische Initialisierungen, PLL-Taktaktivierung und hardwarenahe Wakeup-Konfiguration.
  • «module» Mcu: Microcontroller Driver, schaltet Betriebsmodi der MCU (Mcu_SetMode).
  • «module» Icu: Input Capture Unit (als passive Architektur-Lifeline ohne Kantenbeteiligung abgebildet).
  • «module» LinIf: LIN Interface, nimmt Callbacks zur Wakeup-Prüfung entgegen und stößt Treiber-Validierungen an.
  • «module» Lin: LIN Driver (MCAL), kapselt den Interrupt-Handler des Controllers und validiert Wakeup-Zustände.
  • «Peripheral» LinController/UART: On-Chip-Hardwareperipherie, detektiert Busaktivität und erzeugt den Hardware-Interrupt.
  • «Peripheral» Lin Transceiver Hardware: Externe LIN-Transceiver-Hardware (als passive Kontext-Lifeline ohne direkte Interaktionskanten aufgeführt).

Schnittstellen und Nachrichten:

  • EcuM_EnableWakeupSources(EcuM_WakeupSourceType): EcuM an ECU Firmware.
  • GetResource(RES_SCHEDULER) / ReleaseResource(RES_SCHEDULER): EcuM an Os.
  • Mcu_SetMode(Mcu_ModeType): EcuM an Mcu.
  • Wakeup interrupt() / Return from interrupt(): LinController/UART an/von Lin.
  • EcuM_CheckWakeup(EcuM_WakeupSourceType): Lin an ECU Firmware.
  • Activate PLL(): Interner Aufruf / Aktion der ECU Firmware.
  • LinIf_Cbk_CheckWakeup(NetworkHandleType): ECU Firmware an LinIf.
  • Lin_WakeupValidation(): LinIf an Lin.
  • EcuM_SetWakeupEvent(EcuM_WakeupSourceType): Lin an EcuM.
  • EcuM_DisableWakeupSources(EcuM_WakeupSourceType): EcuM an ECU Firmware.

3. Dynamisches Verhalten & Sequenzablauf

Sequenzablauf in vier Hauptphasen:

  1. Phase GOSLEEP: EcuM ruft den Callout EcuM_EnableWakeupSources auf (LinSM hat zuvor bereits LinIf_GotoSleep beim Wechsel nach NO_COM ausgeführt; im Callout ist für LIN kein zusätzlicher Code erforderlich). Danach reserviert EcuM GetResource(RES_SCHEDULER) beim OS, um ein Verdrängen/Re-Scheduling nach einem Cat-2-ISR zu unterbinden.
  2. Phase SLEEP / HALT: EcuM ruft Mcu_SetMode auf; Mcu geht in den Zustand HALT, wodurch die CPU-Befehlsausführung stoppt.
  3. Interrupt- und Wakeup-Verarbeitung: Der LinController/UART empfängt Busaktivität und löst Wakeup interrupt() im Lin-Treiber aus. Die ISR ruft EcuM_CheckWakeup in der ECU Firmware auf, welche intern Activate PLL() zur Taktrekonfiguration ausführt. Anschließend benachrichtigt die ECU Firmware das LIN-Interface via LinIf_Cbk_CheckWakeup, woraufhin LinIf mittels Lin_WakeupValidation die Validierung beim Lin-Treiber anfordert. Nach erfolgreicher Validierung setzt der Treiber das Ereignis per EcuM_SetWakeupEvent im EcuM. Die Kaskade kehrt zurück und der Treiber beendet die ISR mit Return from interrupt().
  4. Phase WAKEUP I: Die CPU-Ausführung setzt hinter dem HALT-Befehl fort (Mcu_SetMode-Rückkehr). EcuM wechselt per erneutem Mcu_SetMode in den Normalbetrieb, ruft EcuM_DisableWakeupSources auf und gibt ReleaseResource(RES_SCHEDULER) frei. Abschließend wird vermerkt, dass EcuM später ComM über das Wakeup unterrichtet, woraufhin LinSM angewiesen wird, LinIf_Wakeup aufzurufen.

4. Normative Relevanz & Entwickler-Hinweise

Entwicklungs- und Integrationshinweise:

  • ISR-Kapselung im MCAL-Treiber: Der Interrupt wird direkt vom LIN-Treiber als ISR bedient. Dies unterscheidet den Controller-basierten Wakeup vom Transceiver-basierten Wakeup, bei dem typischerweise ICU oder externe Interrupts genutzt werden.
  • Scheduler-Sperre (RES_SCHEDULER): Das Anfordern der Scheduler-Ressource vor HALT ist zwingend normativ erforderlich, da nach dem Auftreten einer ISR der Kategorie 2 sonst unmittelbar ein OS-Re-Scheduling ausgelöst würde und die sequentielle Rückkehr in den EcuM nach dem HALT-Befehl nicht garantiert wäre.
  • Taktwiederherstellung (Activate PLL()): Bevor Callbacks in höherliegende Schichten (LinIf) und Treiber-Validierungen aufgerufen werden, muss innerhalb von EcuM_CheckWakeup der Systemtakt stabilisiert werden.
  • Entkopplung der Kommunikationsaufnahme: Die Aktivierung des Kommunikationsstapels (LinIf_Wakeup) erfolgt nicht synchron in der ISR, sondern zeitlich entkoppelt über den Pfad EcuM -> ComM -> LinSM -> LinIf.
  • Passive Komponenten: Icu und Lin Transceiver Hardware sind zur Vollständigkeit der Systemarchitektur im Diagramm enthalten, verbleiben bei controllerinternem Wakeup jedoch ungenutzt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

sd EcuM_LinWakeupByControllerInterrupt | «Peripheral» | Lin Transceiver | Hardware | «module» | LinIf | «Peripheral» | LinController/UART | «module» | Lin | «module» | Icu | «module» | Mcu | ECU Firmware «module» | EcuM | «module» | Os | Release Scheduler resource to allow other tasks to run. | HALT | LinSM will already have called LinIf_GotoSleep when changing to NO_COM state. In Sleep state the LIN Controller is wakeable or not by configuration. | Nothing to be done in this callout. | EcuM will later inform ComM about the wakeup which in turn will inform LinSM, which will then call LinIf_Wakeup. | GOSLEEP | 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 | Execution continues after HALT instruction. | WAKEUP I | EcuM_EnableWakeupSources(EcuM_WakeupSourceType) | GetResource(RES_SCHEDULER) | Mcu_SetMode(Mcu_ModeType) | Wakeup interrupt() | EcuM_CheckWakeup(EcuM_WakeupSourceType) | Activate PLL() | LinIf_Cbk_CheckWakeup(NetworkHandleType) | Lin_WakeupValidation() | EcuM_SetWakeupEvent(EcuM_WakeupSourceType) | Return from interrupt() | Mcu_SetMode() | Mcu_SetMode(Mcu_ModeType) | EcuM_DisableWakeupSources(EcuM_WakeupSourceType) | ReleaseResource(RES_SCHEDULER)

Begleitender Spezifikationstext:

V2.1.0 R3.2 Rev 3 147 of 184 Document ID 078:AUTOSAR_SWS_ECU_StateManager - AUTOSAR confidential - As shown in Figure 38, the LIN controller wake up by interrupt works similar to the CAN controller wake up by interrupt. In both cases the Driver module encapsulates the interrupt handler.

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R3.2.3 AUTOSAR_SWS_ECU_StateManager S. 147 38 Figure 38: LIN controller wake up by interrupt