DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_TimeSyncOverEthernet FIG-cbcadeed7ab76217 872 × 1227 px 1 Release(s)

Figure 7: EthTSyn Egress Timestamping

SHA-256 Inhalts-Fingerabdruck: cbcadeed7ab762179ac925b0a25a1bf28f76bd2e6906166478447d436cbdc8a1
✦ 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-Sequenzdiagramm zur Darstellung des Egress-Timestamping-Ablaufs in der AUTOSAR Classic Platform (SWS TimeSyncOverEthernet). Das Diagramm spezifiziert die Interaktionen bei der Sendezeitstempelung (Hardware- und Software-basiert) im Rahmen der Ethernet-Zeitsynchronisation (gPTP / IEEE 802.1AS) entlang des Protokollstapels vom Ethernet-Treiber über das Ethernet-Interface und EthTSyn bis zur Synchronized Time-Base Manager (StbM).

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Komponenten (Stereotyp «module»):

  • StbM: Synchronized Time-Base Manager
  • EthTSyn: Time Synchronization over Ethernet
  • EthIf: Ethernet Interface
  • Eth: Ethernet Driver / Controller

Schnittstellen & Funktionsaufrufe:

  • EthIf_TxConfirmation(uint8, Eth_BufIdxType, Std_ReturnType): Callback von Eth an EthIf
  • EthTSyn_TxConfirmation(uint8, Eth_BufIdxType): Callback von EthIf an EthTSyn
  • EthIf_GetEgressTimeStamp(Std_ReturnType, uint8, Eth_BufIdxType, Eth_TimeStampQualType**, Eth_TimeStampType**): Abruf des Hardware-Sendezeitstempels durch EthTSyn bei EthIf
  • Eth_GetEgressTimeStamp(Std_ReturnType, uint8, Eth_BufIdxType, Eth_TimeStampQualType**, Eth_TimeStampType**): Weiterleitung des Zeitstempelabrufs von EthIf an Eth
  • EthIf_GetCurrentTime(Std_ReturnType, uint8, Eth_TimeStampQualType**, Eth_TimeStampType**): Abruf der aktuellen Treiber-/Hardware-Zeitbasis
  • StbM_GetCurrentVirtualLocalTime(Std_ReturnType, StbM_SynchronizedTimeBaseType, StbM_VirtualLocalTimeType**): Abruf der virtuellen lokalen Zeit (VLT) aus dem StbM

3. Dynamisches Verhalten & Sequenzablauf

Der Ablauf wird durch die Bestätigung einer vorangegangenen Nachrichtenübertragung initiiert:

  1. Eth ruft EthIf_TxConfirmation auf, welches EthTSyn_TxConfirmation anstößt.
  2. Übergeordneter Rahmen opt Message Type: Nur aktiv, falls der Nachrichtentyp Sync, Pdelay_Req oder Pdelay_Resp entspricht.
  3. Fallunterscheidung alt EthTSynHardwareTimestampSupport:
    • Zweig [EthTSynHardwareTimestampSupport == TRUE]:
      • EthTSyn fragt über EthIf_GetEgressTimeStamp den Egress-Timestamp ab (EthIf leitet dies an Eth_GetEgressTimeStamp weiter).
      • Rückgabe liefert *timeStampEgress, Zuweisung T2vlt = *timeStampEgress.
      • Unterteilung nach Nachrichtentyp (alt Message Type):
        • [Type == Sync]:
          • Fallunterscheidung alt Time Source of StbM:
            • [Time Source of StbM == ETH freerunning]: Berechnung Follow_Up.preciseOriginTimestamp = T0 + (T2vlt - T0vlt).
            • [Time Source of StbM != ETH freerunning]: EthTSyn ruft EthIf_GetCurrentTime auf (ergibt T3vlt = *timeStampPtr) und danach StbM_GetCurrentVirtualLocalTime an StbM (ergibt T4vlt = *localTimePtr). Berechnung: Follow_Up.preciseOriginTimestamp = T0 + (T4vlt - T0vlt) - (T3vlt - T2vlt).
        • [Type == Pdelay_Req]: Lokale Zuweisung t1 = T2vlt.
        • [Type == Pdelay_Resp]: Zuweisung t3 = Pdelay_Resp_Follow_Up.responseOriginTimestamp = T2vlt.
    • Zweig [EthTSynHardwareTimestampSupport == FALSE]:
      • EthTSyn ruft direkt StbM_GetCurrentVirtualLocalTime auf.
      • Unterteilung nach Nachrichtentyp (alt Message Type):
        • [Type == Sync]: Zuweisung T4vlt = *localTimePtr und Berechnung Follow_Up.preciseOriginTimestamp = T0 + (T4vlt - T0vlt).
        • [Type == Pdelay_Req]: Zuweisung t1 = *localTimePtr.
        • [Type == Pdelay_Resp]: Zuweisung t3 = Pdelay_Resp_Follow_Up.responseOriginTimestamp = *localTimePtr.

