DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_CANInterface FIG-48f83acdc7cbdacf 867 × 559 px 1 Release(s)

Figure 9.12: BusOff notification

SHA-256 Inhalts-Fingerabdruck: 48f83acdc7cbdacfc62d81bb88982f2e8752586e5725e568985fe45235a498bb
✦ 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.
  • Funktionale Einordnung: AUTOSAR Classic Platform (CP), Kommunikationsstack (CAN-Subsystem). Spezifiziert die synchrone Benachrichtigungskette und Fehlerbehandlung bei Detektion eines CAN Bus-Off-Zustands (Transmit Error Counter TEC > 255) von der Hardware-Peripherie über den MCAL-Treiber (Can) und die Abstraktionsschicht (CanIf) bis zur zuständigen oberen Schicht (CanIf_User_Cbk, primär CanSM).

2. Komponenten, Entitäten & Schnittstellen

  • Akteure / Lifelines:
    • «Peripheral» CanController: Physikalische CAN-Hardware / On-Chip-Controller.
    • «module» Can: Hardwarenaher MCAL-Treiber (CAN Driver).
    • «module» CanIf: Hardware-unabhängige CAN-Schnittstelle (CAN Interface).
    • «interface» CanIf_User_Cbk: Obere Schicht / Anwender-Callback (normativ: CanSM_ControllerBusOff, alternativ CDD).
  • APIs & Interaktionen:
    • BusOff Detection(): Hardware-Signalierung (Interrupt oder Status-Register-Polling).
    • Set CAN Controller to STOPPED mode, if necessary(): Treiber-Registerzugriff zur Erzwingung des Zustands CAN_CS_STOPPED.
    • CanIf_ControllerBusOff(uint8 ControllerId): Normative Treiber-zu-Interface-Callback-API ([SWS_CANIF_00218]).
    • Change to CAN_CS_STOPPED(): Interne Modusaktualisierung im CanIf.
    • Reset transmit queue(): Pufferverwaltungs-Aktion im CanIf.
    • <User_ControllerBusOff>(uint8 ControllerId): Konfigurierbarer Callback ([SWS_CANIF_00014], typischerweise CanSM_ControllerBusOff).

3. Dynamisches Verhalten & Sequenzablauf

  1. Trigger: CanController wechselt hardwaredenseitig in den Bus-Off-Zustand. Auslösung von BusOff Detection() an das Modul Can (via Bus-Off-ISR oder Polling-Zyklus in Can_MainFunction_BusOff()).
  2. Hardware-Stopp: Modul Can prüft den Controller-Status und setzt diesen bei Bedarf aktiv in CAN_CS_STOPPED (Set CAN Controller to STOPPED mode, if necessary()), um jegliche weitere Busaktivität sicher zu unterbinden.
  3. Notification-Kaskade: Can ruft synchron CanIf_ControllerBusOff(ControllerId) auf.
  4. Zustandsübergang & Buffer-Flush:
    • CanIf setzt den internen Controller-Zustand auf CAN_CS_STOPPED.
    • CanIf leert synchron die softwareseitigen Sende-Warteschlangen (Reset transmit queue()). Verhindert das Re-Transmittieren veralteter L-PDUs nach Re-Initialisierung/Neustart des Controllers.
  5. Upper-Layer-Benachrichtigung: CanIf delegiert das Ereignis synchron an den konfigurierten Callback <User_ControllerBusOff>(ControllerId).
  6. Return-Pfad: Synchroner Rücksprung über alle Schichten bis zur Terminierung des ISR- bzw. Polling-Kontexts.

4. Normative Relevanz & Entwickler-Hinweise

  • Ausführungskontext (ISR vs. Task): Ist CanBusoffProcessing auf INTERRUPT konfiguriert, wird die gesamte Benachrichtigungskette (Can → CanIf → CanSM) im Interrupt-Kontext ausgeführt. <User_ControllerBusOff> darf daher weder blockieren noch zeitkritische Operationen ausführen. Bei POLLING läuft die Kaskade im Kontext von Can_MainFunction_BusOff().
  • Bus-Off-Recovery-Trigger: Der Callback startet in der CanSM den normativen Bus-Off-Recovery-Zustandsautomaten (BOR-Algorithmus mit schnellen/langsamen Recovery-Timern T_BOR_1 / T_BOR_2).
  • Queue-Verhalten & Datenverlust: Durch Reset transmit queue() werden alle im CanIf gepufferten Tx-PDUs unwiderruflich verworfen (CanIfPublicTxBuffering == TRUE). Höhere Layer (PduR, Com) erhalten keine explizite Cancellation-Benachrichtigung und müssen Timeouts/Re-Transmissionen über Com-Deadline-Monitoring abfangen.
  • Konfigurationsparameter:
    • CanIfDispatchUserCtrlBusOffUL: Konfiguration des Zielmoduls (Standard: CAN_SM, alternativ CDD).
    • CanIfDispatchUserCtrlBusOffName: Spezifischer Funktionsbezeichner des Callbacks.

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

R4.3.1 → R18-10_R4.4.0_R1.5.0 redaktionell Nachfolger: FIG-017ad7c30d29599c
  • Lifeline «interface» CanIf_User_Cbk: Stereotyp «interface» wurde entfernt (Bezeichnung nun CanIf_User_Cbk).

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«module» | CanIf | «Peripheral» | CanController | «module» | Can | «interface» | CanIf_User_Cbk | Transmit queues being reset to avoid transmission of old L-PDUs after CAN controller restart | BusOff Detection() | Set CAN Controller to STOPPED mode, if necessary() | Set CAN Controller to STOPPED mode, if necessary() | CanIf_ControllerBusOff(uint8) | Change to CAN_CS_STOPPED() | Reset transmit queue() <User_ControllerBusOff>(uint8) | <User_ControllerBusOff>() | CanIf_ControllerBusOff() | BusOff Detection()

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R4.3.1 AUTOSAR_SWS_CANInterface S. 147 9.12 Figure 9.12: BusOff notification