AUTOSAR_CP_SWS_CANTransportLayer
FIG-b67cd113aa539402
507 × 579 px
1 Release(s)
Figure 9.5: Large N-SDU Reception
SHA-256 Inhalts-Fingerabdruck:
b67cd113aa539402ec46e354f51409e3a6d1a478abc1728054024289e936e1e3
✦
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 mit kombinierten Fragmenten (
alt-Blöcke für Kontextaufteilung und Indikationspfade). - 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 Lower Layer (
LSduR/CanIf), Transport Layer (CanTp) und Upper Layer (PduR).
2. Komponenten, Entitäten & Schnittstellen
- Akteure / Module (
«module»):LSduR(L-SDU Router, abstrahierte untere Schicht, de factoCanIf/ CAN Interface): Treiberabstraktion für den L-PDU-Empfang und -Versand auf CAN-Ebene.CanTp(CAN Transport Layer): Zustandsbehaftetes Modul für Reassembly, Timer-Überwachung (N_Ar, N_Br, N_Cr) und Flusssteuerung (Flow Control).PduR(PDU Router): Obere Schicht zur Pufferbereitstellung, Weiterleitung an Zielmodule (Dcm, Com) und Empfangsabschlussmeldung.
- Schnittstellen & Callbacks:
- Rx-Pfad (Empfang):
CanTp_RxIndication(): Benachrichtigung über empfangene L-PDU vonLSduRanCanTp.PduR_CanTpStartOfReception(): Initiale Pufferanforderung bei First Frame (Übergabe der GesamtlängeTpSduLength, Rückgabe von Pufferstatus und verfügbarer Puffergröße viabufferSizePtr).PduR_CanTpCopyRxData(): Synchroner Datenübertragungsaufruf zum Kopieren empfangener Nutzdaten (FF- oder CF-Payload) in den PduR-Puffer.PduR_CanTpRxIndication(): Abschlussbenachrichtigung der N-SDU-Rezeption anPduR(StatusE_OKoder Fehlercode).
- Tx-Pfad (Flusssteuerung / Flow Control):
LSduR_CanTpTransmit(): Sendeauftrag für Flow Control Frames (FC) vonCanTpanLSduR.CanTp_TxConfirmation(): Sende-Quittierung für versendete FC-Frames vonLSduRanCanTp.
- Rx-Pfad (Empfang):
3. Dynamisches Verhalten & Sequenzablauf
Phase 1: Empfang First Frame (FF)
- Trigger:
LSduRmeldet via synchronem CallbackCanTp_RxIndication()das Eintreffen eines First Frame. - Pufferallokation:
CanTpfragt mitPduR_CanTpStartOfReception()einen Empfangspuffer an (TpSduLength). - Interne Zustandsprüfung:
CanTpevaluiert die Verbindungsannahme („Check connection Acceptance and prepare FC“) und triggert den FC-Versand („Activate Tx task“). - Initialer Payload-Transfer:
CanTpruftPduR_CanTpCopyRxData()auf, um die ersten Nutzdatenbytes (FF-Data) direkt in den PduR-Zielpuffer zu übertragen. - Rückkehr:
CanTp_RxIndication()kehrt synchron zuLSduRzurück.
Phase 2: Empfang Consecutive Frames (CF)
- Fragment
alt CanTp task:- Pfad
[interrupt](ISR-Kontext):LSduRruft pro eingetroffenem CFCanTp_RxIndication()auf.CanTpüberträgt die CF-Nutzdaten synchron viaPduR_CanTpCopyRxData()in den Zielpuffer („Copy CF data“).- Sub-Fragment
alt Indication:[normal case]: Datenübernahme erfolgreich; Reassembly läuft fort.[Buffer full]: Tritt Pufferengpass auf oder ist die Block Size (BS) erreicht, wird viaLSduR_CanTpTransmit()einFC(WAIT)abgesetzt („A Wait FC is sent if last CF on a block“).[Last CF received]: Letztes CF-Fragment eingetroffen.CanTpschließt die Rezeption ab und signalisiert dem PDU Router das vollständige Vorliegen der N-SDU viaPduR_CanTpRxIndication(E_OK).
- Pfad
[cyclic task](Polling / MainFunction-Kontext):- Entkoppelter oder zeitgesteuerter Versand von Flow-Control-PDUs via
LSduR_CanTpTransmit(). - Nach erfolgreicher Aussendung auf dem Bus erfolgt der Callback
CanTp_TxConfirmation()vonLSduRanCanTp.
- Entkoppelter oder zeitgesteuerter Versand von Flow-Control-PDUs via
- Pfad
4. Normative Relevanz & Entwickler-Hinweise
- Ausführungskontext & Reentrancy:
CanTp_RxIndication()und die darin synchron aufgerufenen PduR-APIs (StartOfReception,CopyRxData) laufen oft im ISR-Kontext des CAN-Controllers/CanIf. Diese Callbacks müssen absolut non-blocking implementiert sein (keine langen Locks, keine dynamischen Heap-Allokationen, kein Warten auf OS-Ressourcen).
- Pufferzustände (
BufReq_ReturnType):- Antwortet
PduR_CanTpStartOfReception()mitBUFREQ_E_OVFL, mussCanTpeinenFC(OVFLW)senden und die Verbindung abbrechen. - Antwortet
PduR_CanTpCopyRxData()mitBUFREQ_E_BUSY, mussCanTpFC(WAIT)generieren; dies darf maximalCanTpMaxWaitCountmal erfolgen, andernfalls greift Timeout N_Br bzw. N_Cr mit Abbruch (PduR_CanTpRxIndication(E_NOT_OK)).
- Antwortet
- Entkopplung Tx/Rx (Tasking Architecture):
- Das Diagramm verdeutlicht die Entkopplung: Der Empfang der Frames (FF/CF) erfolgt ereignisgesteuert (
[interrupt]), während die FC-Transmission entweder sofort oder im periodischen Task (CanTp_MainFunction(),[cyclic task]) abgewickelt wird.
- Das Diagramm verdeutlicht die Entkopplung: Der Empfang der Frames (FF/CF) erfolgt ereignisgesteuert (
- PduId-Mapping & Metadaten:
- Entwickler müssen sicherstellen, dass die in
PduR_CanTpStartOfReception()zurückgemeldete Puffergröße (bufferSizePtr) in nachfolgendenPduR_CanTpCopyRxData()-Aufrufen strikt eingehalten wird, um Pufferüberläufe im PduR-Zielmodul (z. B. Dcm-Rx-Buffer) auszuschließen.
- Entwickler müssen sicherstellen, dass die in
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.