AUTOSAR_SWS_CANTransportLayer
FIG-06f053040093877c
795 × 779 px
1 Release(s)
Figure 9.4: Transmit request of larger N-SDU
SHA-256 Inhalts-Fingerabdruck:
06f053040093877c9d881582ecd46cbc5a2654b927d4a99ff5fbf19e620b2aaf
✦
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
- 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
CanTpgemäß 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 (typischerweisePduRbzw. via PduR angebundene Module wieDcmoderCom).«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).
- Initiale synchrone Sendeanforderung der N-SDU. Rückgabe:
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.
- Pull-API zum inkrementellen Auslesen der Nutzdaten aus dem Quellpuffer der oberen Schicht. Rückgabe:
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
- Initialer Aufruf & Validierung (synchron):
- Die obere Schicht ruft
CanTp_Transmitauf. CanTpführt interne Konsistenzprüfungen durch (Check inputs, z. B. PDU-ID-Gültigkeit, Puffer-Pointer, Kanalbelegung).CanTpinitialisiert 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.
- Die obere Schicht ruft
- 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):
CanTpfordert überPduR_CanTpCopyTxDatadas nächste Datensegment an. Die obere Schicht kopiert die Daten in den übergebenen SDU-Puffer (Copy segment data) und signalisiertBUFREQ_OK. - Frame-Versand:
CanTpübergibt die segmentierte L-PDU viaCanIf_Transmitan 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.
- Bedingung:
- Abschlussquittierung:
- Sobald das letzte Segment erfolgreich übertragen und bestätigt wurde, benachrichtigt
CanTpdie übergeordnete Schicht viaPduR_CanTpTxConfirmation(..., E_OK).
- Sobald das letzte Segment erfolgreich übertragen und bestätigt wurde, benachrichtigt
- Fehler- und Abbruchbedingungen:
- Gibt
PduR_CanTpCopyTxDataBUFREQ_E_NOT_OKoderBUFREQ_E_BUSYzurück, brichtCanTpdie Übertragung ab oder initiiert ein Retry-Verhalten (falls konfiguriert). - Bei Timeout-Verletzungen (N_As, N_Bs, N_Cs) oder negativem Rückgabewert in
CanTp_TxConfirmationbrichtCanTpdie Session ab und ruftPduR_CanTpTxConfirmation(id, E_NOT_OK)auf.
- Gibt
4. Normative Relevanz & Entwickler-Hinweise
- Puffer-Lebensdauer & Thread-Safety:
- Der Sendeaufrufer (
Com/Dcm) darf den Puffer nach Rückkehr vonCanTp_Transmit()nicht freigeben oder überschreiben. Die Daten müssen persistent gehalten werden, bisPduR_CanTpTxConfirmationden Vorgang final abschließt.
- Der Sendeaufrufer (
- Pull-Modell-Implementierung:
- Da
CanTpkeinen vollständigen N-SDU-Zwischenspeicher vorhält (Zero-Reassembly-Overhead auf N-SDU-Ebene), muss die Implementierung vonPduR_CanTpCopyTxDatain der oberen Schicht reentrant und latenzarm sein, um Timeouts (N_Cs) zu vermeiden.
- Da
- Kontext & Task-Zuordnung:
CanTp_Transmitwird im Task-Kontext der oberen Schicht ausgeführt.CanIf_Transmitund dieCopyTxData-Aufrufe erfolgen entweder im Kontext der zyklischenCanTp_MainFunctionoder im Kontext der Tx-Task (Activate a Tx task).CanTp_TxConfirmationwird typischerweise aus dem ISR-Kontext des CAN-Controllers oder dem Task-Kontext desCanIfaufgerufen; Zustandssperren (Critical Sections) imCanTpsind zwingend erforderlich.
- BSW-Konfiguration (
CanTp.epc):- Relevante Parameter:
CanTpTxChannel,CanTpNas,CanTpNbs,CanTpNcs,CanTpTc(Transmit Cancellation Support) sowie das Mapping vonCanTpTxNSduIdaufCanIfTxPduId.
- Relevante Parameter:
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.