DEENESPTFRRUARHIKOZHNL
AUTOSAR_CP_SWS_ECUStateManager FIG-33a1b20bbdd5fd33 928 × 1236 px 1 Release(s)

Figure 9.13: Passive wakeup of a host ecu (ECU that maintain a Ethernet switch) (part 1)

SHA-256 Inhalts-Fingerabdruck: 33a1b20bbdd5fd3350ea21389b9e21beba6abbd97564b953d50fcbf66b1d2a02
✦ 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

  • Klassifikation: UML-Sequenzdiagramm (Interaktionsübersicht) mit integrierten Zustandsmarkierungen (GOSLEEP, SLEEP, HALT), verschachtelten Interaktionsrahmen (loop) und synchronen/asynchronen Aufrufsequenzen.
  • Technischer Zweck: Spezifikation der Phase 1 des passiven Wakeup-Prozesses einer Host-ECU, die einen integrierten oder externen Ethernet-Switch verwaltet (AUTOSAR_SWS_ECUStateManager, Kapitel 9, Figure 9.13).
  • Funktionale Einordnung: Detaillierung des Übergangs vom geordneten Schlafmodus (SLEEP/HALT) über den asynchronen Hardware-Interrupt bis zur kaskadierten Wakeup-Validierung über die BSW-Schichten (EcuM → EthIf → EthSwt → EthTrcv).

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Instanzen & Stereotypen
  • «module» EcuM (ECU State Manager, Core/BSW System Service): Steuert den Gesamtlebenszyklus und koordiniert Schlaf-/Aufwachpfade.
  • Integration Code: Projekt- und derivatspezifischer Callout-Code (OEM/Tier-1-Hooks).
  • «module» Os (Operating System): Verwaltet Tasks, ISRs, Interrupt-Sperren und Ressourcen.
  • «module» Mcu (Microcontroller Unit Driver): Steuert CPU-Low-Power-Modi (HALT).
  • «module» Icu (Input Capture Unit Driver / Interrupt Controller): Fängt externe Wakeup-Flanken/Signale ab.
  • «module» EthIf (Ethernet Interface): Abstraktionsschicht für Ethernet-Controller, Switches und Transceiver.
  • «module» Eth (Ethernet Controller Driver): Im Diagramm als BSW-Modul aufgeführt, in dieser Phase ohne direkte Interaktion.
  • «module» EthSwt (Ethernet Switch Driver): Kapselt Multi-Port-Switch-Funktionalitäten.
  • EthTrcv (Ethernet Transceiver Driver): Treiberschicht für PHY-Bausteine (spezifisch hervorgehoben).
  • «Periph... ETH Hardware (PHY): Physikalische Hardware (Ethernet-Transceiver / Switch-PHYs).
Relevante Schnittstellen (APIs & Callbacks)
  • EcuM_EnableWakeupSources(EcuM_WakeupSourceType): Schärft die Hardware-Wakeup-Quellen.
  • GetResource(uint8): Belegt eine OS-Ressource (Scheduler Lock).
  • DisableAllInterrupts(): Globale Sperrung aller Interrupts vor dem Eintreten in den Standby.
  • Mcu_SetMode(Mcu_ModeType): Versetzt den Core in den Zustand HALT.
  • Wakeup interrupt(): Asynchrone Interrupt-Leitung der Ethernet-Hardware.
  • EcuM_CheckWakeup(EcuM_WakeupSourceType): Benachrichtigt den EcuM aus dem ISR-Kontext.
  • EcuM_CheckWakeupHook(EcuM_WakeupSourceType): Callout zur Wiederherstellung von Grundfunktionen (z. B. Clocks).
  • activate PLL(): Hardware-Taktinitialisierung im Integration Code.
  • EcuM_StartCheckWakeup(): Signalisierung zur Weiterführung der Validierung.
  • EthIf_CheckWakeup(EcuM_WakeupSourceType): Std_ReturnType: Startet die Validierung über das Ethernet-Interface.
  • EthSwt_SwitchCheckWakeup(uint8): Std_ReturnType: Prüft den spezifischen Switch (Switch-Index).
  • EthTrcv_CheckWakeup(uint8): Std_ReturnType: Prüft den spezifischen Transceiver/Port (Trcv-Index).

3. Dynamisches Verhalten & Sequenzablauf

Phase A: Eintritt in den Schlafmodus (GOSLEEP → SLEEP → HALT)
  1. Wakeup-Konfiguration: EcuM aktiviert die für den Schlafmodus zulässigen Wakeup-Quellen mittels EcuM_EnableWakeupSources(...).
  2. Scheduler-Blockierung: EcuM ruft GetResource(...) auf, um den OS-Scheduler zu sperren. Dies stellt sicher, dass nach Rückkehr aus einer ISR der Kategorie 2 kein unmittelbares Task-Rescheduling erfolgt, sondern der Kontrollfluss deterministisch hinter der HALT-Instruktion fortfährt.
  3. Interrupt-Verriegelung: EcuM wechselt in den internen Zustand SLEEP und ruft DisableAllInterrupts() auf.
  4. Core-Halt: EcuM triggert Mcu_SetMode(...). Der Mikrocontroller wechselt in den energiearmen HALT-Zustand (CPU-Clock gestoppt).
Phase B: Hardware-Wakeup & ISR-Eintritt
  1. Asynchroner Trigger: Die externe Ethernet-Hardware/PHY detektiert Netzwerkaktivität und feuert einen Wakeup interrupt() an den Host (Icu/Interrupt-Ebene).
  2. ISR-Weiterleitung: Die ISR ruft synchron EcuM_CheckWakeup(WakeupSource) auf.
