AUTOSAR_CP_SWS_IOHardwareAbstraction
FIG-4a910884914a9da3
853 × 1102 px
1 Release(s)
Figure 9.2: Asynchronous power state setting
SHA-256 Inhalts-Fingerabdruck:
4a910884914a9da3eeae4b2267b8f7f76fe567d4b5b0bef6625178cfeb9faca9
✦
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 (Interaktionsdiagramm).
- Technischer Zweck: Spezifikation des zweiphasigen, asynchronen Energie-Zustandswechsels (Asynchronous Power State Setting) von Peripheriemodulen über die I/O Hardware Abstraction (
IoHwAb). - Funktionale Einordnung: AUTOSAR Classic Platform (R24-11),
AUTOSAR_CP_SWS_IOHardwareAbstraction. Das Diagramm bildet das Zusammenspiel zwischen Modus-Management (BswM), Laufzeitumgebung/Scheduler (Rte/SchM), Hardware-Abstraktionsschicht (IoHwAb) und den MCAL-Treibern (Adc,Pwm) ab, um Peripheriegeräte ohne Blockierung des BSW-Schedulers in stromsparende Zustände zu überführen.
2. Komponenten, Entitäten & Schnittstellen
- Module & Akteure (Stereotyp
«module»):BswM: Basic Software Mode Manager (Master für Moduswechsel-Entscheidungen).Rte: Runtime Environment / Basic Software Scheduler (SchM) als Entkopplungs- und Event-Dispatcher.IoHwAb: I/O Hardware Abstraction Module (Aggregator und Koordinator der MCAL-Power-States; dargestellt als aktive Komponente mit internem Kontrollfluss).Adc,Pwm: Exemplarische MCAL-Treiber mit Power-State-Unterstützung gem. AUTOSAR-Hardwaretreiber-Spezifikation.
- Schnittstellen & Operationen:
- Modus-Umschaltung:
RTE/SchMSwitch(char): Asynchrone/synchrone Modus-Anforderung durch denBswM.RTE/SchMSwitch(LowPowerModeA_Transition_End): Vollzugsmeldung derIoHwAban die RTE/SchM.UpdateModePorts(): Aktualisierung der Mode-Ports in RichtungBswM.
- Task- & Runnable-Aktivierung:
OnEntryRunnable_LowPowerModeA(): Modus-Eintritts-Runnable derIoHwAb.PeriodicTask(): Zyklischer OS-Task zur periodischen Abarbeitung derIoHwAb-Zustandsüberwachung.
- MCAL Power-State-APIs (gemäß SWS der jeweiligen Treiber):
<MSN>_GetCurrentPowerState()(Adc_GetCurrentPowerState,Pwm_GetCurrentPowerState): Synchrones Auslesen des aktiven Leistungszustands.<MSN>_PreparePowerState(PwrSts_x)(Adc_PreparePowerState(PwrSts_1),Pwm_PreparePowerState(PwrSts_3)): Start der asynchronen Vorbereitungsphase im MCAL-Treiber.<MSN>_SetPowerState()(Adc_SetPowerState,Pwm_SetPowerState): Synchrones Wirksamschalten des vorbereiteten Leistungszustands.<MSN>_Main_PowerStateTransitionManager(): Treiberinterne zyklische Funktion zur Abwicklung der Vorbereitung.
- Treiber-Callbacks zu
IoHwAb:IoHwAb_Pwm_NotifyReadyForPowerStateLowPowerModeA()IoHwAb_Adc_NotifyReadyForPowerStateLowPowerModeA()
- Interne
IoHwAb-Routinen:IoHwAb_PreparePowerState_LowPowerModeA(): Initiiert MCAL-Vorbereitungen.IoHwAb_PollForResults(): Prüfroutine zur Verifikation aller eingetroffenen Callbacks.IoHwAb_EnterPowerStateLP1(): Leitet Phase 2 (Umschaltung) ein.
- Modus-Umschaltung:
3. Dynamisches Verhalten & Sequenzablauf
- Trigger & Phase 1 (Prepare-Phase):
BswMschaltet viaRTE/SchMSwitchin den Zielmodus.Rteaktiviert die Mode-Entry-RunnableOnEntryRunnable_LowPowerModeA()derIoHwAb.IoHwAbführtIoHwAb_PreparePowerState_LowPowerModeA()aus:- Fragt initial via
Adc_GetCurrentPowerState()undPwm_GetCurrentPowerState()synchron den Status ab. - Ruft
Adc_PreparePowerState(PwrSts_1)undPwm_PreparePowerState(PwrSts_3)auf.
- Fragt initial via
- Nach Return der
PreparePowerState-Aufrufe läuft die Vorbereitung hardwarenah im Hintergrund, getrieben durch<MSN>_Main_PowerStateTransitionManager(). OnEntryRunnable_LowPowerModeA()terminiert; der BSW-Task blockiert nicht.
- Synchronisation & Callback-Polling:
- Ein zyklischer Scheduler-Aufruf (
PeriodicTask()) ruftIoHwAb_PollForResults()auf. Da Notifikationen noch ausstehen, erfolgt kein Zustandswechsel. - Treiber melden die Bereitschaft asynchron über konfigurierte Callbacks an die
IoHwAb:Pwm->IoHwAb_Pwm_NotifyReadyForPowerStateLowPowerModeA()Adc->IoHwAb_Adc_NotifyReadyForPowerStateLowPowerModeA()
- Ein zyklischer Scheduler-Aufruf (
- Phase 2 (Set-Phase & Transition-Abschluss):
- Beim nachfolgenden
PeriodicTask()-Aufruf erkenntIoHwAb_PollForResults(), dass alle Notifikationen vorliegen. IoHwAbverzweigt inIoHwAb_EnterPowerStateLP1():- Ruft
Adc_SetPowerState()auf (Hardware schaltet endgültig um). - Ruft
Pwm_SetPowerState()auf.
- Ruft
IoHwAbmeldet den Abschluss viaRTE/SchMSwitch(LowPowerModeA_Transition_End)an die RTE.- Die RTE aktualisiert die Mode-Ports (
UpdateModePorts()) desBswM. Der Moduswechsel ist abgeschlossen.
- Beim nachfolgenden
4. Normative Relevanz & Entwickler-Hinweise
- Zweistufiger API-Vertrag (
PreparevorSet): Hardware mit Einschwingzeiten (z. B. PLL-Deaktivierung, Entladung von ADC-Referenzen, PWM-Shutdown) darf im Stack keine blockierenden Warteroutinen erzeugen. Treiber müssen*PreparePowerStatesofort verlassen (E_OK) und die asynchrone Hardwareanpassung in<MSN>_Main_PowerStateTransitionManagerbetreiben. - Konfigurationsabhängigkeiten (ARXML/BSW-Konfiguration):
- In den MCAL-Modulen (
Adc,Pwm) muss der Parameter<MSN>LowPowerStatesSupportaktiviert sein. - Die Callback-Funktionsnamen (
IoHwAb_<MSN>_NotifyReadyForPowerState<Mode>) müssen in der Treiber-Konfiguration als Notifikationsfunktionen exakt den C-Symbolen derIoHwAbentsprechen.
- In den MCAL-Modulen (
- Implementierungsanforderung an
IoHwAb:IoHwAbmuss eine Zustandsmaschine mit Bitmaske/Zähler vorhalten, die im Concurrency-Kontext (Aufruf aus Interrupt oder Scheduler-Task) thread-sicher registriert, welche Treiber ihre Bereitschaft gemeldet haben.- Die
IoHwAb_PollForResults()-Logik muss in einer periodischen MainFunction (IoHwAb_MainFunction) laufen, um Deadlocks bei ausbleibenden Treiber-Meldungen (Timeout-Handling) abzufangen.
- BswM-Interaktion: Der
BswMdarf abhängige Aktionen (z. B.EcuM_GoHalt/EcuM_GoPoll) erst nach Empfang des SchM-SwitchesLowPowerModeA_Transition_Endtriggern, um Peripherieabschaltungen während laufender Zugriffe auszuschließen.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.