AUTOSAR_SWS_CANTransportLayer
FIG-ee963690996240af
915 × 325 px
1 Release(s)
Figure 5: Tx and Rx Buffer locking It is assumed that upper layer module has locked the buffer when it returns a status BUFREQ_OK to a PduR_CanTpStartOfReception() call or when CanTp_Transmit() returns E_OK and shall keep the buffer locked until a confirmation or indication (PduR_CanTpTxConfirmation() or PduR_CanTpRxIndication() call) occurs. The following figure provides an example, to summarize the process of sending a frame, with a length of 50 bytes utilizing CAN 2.0 frames.
SHA-256 Inhalts-Fingerabdruck:
ee963690996240af980f3230bb113a22a91628979f7ca1028a01221e5c3c8176
✦
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
UML-Zustandsdiagramm (sm Buffer lock) der AUTOSAR Classic Platform (SWS CAN Transport Layer). Das Diagramm modelliert das protokollbezogene Sperrkonzept (Buffer Locking) für Sende- und Empfangspuffer zwischen dem CAN Transport Layer (CanTp) und der übergeordneten Schicht (typischerweise PduR bzw. DCM/COM) zur Sicherstellung der Datenkonsistenz während laufender Übertragungen.
2. Komponenten, Entitäten & Schnittstellen
- Entitäten & Zustandsmaschinen:
Transmit Buffer: Verwaltet den Sperrzustand des Sendepuffers der oberen Schicht mit den diskreten ZuständenLOCKundUNLOCK.Receiving Buffer: Verwaltet den Sperrzustand des Empfangspuffers der oberen Schicht mit den diskreten ZuständenLOCKundUNLOCK.
- Schnittstellen & Rückgabewerte:
CanTp_Transmit(): Sendeanforderung der oberen Schicht an CanTp; RückgabewertE_OK.PduR_CanTpTxConfirmation(): Callback von CanTp an die obere Schicht zur Bestätigung des Übertragungsendes.PduR_CanTpStartOfReception(): Benachrichtigung über Übertragungsbeginn von CanTp an die obere Schicht; RückgabewertBUFREQ_OK.PduR_CanTpRxIndication(): Callback von CanTp an die obere Schicht zur Signalisierung des Empfangsabschlusses.
3. Dynamisches Verhalten & Sequenzablauf
- Transmit Buffer:
- Ausgehend von
UNLOCKwechselt der Puffer nachLOCK, sobald der FunktionsaufrufCanTp_Transmit()mit dem StatusE_OKan das übergeordnete Modul zurückkehrt. - Der Übergang von
LOCKzurück nachUNLOCKwird durch den Aufruf vonPduR_CanTpTxConfirmation()durch das CanTp-Modul ausgelöst.
- Ausgehend von
- Receiving Buffer:
- Ausgehend von
UNLOCKwechselt der Puffer nachLOCK, wenn der AufrufPduR_CanTpStartOfReception()durch die obere Schicht mitBUFREQ_OKquittiert wird. - Der Übergang von
LOCKzurück nachUNLOCKerfolgt mit dem abschließenden Aufruf vonPduR_CanTpRxIndication()durch das CanTp-Modul.
- Ausgehend von
4. Normative Relevanz & Entwickler-Hinweise
- Normative Relevanz: Verbindliche Festlegung der Pufferhoheit und des Lebenszyklus von TP-Puffern. Ein Puffer im Zustand
LOCKdarf von der oberen Schicht bis zum Erhalt des korrespondierenden Abschluss-Callbacks weder überschrieben, freigegeben noch anderweitig allokiert werden. - Entwickler-Hinweise:
- Tritt bei
CanTp_Transmit()ein Fehler auf (Rückgabe ≠E_OK) oder antwortetPduR_CanTpStartOfReception()mit einem Fehlerstatus (z. B.BUFREQ_E_NOT_OK,BUFREQ_E_OVFL), verbleibt der jeweilige Puffer im ZustandUNLOCK. - Auch im Fehlerfall (z. B. Timeout N_Ar/N_As/N_Cr oder Verbindungsabbruch) muss CanTp zwingend
PduR_CanTpTxConfirmation()bzw.PduR_CanTpRxIndication()mit negativem Ergebnis aufrufen, um Deadlocks bzw. Pufferlecks in der oberen Schicht zu verhindern. - Das Diagramm abstrahiert die während des Zustands
LOCKiterativ erfolgenden Datenkopierzyklen (PduR_CanTpCopyTxDatabzw.PduR_CanTpCopyRxData).
- Tritt bei
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.