4. Normative Relevanz & Entwickler-Hinweise

Kritische Timing- und Synchronisationsanforderungen:

  • Für Type == Sync gilt: Die Referenzzeiten T0 und T0vlt werden vorab bei Aufruf von StbM_BusGetCurrentTime() gemeinsam mit EthIf_Transmit() im Kontext der EthTSyn_MainFunction() erfasst.
  • Im Hardware-Timestamping-Zweig bei abweichender StbM-Zeitquelle (Time Source of StbM != ETH freerunning) müssen Interrupts ab dem Start von EthIf_GetCurrentTime() bis zur Rückkehr von StbM_GetCurrentVirtualLocalTime() gesperrt werden, um zeitliche Konsistenz sicherzustellen.
  • Im Software-Timestamping-Zweig (EthTSynHardwareTimestampSupport == FALSE) muss StbM_GetCurrentVirtualLocalTime() (im Notiztext als StbM_GetCurrentVirtualTime() bezeichnet) so früh wie möglich in der TxConfirmation aufgerufen werden; Interrupts sind ab Eintritt in die TxConfirmation bis zur Rückkehr des Aufrufs zu sperren.

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

R19-11 → R20-11 normative Änderung Nachfolger: FIG-42bfa3a71dd8b232
  • Signatur von EthTSyn_TxConfirmation: Der Parameter Std_ReturnType wurde ergänzt (EthTSyn_TxConfirmation(uint8, Eth_BufIdxType, Std_ReturnType) statt zuvor ohne Rückgabestatustyp-Parameter).

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«module» | StbM | «module» | EthTSyn | «module» | EthIf | «module» | Eth | opt Message Type | [Type == (Sync || Pdelay_Req || Pdelay_Resp)] | alt EthTSynHardwareTimestampSupport | [EthTSynHardwareTimestampSupport == TRUE] | [EthTSynHardwareTimestampSupport == FALSE] | alt Message Type | [Type == Sync] | [Type == Pdelay_Req] | [Type == Pdelay_Resp] | Protect against interrupts from start of EthIf_GetCurrentTime() until StbM_GetCurrentVirtualLocalTime() StbM_GetCurrentVirtualLocalTime() returns. | alt Time Source of StbM | [Time Source of StbM == ETH freerunning] | [Time Source of StbM != ETH freerunning ] |  Call StbM_GetCurrentVirtualTime() as early as possible in the TxConfirmation.  Lock interrupts from entering the TxConfirmation until StbM_GetCurrentVirtualTime() returns | T0 and T0vlt are captured by StbM_BusGetCurrentTime(), when it is called for the SYNC message together with EthIf_Transmit in the EthTSyn_MainFunction(). | alt Message Type | [Type == Sync] | [Type == Pdelay_Req] | [Type == Pdelay_Resp] | T0 and T0vlt are captured by StbM_BusGetCurrentTime(), when it is called for the SYNC message together with EthIf_Transmit in the EthTSyn_MainFunction(). T4vlt = *localTimePtr | Eth_GetEgressTimeStamp(Std_ReturnType, uint8, | Eth_BufIdxType, Eth_TimeStampQualType**, | Eth_TimeStampType**) | StbM_GetCurrentVirtualLocalTime(Std_ReturnType, | StbM_SynchronizedTimeBaseType, | StbM_VirtualLocalTimeType**) | t1 = T2vlt | Follow_Up.preciseOriginTimestamp=T0+(T2vlt-T0vlt) | T4vlt=*localTimePtr | t3 = Pdelay_Resp_Follow_Up.responseOriginTimestamp = *localTimePtr | StbM_GetCurrentVirtualLocalTime | (Std_ReturnType, StbM_SynchronizedTimeBaseType, | StbM_VirtualLocalTimeType**) | EthIf_TxConfirmation(uint8, Eth_BufIdxType, Std_ReturnType) | Follow_Up.preciseOriginTimestamp = T0 + (T4vlt - T0vlt) | EthIf_GetEgressTimeStamp(Std_ReturnType, uint8, | Eth_BufIdxType, Eth_TimeStampQualType**, | Eth_TimeStampType**) | t3 = Pdelay_Resp_Follow_Up.responseOriginTimestamp = T2vlt | EthIf_GetCurrentTime(Std_ReturnType, uint8, Eth_TimeStampQualType**, Eth_TimeStampType**) | Follow_Up. preciseOriginTimestamp = T0 + (T4vlt - T0vlt) - (T3vlt - T2vlt) | T2vlt=*timeStampEgress | EthTSyn_TxConfirmation(uint8, Eth_BufIdxType) | t1 = *localTimePtr | T3vlt = *timeStampPtr

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R19-11 AUTOSAR_SWS_TimeSyncOverEthernet S. 50 7 Figure 7: EthTSyn Egress Timestamping