DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_PDURouter FIG-8fa3bdc35ae652bb 927 × 846 px 3 Release(s)

Figure 9.13: Gateway of I-PDU from CAN to LIN

SHA-256 Inhalts-Fingerabdruck: 8fa3bdc35ae652bbbd962c0c5718ecfbdeca20c539c0c16085606f3d413b5c90
✦ 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 (Interaktionsdiagramm mit bedingtem Ausführungsrahmen / alt-Kombinationsfragment).
  • Technischer Zweck: Spezifikation des Gateway-Mechanismus für I-PDUs zwischen ereignisgesteuerten Kommunikationsschnittstellen (hier: CanIf) und zeitgesteuerten bzw. abfragebasierten Schnittstellen (hier: LinIf, übertragbar auf FrIf / FlexRay) im AUTOSAR Classic Platform Communication Stack (PduR, SWS PDU Router).
  • Funktionale Einordnung: Entkopplung von Empfang und Weitersenden über PDU-Pufferung (FIFO/Single-Buffer) im PduR unter Verwendung des AUTOSAR TriggerTransmit-Prinzips (Pull-Mechanismus durch den LIN-Master-Scheduler anstelle von direktem Push bei Übertragung).

2. Komponenten, Entitäten & Schnittstellen

Beteiligte BSW-Module (Akteure mit Stereotyp «module»):
  • PduR (PDU Router): Zentraler Vermittlungsknoten; übernimmt PDU-Identifikation, Routing-Tabellen-Auflösung, Pufferverwaltung (FIFO/Queue) und Datenduplikation/-bereitstellung.
  • CanIf (CAN Interface): Untere Schicht der Quellseite (Lower Layer Producer); meldet asynchron eingegangene CAN-I-PDUs.
  • LinIf (LIN Interface): Untere Schicht der Zielseite (Lower Layer Consumer); agiert im LIN-Cluster als Master und fordert Daten gemäß Schedule-Table an.
Schnittstellen & Datentypen (API-Signaturen):
  • PduR_<User:Lo>RxIndication(PduIdType RxPduId, const PduInfoType* PduInfoPtr):
    • Callback von CanIf an PduR zur Übergabe der empfangenen I-PDU.
  • LinIf_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr) (im Diagramm inkl. Return-Typ dargestellt):
    • Steueraufruf zur Vormerkung eines sporadischen LIN-Frames.
  • PduR_<User:Lo>TriggerTransmit(PduIdType TxPduId, PduInfoType* PduInfoPtr):
    • Abruf-Callback von LinIf an PduR, um Nutzdaten synchron in den LIN-Treiberpuffer bereitzustellen.
  • PduR_<User:Lo>TxConfirmation(PduIdType TxPduId, Std_ReturnType result):
    • Bestätigungs-Callback nach erfolgreichem/fehlerhaftem Sendevorgang auf dem LIN-Bus.
  • Datenstrukturen:
    • PduInfoType: Enthält Zeiger auf SDU-Daten (SduDataPtr), Metadaten (MetaDataPtr) und SDU-Länge (SduLength).
    • PduIdType: Ganzzahlige ID zur Identifikation der Quell-/Ziel-I-PDU.

3. Dynamisches Verhalten & Sequenzablauf

  1. Empfang & Pufferung (Asynchroner Empfangspfad):
    • CanIf signalisiert den Empfang via PduR_<User:Lo>RxIndication(...).
    • PduR speichert die I-PDU intern (buffer IPDU()). Die Pufferung kann als FIFO für mehrere I-PDUs konfiguriert sein (PduRQueueDepth > 1).
  2. Bedingte Signalisierung (alt-Block):
    • Zweig [if LIN sporadic frame]: PduR triggert LinIf_Transmit(...). LinIf setzt intern ein Sendeflag (flag frame for transmission()), damit der LIN-Master den Frame im nächsten passenden Slot der Schedule-Table einplant. Synchroner Rücksprung.
    • Zweig [otherwise] (Unconditional / Event-triggered Frames): Keine explizite Benachrichtigung von LinIf erforderlich; der Schedule-Ablauf im LIN-Master ist rein deterministisch vorgegeben.
    • PduR schließt die Bearbeitung von RxIndication ab und kehrt zu CanIf zurück.
  3. Datenauslese via Pull-Prinzip (Zeitgesteuerter Sendepfad):
    • Erreicht der LIN-Scheduler den entsprechenden Frame-Slot, fordert LinIf die aktuellen Nutzdaten via PduR_<User:Lo>TriggerTransmit(...) an.
    • PduR kopiert die älteste gepufferte I-PDU (copy data(), FIFO-Prinzip: „Get the oldest IPDU“) in den bereitgestellten Puffer von PduInfoPtr.
  4. Sendeabschluss:
    • Nach physischem Bus-Versand meldet LinIf den Status synchron oder asynchron via PduR_<User:Lo>TxConfirmation(...) an den PduR.
    • PduR quittiert und gibt den entsprechenden Pufferplatz frei.

