AUTOSAR_SWS_PDURouter
FIG-290ba619b8669e70
929 × 726 px
1 Release(s)
Figure 9.9: Dcm to CanTp PDU transmission
SHA-256 Inhalts-Fingerabdruck:
290ba619b8669e7089850255e6a4391fee797b2ce8018cdf8966ae19425785b6
✦
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 für AUTOSAR Classic Platform BSW).
- Technischer Zweck: Spezifikation des standardisierten AUTOSAR Transport-Protokoll-(TP)-Sendepfads für segmentierte I-PDUs zwischen einer oberen Service-Schicht (Dcm), der Vermittlungsschicht (PduR) und der busspezifischen Transportschicht (CanTp).
- Funktionale Einordnung: Dargestellt wird das On-Demand-Pull-Prinzip des AUTOSAR TP-Buffer-Managements. Die Datenhaltung verbleibt im Dcm; CanTp ruft Payload-Fragmente während der Übertragung (z. B. nach Erhalt eines Flow Control Frames) sukzessive ab, ohne dass PduR oder CanTp den gesamten diagnostischen Datensatz puffern müssen.
2. Komponenten, Entitäten & Schnittstellen
Module / Akteure («module»)
- Dcm (Diagnostic Communication Manager): Obere Schicht (Upper Layer TP-User). Stellt Diagnosedaten bereit und verwaltet den linearen TX-Puffer.
- PduR (PDU Router): Stateless/Passthrough-Router für TP-Verbindungen. Übersetzt modulübergreifende PDU-IDs (1:1-Routing zwischen oberer und unterer Schicht).
- CanTp (CAN Transport Layer): Untere Schicht (Lower Layer TP-Provider). Führt Segmentierung (ISO 15765-2), Flow-Control-Auswertung und Frame-Timing (N_As, N_Bs, N_Cs) durch.
Schnittstellen & Datentypen
- Trigger-Interface:
PduR_<User:Up>Transmit(id, info)(konkret instanziiert alsPduR_DcmTransmit): Initialer Sendeanstoß.CanTp_Transmit(id, info): Übergabe der Gesamtlänge (info->SduLength) an CanTp;info->SduDataPtrist hierbei typischerweiseNULL_PTR(da TP-Daten erst via CopyTxData gepuffert werden).- Return:
Std_ReturnType(E_OK/E_NOT_OK).
- Data-Provisioning-Interface (Streaming-Pull):
PduR_CanTpCopyTxData(...)→Dcm_CopyTxData(...):id:PduIdType(modulspezifisch gemappt).const PduInfoType*: Zielpuffer der CanTp (SduDataPtr) und angeforderte Segmentlänge (SduLength).RetryInfoType*: Steuerung für Segment-Wiederholungen (TP_DATACONF,TP_DATARETRY).PduLengthType*: Rückgabe der im Dcm verbleibenden Restdatenlänge.- Return:
BufReq_ReturnType(BUFREQ_OK,BUFREQ_E_BUSY,BUFREQ_E_NOT_OK).
- Confirmation-Interface:
PduR_CanTpTxConfirmation(id, result)→Dcm_TpTxConfirmation(id, result):result:Std_ReturnType(E_OKbei erfolgreicher Zustellung aller Frames inklusive Bestätigung,E_NOT_OKbei Timeout wie N_Ar/N_As-Verletzung oder abortiertem Flow Control).
3. Dynamisches Verhalten & Sequenzablauf
- Sendeinitiierung (Synchron):
- Dcm ruft synchron
PduR_<User:Up>Transmit()auf. - PduR mappt die Dcm-TX-PduId auf die Ziel-CanTp-PduId und ruft synchron
CanTp_Transmit()auf. - CanTp reserviert einen internen TX-Kanal (N-PDU-Verbindungskontext) und gibt sofort
E_OKsynchron über PduR an Dcm zurück.
- Dcm ruft synchron
- Segmentiertes Kopieren der Nutzdaten (Asynchron / Event-getrieben):
- Sobald CanTp sendebereit ist (z. B. nach Versand des First Frame [FF] und Empfang des Flow Control [FC] Continue-to-Send):
- CanTp ruft
PduR_CanTpCopyTxData()auf. - PduR leitet den Aufruf direkt an
Dcm_CopyTxData()weiter. - Dcm kopiert die angeforderte Bytezahl (
copy data()) in den von CanTp bereitgestellten Buffer und aktualisiert den Zeiger sowie die Restlänge (PduLengthType*). Dcm_CopyTxData()kehrt mitBUFREQ_OKzurück; PduR reicht dies an CanTp durch.- Dieser Schritt wiederholt sich zyklisch für jedes folgende Consecutive Frame (CF) bis zum vollständigen Transfer der PDU.
- Abschlussbestätigung (Asynchroner Callback):
- Nach erfolgreicher Übertragung des letzten Segments (und Erhalt der CAN-Treiber-Bestätigung) ruft CanTp
PduR_CanTpTxConfirmation()auf. - PduR leitet an
Dcm_TpTxConfirmation(PduId, E_OK)weiter. - Dcm gibt die Diagnose-TX-Session bzw. den internen Puffer frei.
- Nach erfolgreicher Übertragung des letzten Segments (und Erhalt der CAN-Treiber-Bestätigung) ruft CanTp
4. Normative Relevanz & Entwickler-Hinweise
- Pufferverwaltung & Reentrancy:
- Dcm muss den TX-Puffer zwischen
PduR_<User:Up>Transmit()undDcm_TpTxConfirmation()zwingend sperren; eine vorzeitige Modifikation korrumpiert die CAN-Frames. Dcm_CopyTxData()wird aus dem Kontext der CanTp (häufig Task- oder Interrupt-Ebene) aufgerufen. Die Implementierung muss reentrant sein und darf keine blockierenden Operationen enthalten.
- Dcm muss den TX-Puffer zwischen
- Fehlerbehandlung:
- Gibt
Dcm_CopyTxData()BUFREQ_E_BUSYzurück, muss CanTp den Übertragungsversuch entsprechend dem parametrierten Timeout pausieren. - Bei
BUFREQ_E_NOT_OKbricht CanTp die Übertragung sofort ab, sendet kein weiteres CF und signalisiertDcm_TpTxConfirmation(..., E_NOT_OK).
- Gibt
- Retry-Semantik (
RetryInfoType):- Dcm unterstützt im AUTOSAR-Standard in der Regel keine Datenwiederholung (
TP_DATARETRY). Der Parameter wird i. d. R. mitTpDataState = TP_DATACONFbetrieben.
- Dcm unterstützt im AUTOSAR-Standard in der Regel keine Datenwiederholung (
- Konfigurationsbindung (ARXML / BSW-Generierung):
- Im PduR muss ein
PduRRoutingPathmitPduRSrcPdu(Referenz auf Dcm) undPduRDestPdu(Referenz auf CanTp) definiert sein. - Das API-Mapping erfolgt über statischen Code/Makros (
PduR_CanTp.h,PduR_Dcm.h); PduR arbeitet als reine Zero-Overhead-Routing-Schicht ohne eigene TP-Payload-Pufferung.
- Im PduR muss ein
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.