DEENESPTFRRUARHIKOZHNL
AUTOSAR_CP_SWS_CANTransportLayer FIG-4cb3793aa1f42894 795 × 779 px 3 Release(s)

Figure 9.4: Transmit request of larger N-SDU

SHA-256 Inhalts-Fingerabdruck: 4cb3793aa1f42894385284538b7f76edae7a217ce94e2dc1a2f40471d1c07dd7
✦ 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) mit kombiniertem Fragment (loop).
  • Architektur-Kontext: AUTOSAR Classic Platform, Communication Stack (ComStack).
  • Funktionaler Zweck: Spezifikation des segmentierten Sendevorgangs für große N-SDUs (Network Service Data Units) über das Transportprotokoll-Modul CanTp gemäß ISO 15765-2. Das Diagramm modelliert das Zusammenspiel zwischen der übergeordneten Schicht (PDU Router), dem Transport-Layer und der Treiberabstraktion (CanIf) unter Nutzung des AUTOSAR-Pull-Buffer-Mechanismus.

2. Komponenten, Entitäten & Schnittstellen

Lebenslinien / Module
  • «interface»: Repräsentiert die übergeordnete Schicht (typischerweise PduR bzw. via PduR angebundene Module wie Dcm oder Com).
  • «module» :CanTp: AUTOSAR CAN Transport Layer. Verwaltet Verbindungszustände, Segmentierung (First Frame, Consecutive Frame), Flow-Control-Auswertung und Timing-Parameter (N_As, N_Bs, N_Cs).
  • «module» :CanIf: CAN Interface. Untere Schnittstellenschicht zur Abstraktion der CAN-Controller-Treiber (Can).
Schnittstellen & Datentypen
  • CanTp_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):
    • Initiale synchrone Sendeanforderung der N-SDU. Rückgabe: Std_ReturnType (E_OK / E_NOT_OK).
  • PduR_CanTpCopyTxData(PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr):
    • Pull-API zum inkrementellen Auslesen der Nutzdaten aus dem Quellpuffer der oberen Schicht. Rückgabe: BufReq_ReturnType.
  • CanIf_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):
    • Sendeanforderung einzelner L-PDUs (CAN-Frames) an das CAN-Interface.
  • CanTp_TxConfirmation(PduIdType TxPduId, Std_ReturnType result):
    • Asynchroner Callback des CanIf an CanTp zur Bestätigung der erfolgreichen Übertragung einer einzelnen L-PDU auf dem Bus.
  • PduR_CanTpTxConfirmation(PduIdType id, Std_ReturnType result):
    • Asynchroner Abschluss-Callback an die obere Schicht nach vollständiger (oder fehlgeschlagener) Übertragung der gesamten N-SDU.

3. Dynamisches Verhalten & Sequenzablauf

  1. Initialer Aufruf & Validierung (synchron):
    • Die obere Schicht ruft CanTp_Transmit auf.
    • CanTp führt interne Konsistenzprüfungen durch (Check inputs, z. B. PDU-ID-Gültigkeit, Puffer-Pointer, Kanalbelegung).
    • CanTp initialisiert den Tx-Kanal (Activate a Tx task) und kehrt synchron mit dem Annahmestatus (E_OK) zur oberen Schicht zurück. Der eigentliche Transfer wird asynchron angestoßen.
  2. Segmentierte Datenübertragung (loop N-SDU data transfer):
    • Bedingung: [Still data to be sent from this N-SDU] (wiederholt für FF und alle nachfolgenden CFs unter Berücksichtigung eventueller Flow-Control-Frames).
    • Datenabruf (Pull): CanTp fordert über PduR_CanTpCopyTxData das nächste Datensegment an. Die obere Schicht kopiert die Daten in den übergebenen SDU-Puffer (Copy segment data) und signalisiert BUFREQ_OK.
    • Frame-Versand: CanTp übergibt die segmentierte L-PDU via CanIf_Transmit an das CAN-Interface.
    • L-PDU-Quittierung: Nach Übertragung auf dem Bus meldet das CAN-Interface den Sendeerfolg über CanTp_TxConfirmation(..., E_OK). Dies treibt die interne Zustandsmaschine für das nächste Segment bzw. die STmin-Wartezeit an.
  3. Abschlussquittierung:
    • Sobald das letzte Segment erfolgreich übertragen und bestätigt wurde, benachrichtigt CanTp die übergeordnete Schicht via PduR_CanTpTxConfirmation(..., E_OK).
  4. Fehler- und Abbruchbedingungen:
    • Gibt PduR_CanTpCopyTxData BUFREQ_E_NOT_OK oder BUFREQ_E_BUSY zurück, bricht CanTp die Übertragung ab oder initiiert ein Retry-Verhalten (falls konfiguriert).
    • Bei Timeout-Verletzungen (N_As, N_Bs, N_Cs) oder negativem Rückgabewert in CanTp_TxConfirmation bricht CanTp die Session ab und ruft PduR_CanTpTxConfirmation(id, E_NOT_OK) auf.