4. Normative Relevanz & Entwickler-Hinweise

  • PduR-Pufferkonfiguration (PduRBuffer / PduRQueueDepth):
    • Für das Gatewaying CAN → LIN ist im PduR zwingend ein Puffer erforderlich, da LinIf_Transmit die Nutzdaten nicht kopiert, sondern das Versenden erst im späteren TriggerTransmit-Kontext stattfindet.
    • Bei PduRQueueDepth = 1 überschreiben neu eintreffende CAN-Nachrichten ältere Daten (Data Overwrite), sofern diese bis dahin nicht vom LIN-Scheduler abgerufen wurden.
    • Bei FIFO-Nutzung (PduRQueueDepth > 1) muss auf Pufferüberlauf (BUFREQ_E_OVFL) geachtet und eine Overflow-Strategie konfiguriert werden.
  • Reentrant- & Task-Kontext-Anforderungen:
    • PduR_<User:Lo>RxIndication läuft im Kontext des CAN-Interrupts bzw. der Can_MainFunction_Read / CanIf-Task.
    • PduR_<User:Lo>TriggerTransmit wird im Schedule-Kontext der LinIf_MainFunction aufgerufen.
    • Kritischer Bereich (Exclusive Area): Der PduR-Puffer muss threadsicher vor konkurrierendem Zugriff zwischen RxIndication (Write/Enqueue) und TriggerTransmit (Read/Dequeue) geschützt werden.
  • Return-Werte & Fehlerbehandlung bei TriggerTransmit:
    • Ist der PduR-Puffer leer (keine Daten empfangen), gibt PduR_<User:Lo>TriggerTransmit normativ E_NOT_OK zurück; LinIf bricht den Sendevorgang für diesen Slot ab oder sendet Null-Bytes (gemäß LIN-Spezifikation).
  • Portabilität des Musters:
    • Das dargestellte Interaktionsmuster gilt identisch für Gateways in Richtung FlexRay Interface (FrIf), sofern dort I-PDUs ebenfalls über FrIf_TriggerTransmit bedient werden.

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

R22-11 → R23-11 keine inhaltliche Änderung Nachfolger: FIG-b1f31af7ec23ca8a

Keine inhaltlichen Änderungen erkennbar.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«module» | PduR | «module» | LinIf | «module» | CanIf |       |  |  |  |   |  |  |  |  |   |      |   |  |  |  |  |  |  |    |  |  |    |  |   |   |  |  |  |     |  |  |  |     |     |   |  |  |   |  |  |  |  |  |  |  |  |  |     | !     |    |   |  |  |  |   |  |       |      | " |  |  |  |      | #  $ |  |  |    |  | % |  |  |   |   | & |  | alt | [if LIN sporadic frame] | [otherwise] | buffer IPDU() | PduR_<User:Lo>TxConfirmation(PduIdType, Std_ReturnType) | PduR_<User:Lo>Triggertransmit(PduIdType, PduInfoType *) | PduR_<User:Lo>RxIndication(PduIdType, const PduInfoType*) | LinIf_Transmit(Std_ReturnType, PduIdType, const PduInfoType*) | copy data() | flag frame for transmission()

Begleitender Spezifikationstext:

Specification of PDU Router AUTOSAR CP R22-11 9.3.3 Gateway from CAN to LIN Following Figure 9.13 shows how an I-PDU is gatewayed from CAN to LIN, using trigger transmit (LIN sporadic frame and all other LIN frame types). «module» PduR «module» LinIf «module» CanIf      

Vorkommen in AUTOSAR-Releases (3)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R20-11 AUTOSAR_SWS_PDURouter S. 86 9.13 Figure 9.13: Gateway of I-PDU from CAN to LIN
R21-11 AUTOSAR_SWS_PDURouter S. 95 9.13 Figure 9.13: Gateway of I-PDU from CAN to LIN
R22-11 AUTOSAR_SWS_PDURouter S. 98 9.13 Figure 9.13: Gateway of I-PDU from CAN to LIN