DEENESPTFRRUARHIKOZHNL
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 facto CanIf / 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 von LSduR an CanTp.
      • PduR_CanTpStartOfReception(): Initiale Pufferanforderung bei First Frame (Übergabe der Gesamtlänge TpSduLength, Rückgabe von Pufferstatus und verfügbarer Puffergröße via bufferSizePtr).
      • PduR_CanTpCopyRxData(): Synchroner Datenübertragungsaufruf zum Kopieren empfangener Nutzdaten (FF- oder CF-Payload) in den PduR-Puffer.
      • PduR_CanTpRxIndication(): Abschlussbenachrichtigung der N-SDU-Rezeption an PduR (Status E_OK oder Fehlercode).
    • Tx-Pfad (Flusssteuerung / Flow Control):
      • LSduR_CanTpTransmit(): Sendeauftrag für Flow Control Frames (FC) von CanTp an LSduR.
      • CanTp_TxConfirmation(): Sende-Quittierung für versendete FC-Frames von LSduR an CanTp.

3. Dynamisches Verhalten & Sequenzablauf

Phase 1: Empfang First Frame (FF)
  1. Trigger: LSduR meldet via synchronem Callback CanTp_RxIndication() das Eintreffen eines First Frame.
  2. Pufferallokation: CanTp fragt mit PduR_CanTpStartOfReception() einen Empfangspuffer an (TpSduLength).
  3. Interne Zustandsprüfung: CanTp evaluiert die Verbindungsannahme („Check connection Acceptance and prepare FC“) und triggert den FC-Versand („Activate Tx task“).
  4. Initialer Payload-Transfer: CanTp ruft PduR_CanTpCopyRxData() auf, um die ersten Nutzdatenbytes (FF-Data) direkt in den PduR-Zielpuffer zu übertragen.
  5. Rückkehr: CanTp_RxIndication() kehrt synchron zu LSduR zurück.
Phase 2: Empfang Consecutive Frames (CF)
  • Fragment alt CanTp task:
    • Pfad [interrupt] (ISR-Kontext):
      1. LSduR ruft pro eingetroffenem CF CanTp_RxIndication() auf.
      2. CanTp überträgt die CF-Nutzdaten synchron via PduR_CanTpCopyRxData() in den Zielpuffer („Copy CF data“).
      3. 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 via LSduR_CanTpTransmit() ein FC(WAIT) abgesetzt („A Wait FC is sent if last CF on a block“).
        • [Last CF received]: Letztes CF-Fragment eingetroffen. CanTp schließt die Rezeption ab und signalisiert dem PDU Router das vollständige Vorliegen der N-SDU via PduR_CanTpRxIndication(E_OK).
    • Pfad [cyclic task] (Polling / MainFunction-Kontext):
      1. Entkoppelter oder zeitgesteuerter Versand von Flow-Control-PDUs via LSduR_CanTpTransmit().
      2. Nach erfolgreicher Aussendung auf dem Bus erfolgt der Callback CanTp_TxConfirmation() von LSduR an CanTp.

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() mit BUFREQ_E_OVFL, muss CanTp einen FC(OVFLW) senden und die Verbindung abbrechen.
    • Antwortet PduR_CanTpCopyRxData() mit BUFREQ_E_BUSY, muss CanTp FC(WAIT) generieren; dies darf maximal CanTpMaxWaitCount mal erfolgen, andernfalls greift Timeout N_Br bzw. N_Cr mit Abbruch (PduR_CanTpRxIndication(E_NOT_OK)).
  • 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.
  • PduId-Mapping & Metadaten:
    • Entwickler müssen sicherstellen, dass die in PduR_CanTpStartOfReception() zurückgemeldete Puffergröße (bufferSizePtr) in nachfolgenden PduR_CanTpCopyRxData()-Aufrufen strikt eingehalten wird, um Pufferüberläufe im PduR-Zielmodul (z. B. Dcm-Rx-Buffer) auszuschließen.

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

R23-11 → R24-11 normative Änderung Vorgänger: FIG-02d50aafe45d8a64
  • «interface»: Linke Lebenslinie zu konkretem Modul «module» PduR geändert.
  • «module» :CanTp: Mittlere Lebenslinie von Instanznotation zu Moduldefinition «module» CanTp umbenannt.
  • «module» CanIf: Rechte Lebenslinie zu abstrahierter Schicht «module» LSduR umbenannt.
  • CanIf_Transmit(): Aufruf durch LSduR_CanTpTransmit() ersetzt (sowohl in [Buffer full] als auch in [cyclic task]).
  • Schnittstellensignaturen: Datentypen und Parameter (PduIdType, const PduInfoType*, PduLengthType, BufReq_ReturnType, Std_ReturnType) an allen Nachrichtenaufrufen (CanTp_RxIndication, PduR_CanTpStartOfReception, PduR_CanTpCopyRxData, PduR_CanTpRxIndication, CanTp_TxConfirmation) entfernt und durch parameterlose Aufrufe () ersetzt.
R24-11 → R25-11 keine inhaltliche Änderung Nachfolger: FIG-dd368517a0572710

Keine inhaltlichen Änderungen erkennbar.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«module» | LSduR | «module» | CanTp | «module» | PduR | alt CanTp task | [interrupt] | [cyclic task] |            |    |    |  |   |     | alt Indication | [normal case] | [Buffer full] | [Last CF received] |    |    |    |  |  |   |  |   |  |   |  |  |  |       |   |  |    |  |  |     | LSduR_CanTpTransmit() | CanTp_RxIndication() | PduR_CanTpCopyRxData() | PduR_CanTpCopyRxData() | CanTp_RxIndication() | PduR_CanTpStartOfReception() | CanTp_TxConfirmation() | LSduR_CanTpTransmit() | PduR_CanTpRxIndication()

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R24-11 AUTOSAR_CP_SWS_CANTransportLayer S. 78 9.5 Figure 9.5: Large N-SDU Reception