DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_ECUStateManager FIG-4730d5e9bb4d6146 928 × 1233 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: 4730d5e9bb4d61460235f27fe36512242b85661f39e7e3e72fa04e597b5e201b
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07

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)

R21-11 → R22-11 redaktionell Nachfolger: FIG-69644ce32a81f9db
  • In den Lifeline-Köpfen der Module Mcu und Icu wurde das UML-Dekompositionssymbol (zwei verschränkte Kreise am unteren Rand des Kopfkastens) entfernt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

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

Vorkommen in AUTOSAR-Releases (1)

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