AUTOSAR_CP_SWS_PDURouter
FIG-e8a3854ac39b4a18
852 × 986 px
1 Release(s)
Figure 9.15: TP PDU On-The-Fly Gatewaying
SHA-256 Inhalts-Fingerabdruck:
e8a3854ac39b4a1839a43e8c3baad46512abb27fc647bb5931f313963d002f27
✦
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
- Diagrammtyp: UML-Sequenzdiagramm (Interaktionsdiagramm) gemäß AUTOSAR-Modellierungskonventionen.
- Funktionale Einordnung: AUTOSAR Classic Platform (CP R23-11), PDU Router (
PduR), Kapitel Singlecast Gateway TP I-PDU. - Technischer Zweck: Spezifikation des ereignis- und schwellenwertgesteuerten „On-The-Fly“-Routings segmentierter Transportprotokoll-PDUs (TP I-PDUs) zwischen zwei CAN-Netzwerken (CAN1 → CAN2) über ein geteiltes Ringpuffer-/FIFO-Prinzip im PduR, ohne dass die vollständige Nachricht vor Beginn der Weitersendung im RAM zwischengespeichert werden muss (Streaming/Cut-through-Verhalten zur Latenz- und Pufferoptimierung gegenüber Store-and-Forward).
2. Komponenten, Entitäten & Schnittstellen
- Beteiligte BSW-Module (Lifelines):
«module» PduR: Vermittlerinstanz auf System-/Kommunikationsebene; verwaltet Routing-Tabellen, Pufferallokation (PduRTpThreshold) und Zwischenkopieren von Nutzdaten (copy data()).«module» CanTp: Unterlagerte Transportprotokoll-Schicht (LoTp = Lower Layer TP). Im Diagramm aggregiert dargestellt; fungiert rollenbasiert sowohl als RX-LoTp (Empfang der Segmente von CAN1) als auch als TX-LoTp (Segmentierung und Aussenden auf CAN2).
- Schnittstellen & API-Signaturen:
- RX-Pfad (LoTp → PduR):
PduR_<User:LoTp>StartOfReception(id, *info, TpSduLength, *bufferSizePtr)→BufReq_ReturnType: Initialisierung des Empfangs und Abfrage/Reservierung des internen Puffers.PduR_<User:LoTp>CopyRxData(id, *info, *bufferSizePtr)→BufReq_ReturnType: Bereitstellung empfangener Nutzdatenpakete durch CanTp an den PduR.PduR_<User:LoTp>RxIndication(id, result)→void/Std_ReturnType: Signalisierung des vollständigen Empfangs der Gesamt-N-PDU auf CAN1.
- TX-Pfad (PduR → LoTp & LoTp → PduR):
CanTp_Transmit(id, *info)→Std_ReturnType: Anstoß der Weitersendung auf CAN2 durch den PduR nach Erreichen des Schwellenwerts.PduR_<User:LoTp>CopyTxData(id, *info, *retry, *availableDataPtr)→BufReq_ReturnType: Abfrage von Sendedaten durch CanTp während der Übertragung auf CAN2.PduR_<User:LoTp>TxConfirmation(id, result)→void/Std_ReturnType: Bestätigung des vollständigen Sendens auf CAN2.
- Interne Operationen:
copy data(): Synchrones Schreiben/Umkopieren von Nutzdaten aus dem RX-Buffer in den PduR-Gateway-Puffer.
- RX-Pfad (LoTp → PduR):
3. Dynamisches Verhalten & Sequenzablauf
- Empfangsstart (CAN1):
- CanTp signalisiert dem PduR den Empfang einer segmentierten PDU (First Frame) via
PduR_<User:LoTp>StartOfReception. - PduR allokiert den Pufferbereich und gibt
BUFREQ_OKsamt verfügbarer Puffergröße zurück.
- CanTp signalisiert dem PduR den Empfang einer segmentierten PDU (First Frame) via
- Dateneingang & Schwellenwert-Auslösung:
- CanTp liefert empfangene Daten via
PduR_<User:LoTp>CopyRxData. - PduR führt intern
copy data()in den Gateway-Ringpuffer aus. - Trigger: Sobald die im Puffer akkumulierte Datenmenge den konfigurierten Schwellenwert (
PduRTpThreshold) erreicht, triggert der PduR asynchron die Sendeseite auf CAN2 überCanTp_Transmit.
- CanTp liefert empfangene Daten via
- Paralleles Streaming (Interleaved RX/TX):
- CanTp fordert für die Übertragung auf CAN2 Daten via
PduR_<User:LoTp>CopyTxDataan. - Gleichzeitig/iterativ fließen weitere RX-Segmente von CAN1 über
PduR_<User:LoTp>CopyRxDatanach. PduRgleicht die Datennachfrage der Sendeseite mit dem Zufluss der Empfangsseite ab.
- CanTp fordert für die Übertragung auf CAN2 Daten via
- Empfangsabschluss (CAN1):
- Nach dem letzten Datenblock via
PduR_<User:LoTp>CopyRxDatameldet CanTp das vollständige Empfangsende überPduR_<User:LoTp>RxIndication.
- Nach dem letzten Datenblock via
- Sendeabschluss (CAN2):
- CanTp zieht die letzten verbleibenden Daten über
PduR_<User:LoTp>CopyTxDataab. - Nach erfolgreicher Übertragung aller Segmente auf dem Bus bestätigt CanTp den Abschluss via
PduR_<User:LoTp>TxConfirmation. - PduR gibt den allokierten TP-Puffer wieder frei.
- CanTp zieht die letzten verbleibenden Daten über
4. Normative Relevanz & Entwickler-Hinweise
- Puffer-Dimensionierung & Konfiguration (
PduRTpThreshold):- Der Schwellenwert
PduRTpThresholdbestimmt die minimale Bytezahl, die im PduR gepuffert sein muss, bevorCanTp_Transmitaufgerufen wird. - Vorsicht bei Jitter/Baudraten-Diskrepanzen: Ist CAN2 schneller als CAN1 (z. B. CAN-FD mit 5 Mbit/s zu klassischem CAN mit 500 kbit/s), droht ein Pufferunterlauf (Buffer Underrun). In diesem Fall liefert
PduR_<User:LoTp>CopyTxDataden StatusBUFREQ_E_BUSY, was CanTp-seitig zum Abbruch der Übertragung führen kann, falls kein Tx-Retry konfiguriert/unterstützt wird.
- Der Schwellenwert
- Reentrancy & Kontexttrennung:
- Beide Aufrufpfade (
CopyRxDataundCopyTxData) laufen häufig in unterschiedlichen Interrupt- oder Task-Kontexten (z. B. CanTp-MainFunctions verschiedener CAN-Controller/Channels). Der PduR-Routingpuffer erfordert thread-sichere Verwaltung (Critical Sections / exklusive Bereiche bei Puffer-Pointer-Updates).
- Beide Aufrufpfade (
- Fehlerbehandlung:
- Scheitert der RX-Pfad vorzeitig (z. B.
PduR_<User:LoTp>RxIndicationmitE_NOT_OK), muss der PduR die laufende Übertragung auf CAN2 geordnet abbrechen (Rückgabe vonBUFREQ_E_NOT_OKbeim nächstenCopyTxData). RetryInfoType: Der PduR unterstützt bei On-The-Fly Gatewaying standardmäßig keine Neubereitstellung bereits konsumierter/überschriebener Daten (TP_DATACONFvs.TP_DATARETRY).
- Scheitert der RX-Pfad vorzeitig (z. B.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.