AUTOSAR_CP_SWS_CANTransportLayer
FIG-02d50aafe45d8a64
986 × 1264 px
4 Release(s)
Figure 9.5: Large N-SDU Reception
SHA-256 Inhalts-Fingerabdruck:
02d50aafe45d8a647dd53575caa45592012bf2991830710f755198aee07c2695
✦
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
- Diagrammtyp: UML-Sequenzdiagramm mit kombinierten Fragmenten (
alt-Blöcke für die Ausführungskontextealt CanTp task[interrupt/cyclic task] und die Indikationspfadealt Indication[normal case/Buffer full/Last CF received]). - Funktionale Einordnung: AUTOSAR Classic Platform, Schicht der Kommunikationsdienste (Communication Services / Transport Layer), Spezifikation
AUTOSAR_CP_SWS_CANTransportLayer(ISO 15765-2). - Technischer Zweck: Spezifikation des standardisierten Ablaufs für den segmentierten Empfang einer großen N-SDU (Large N-SDU Reception) via First Frame (FF), Flow Control (FC) und Consecutive Frames (CF) im Zusammenspiel zwischen CAN Interface (
«module» CanIf), CAN Transport Layer («module» :CanTp) und oberer Schnittstelle («interface», de facto PDU Router / PduR).
2. Komponenten, Entitäten & Schnittstellen
- Akteure / Module:
«interface»: Schnittstelle der oberen Kommunikationsschicht (de facto PDU RouterPduR) zur Pufferallokation, Datenübernahme und Statusquittierung.«module» :CanTp: Instanz des CAN Transport Layers (CanTp), zuständig für Segmentierung, Reassembly, Timer-Überwachung (N_Ar, N_Br, N_Cr) und Flusssteuerung (Flow Control).«module» CanIf: CAN Interface, untere Schicht zur Treiberabstraktion für L-PDU-Empfang und L-PDU-Versand auf CAN-Ebene.
- Schnittstellen & Callbacks (mit Parametern und Datentypen):
- Rx-Pfad (Empfang & Reassembly):
CanTp_RxIndication(PduIdType, const PduInfoType*): Benachrichtigung über das Eintreffen einer L-PDU (FF oder CF) vonCanIfan:CanTp.PduR_CanTpStartOfReception(PduIdType, PduLengthType, PduLengthType*): Initiale Pufferanforderung bei First Frame von:CanTpan«interface»(Übergabe der PduId, GesamtlängeTpSduLengthund Zeiger auf verfügbare PuffergrößebufferSizePtr).PduR_CanTpCopyRxData(BufReq_ReturnType, PduIdType, PduInfoType*, PduLengthType*): Synchroner Callback beim First-Frame-Empfang zur Übergabe der ersten Nutzdatenbytes in den Zielpuffer (im Diagramm mit vorangestelltem Rückgabetyp annotiert).PduR_CanTpCopyRxData(PduIdType, PduInfoType*, PduLengthType*): Synchroner Callback beim Consecutive-Frame-Empfang zur sequentiellen Nutzdatenübernahme.PduR_CanTpRxIndication(PduIdType, Std_ReturnType): Abschlussbenachrichtigung der N-SDU-Rezeption von:CanTpan«interface»mit Statusquittierung.
- Tx-Pfad (Flusssteuerung / Flow Control):
CanIf_Transmit(PduIdType, const PduInfoType*): Sendeanforderung für Flow Control Frames (FC) von:CanTpanCanIf(im Zweig[Buffer full]oder im zyklischen Task).CanTp_TxConfirmation(PduIdType, Std_ReturnType): Sende-Bestätigung vonCanIfan:CanTpnach erfolgreicher Übertragung des FC-Frames auf dem Bus.
- Rx-Pfad (Empfang & Reassembly):
3. Dynamisches Verhalten & Sequenzablauf
Phase 1: Empfang First Frame (FF)
- Trigger:
CanIfmeldet über den synchronen CallbackCanTp_RxIndication(PduIdType, const PduInfoType*)das Eintreffen eines First Frame an:CanTp. - Pufferallokation:
:CanTpfordert mitPduR_CanTpStartOfReception(PduIdType, PduLengthType, PduLengthType*)an«interface»einen Empfangspuffer unter Angabe der Gesamtlänge an. - Interne Zustandsprüfung:
:CanTpevaluiert die Verbindungsannahme („Check connection acceptance and prepare FC.“) und aktiviert den Sende-Task („Activate Tx task.“). - Initialer Payload-Transfer:
:CanTpruftPduR_CanTpCopyRxData(BufReq_ReturnType, PduIdType, PduInfoType*, PduLengthType*)auf, um die ersten Nutzdaten (FF-Data) direkt in den oberen Puffer zu kopieren („Copy FF data.“). - Rückkehr:
CanTp_RxIndication()kehrt synchron zuCanIfzurück.
Phase 2: Empfang Consecutive Frames (CF)
- Kombiniertes Fragment
alt CanTp task:- Pfad
[interrupt](ISR-Kontext):CanIfsignalisiert pro eingetroffenem CFCanTp_RxIndication(PduIdType, const PduInfoType*).:CanTpkopiert die CF-Nutzdaten synchron viaPduR_CanTpCopyRxData(PduIdType, PduInfoType*, PduLengthType*)in den Zielpuffer („Copy CF data.“).- Sub-Fragment
alt Indication:[normal case]: Reguläre Datenübernahme erfolgreich; der Reassembly-Vorgang läuft fort.[Buffer full]: Bei Pufferengpass oder Erreichen der Block Size (BS) wird viaCanIf_Transmit(PduIdType, const PduInfoType*)ein Wait Flow Control Frame abgesetzt („A Wait FC is sent if last CF on a block.“).[Last CF received]: Nach Empfang des letzten Consecutive Frame schließt:CanTpdie Rezeption ab und signalisiert dem PDU Router das vollständige Vorliegen der N-SDU viaPduR_CanTpRxIndication(PduIdType, Std_ReturnType).
- Synchroner Rücksprung zu
CanIf.
- Pfad
[cyclic task](Periodischer Task /CanTp_MainFunction):- Flusssteuerungs-Frames (
FC) werden entkoppelt überCanIf_Transmit(PduIdType, const PduInfoType*)an das CAN Interface übergeben. - Nach erfolgreicher Aussendung quittiert
CanIfdie Übertragung viaCanTp_TxConfirmation(PduIdType, Std_ReturnType)an:CanTp.
- Flusssteuerungs-Frames (
- Pfad
4. Normative Relevanz & Entwickler-Hinweise
- Ausführungskontext & Echtzeitanforderungen:
CanTp_RxIndication()und die darin synchron aufgerufenen PduR-APIs (StartOfReception,CopyRxData) laufen im Interrupt-Kontext des CAN-Treibers bzw.CanIf. Entwickler müssen diese Callbacks strikt nicht-blockierend implementieren (keine Mutex-Locks, keine dynamischen Heap-Allokationen, minimale Rechenzeit).
- Puffer- und Flusssteuerungsverhalten:
- Die Flow-Control-Logik wird direkt an
CanIf_Transmit()übergeben. Bei Pufferengpässen ([Buffer full]) muss einFC(WAIT)generiert werden; die Anzahl aufeinanderfolgender Wait-Frames ist durchCanTpMaxWaitCountlimitiert, bevor Timeout N_Br bzw. N_Cr mit Verbindungsabbruch greift.
- Die Flow-Control-Logik wird direkt an
- Task-Entkopplung:
- Das Diagramm trennt explizit zwischen ereignisgesteuertem Empfang (
[interrupt]) und periodischer Verarbeitung ([cyclic task],CanTp_MainFunction). Dies ermöglicht es, das Senden von FC-Frames aus dem Interrupt- in den Task-Kontext zu verlagern.
- Das Diagramm trennt explizit zwischen ereignisgesteuertem Empfang (
- Spezifikationsunterschiede zu Folge-Releases:
- Im Release R23-11 sind die Funktionsaufrufe noch mit konkreten AUTOSAR-Parametern (
PduIdType,PduInfoType,PduLengthType,BufReq_ReturnType,Std_ReturnType) und die untere Schicht konkret alsCanIfausgewiesen. In nachfolgenden Releases wurde dies zuLSduRabstrahiert und die Parametersignaturen wurden aus der UML-Darstellung entfernt.
- Im Release R23-11 sind die Funktionsaufrufe noch mit konkreten AUTOSAR-Parametern (
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.