4. Normative Relevanz & Entwickler-Hinweise

  • Puffer-Lebensdauer & Thread-Safety:
    • Der Sendeaufrufer (Com/Dcm) darf den Puffer nach Rückkehr von CanTp_Transmit() nicht freigeben oder überschreiben. Die Daten müssen persistent gehalten werden, bis PduR_CanTpTxConfirmation den Vorgang final abschließt.
  • Pull-Modell-Implementierung:
    • Da CanTp keinen vollständigen N-SDU-Zwischenspeicher vorhält (Zero-Reassembly-Overhead auf N-SDU-Ebene), muss die Implementierung von PduR_CanTpCopyTxData in der oberen Schicht reentrant und latenzarm sein, um Timeouts (N_Cs) zu vermeiden.
  • Kontext & Task-Zuordnung:
    • CanTp_Transmit wird im Task-Kontext der oberen Schicht ausgeführt.
    • CanIf_Transmit und die CopyTxData-Aufrufe erfolgen entweder im Kontext der zyklischen CanTp_MainFunction oder im Kontext der Tx-Task (Activate a Tx task).
    • CanTp_TxConfirmation wird typischerweise aus dem ISR-Kontext des CAN-Controllers oder dem Task-Kontext des CanIf aufgerufen; Zustandssperren (Critical Sections) im CanTp sind zwingend erforderlich.
  • BSW-Konfiguration (CanTp.epc):
    • Relevante Parameter: CanTpTxChannel, CanTpNas, CanTpNbs, CanTpNcs, CanTpTc (Transmit Cancellation Support) sowie das Mapping von CanTpTxNSduId auf CanIfTxPduId.

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

R21-11 → R22-11 keine inhaltliche Änderung Vorgänger: FIG-06f053040093877c

Keine inhaltlichen Änderungen erkennbar.

R23-11 → R24-11 normative Änderung Nachfolger: FIG-69d61ec8d9735468
  • «interface»: Linke Lebenslinie zu konkretem Modul «module» PduR geändert.
  • «module» :CanTp: Mittlere Lebenslinie von Instanznotation zu Moduldefinition «module» CanTp geändert.
  • «module» :CanIf: Rechte Lebenslinie durch «module» LSduR (Link-layer SDU Router) ersetzt.
  • CanIf_Transmit(PduIdType, const PduInfoType*): Sendeaufruf an die untere Schicht durch LSduR_CanTpTransmit() ersetzt.
  • Schnittstellensignaturen: Formale Parameter und Datentypen (PduIdType, const PduInfoType*, PduInfoType*, RetryInfoType*, PduLengthType*, Std_ReturnType) an allen Nachrichtenaufrufen (CanTp_Transmit, PduR_CanTpCopyTxData, CanTp_TxConfirmation, PduR_CanTpTxConfirmation) entfernt und durch parameterlose Aufrufe () ersetzt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Vorkommen in AUTOSAR-Releases (3)

Release Dokument Seite Nr. Bildunterschrift im Dokument
EXTERN AUTOSAR_SWS_CANTransportLayer S. 70 9.4 Figure 9.4: Transmit request of larger N-SDU
R22-11 AUTOSAR_SWS_CANTransportLayer S. 70 9.4 Figure 9.4: Transmit request of larger N-SDU
R23-11 AUTOSAR_CP_SWS_CANTransportLayer S. 70 9.4 Figure 9.4: Transmit request of larger N-SDU