Phase C: Takt-Reaktivierung & Kaskadierte Prüfung
  1. Clock-Aktivierung: EcuM ruft den Callout EcuM_CheckWakeupHook(...) auf. Der Integration Code führt activate PLL() aus, um den Systemtakt für Peripherie- und Buszugriffe zu stabilisieren.
  2. Prüfstart: Über EcuM_StartCheckWakeup() und anschließendes EthIf_CheckWakeup(...) wird der Ethernet-Kommunikationsstack adressiert.
  3. Kaskadierte Iteration:
    • Outer Loop: loop over all affected Ethernet switches → EthIf iteriert über alle betroffenen Switches und ruft EthSwt_SwitchCheckWakeup(SwitchIdx) auf.
    • Inner Loop: loop over all affected EthSwitchPorts → EthSwt iteriert über alle Ports des jeweiligen Switches und ruft EthTrcv_CheckWakeup(TrcvIdx) auf.
  4. Asynchrone Entkopplung: EthTrcv_CheckWakeup(...) führt im ISR-Kontext keine blockierenden Buszugriffe (z. B. SPI/MDIO) durch, sondern puffert die Prüfanforderung intern ("Store to check the Ethernet hardware in the context of the EthTrcv main function").
  5. Rückkehr & Fortsetzung: Die Aufrufe kehren synchron zurück; die ISR beendet sich via Return from interrupt(). Der Programmfluss der CPU setzt direkt nach der HALT-Instruktion im EcuM fort ("Execution continues after HALT instruction").

4. Normative Relevanz & Entwickler-Hinweise

  • Konfiguration EthTrcvWakeUpSupport: Für Host-ECUs mit Ethernet-Switch ist zwingend der Modus ETHTRCV_WAKEUP_BY_POLLING_ON_DEMAND zu wählen. Da ein Switch mehrere Ports umfasst, wird der Host über einen gemeinsamen Hardware-Interrupt geweckt; die Einzelfeststellung, welcher Switch-Port den Wakeup ausgelöst hat, erfolgt anschließend bedarfsgesteuert via Polling.
  • Kontext-Entkopplung (ISR-Restriktionen): EthTrcv_CheckWakeup darf im Interrupt-Kontext keine synchronen SPI-/MDIO-Registertransfers anstoßen. Die Hardware-Registerabfrage des PHY muss zwingend in den Task-Kontext der EthTrcv_MainFunction() verlagert werden.
  • OS-Scheduler-Sperre (GetResource): Vor dem Aufruf von Mcu_SetMode muss eine OS-Ressource (i. d. R. RES_SCHEDULER) angefordert werden. Andernfalls führt eine Cat-2-Wakeup-ISR dazu, dass das OS nach ISR-Ende sofort eine höherpriore Task schedult und der EcuM-Code nach dem HALT-Aufruf verwaist zurückbleibt.
  • PLL-Wiederanlauf: Innerhalb von EcuM_CheckWakeupHook muss sichergestellt sein, dass die PLL gelockt und die Takte für Kommunikationsschnittstellen (SPI, MDIO, Ethernet-MAC) vollständig eingeschwungen sind, bevor Folgetreiber auf Peripherieregister zugreifen.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R23-11 → R24-11 redaktionell Vorgänger: FIG-69644ce32a81f9db
  • Äußerer Interaktionsrahmen: Die Beschriftung loop over all affected Ethernet switches wurde fehlerhaft zu loopover all affected Ethernet switches zusammengezogen (fehlendes Leerzeichen).
  • Innerer Interaktionsrahmen: Die Tab-Breite des Rahmens schneidet den Text ab, sodass statt loop over all affected EthSwitchPorts nur loop over all affected EthSwitchPo dargestellt wird.
R24-11 → R25-11 redaktionell Nachfolger: FIG-fec2be776dc8210c
  • Äußerer Interaktionsrahmen: Das Leerzeichen in loop over all affected Ethernet switches wurde wieder eingefügt (Korrektur von loopover).
  • Innerer Interaktionsrahmen: Die Tab-Breite wurde korrigiert, sodass loop over all affected EthSwitchPorts wieder vollständig dargestellt wird (zuvor abgeschnitten als loop over all affected EthSwitchPo).

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

loop over all affected Ethernet switches | loop over all affected EthSwitchPorts | «Periph... | ETH Hardware | (PHY) | «module» | Icu | «module» | Mcu | «module» | EcuM | Integration | Code | «module» | Os | GOSLEEP | HALT | SLEEP | EthTrcv «module» | EthIf | «module» | EthSwt |                                                               |    |                |          |                    |  | ! | «module» | Eth |                 | " |   |  |  | # $ |  |  | % |        | "    & '$  ( "%) ' * + ' ) ,   |  | - . ' , - ' / "0 - / 1           | " |         |          | " |     | ) |    | !  |                 | " |                                    |   |      |           |    | " |       |              | 2    |    | " |   |  |  | # |           | " 2                  |     |          | ! | EcuM_CheckWakeup(EcuM_WakeupSourceType) | Mcu_SetMode(Mcu_ModeType) | EthTrcv_CheckWakeup(uint8): Std_ReturnType | GetResource(uint8) | EthIf_CheckWakeup(EcuM_WakeupSourceType): Std_ReturnType | EcuM_EnableWakeupSources(EcuM_WakeupSourceType) | DisableAllInterrupts() | EcuM_StartCheckWakeup() | Return from interrupt() | EcuM_CheckWakeupHook(EcuM_WakeupSourceType) | Wakeup interrupt() | activate PLL() | EthSwt_SwitchCheckWakeup(uint8): Std_ReturnType

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R24-11 AUTOSAR_CP_SWS_ECUStateManager S. 198 9.13 Figure 9.13: Passive wakeup of a host ecu (ECU that maintain a Ethernet switch) (part 1)