引言
在當今的汽車電子域控制器中,時間同步成為了一個非常重要的需求。這主要是因為汽車中各個ECU(電子控制單元)之間需要進行高效且可靠的信息交換,以實現諸如自動駕駛、智能交通控制、車輛遠程信息處理等功能。而要實現這些功能,就需要一個統一的時間基準,以確保各個ECU能夠協同工作。
PTP(Precision Time Protocol)和gPTP(Generalized Precision Time Protocol)就是為此目的而設計的。
PTP是一種用于計算網絡中時間同步的協議,它最初是為工業自動化應用而設計的。PTP的主要特點是其基于IEEE 1588標準的同步機制,這種機制可以精確地測量網絡中的時間差異,并使用這種信息來同步網絡中的所有設備。在汽車電子域控制器中,PTP可以用于將時間信息從一個ECU傳遞到另一個ECU,從而實現時間同步。
gPTP則是PTP的一個擴展版本,它被設計用于滿足汽車工業的特定需求。gPTP的主要特點是其能夠適應汽車環境中的各種網絡拓撲結構,包括CAN、LIN、MOST、Ethernet等。此外,gPTP還具有更好的魯棒性和可靠性,能夠處理網絡中的故障和延遲,從而確保時間同步的準確性。
總的來說,汽車電子域控制器需要時間同步是因為需要各個ECU協同工作以實現復雜的功能。而PTP和gPTP則是為了滿足這一需求而設計的協議。通過使用這些協議,可以確保汽車中的各個ECU具有精確且一致的時間基準,從而實現高效且可靠的信息交換。
1. 協議介紹
1.1 PTP簡介
PTP(Precision Time Protocol,精確時間協議)是一種時間同步的協議,可用于設備之間的高精度時間同步和頻率同步。PTP的時間同步精度為亞微秒級。
1.1.1 PTP的基本概念
PTP協議標準即PTP profile。不同類型的PTP協議標準可實現不同的PTP功能。PTP協議標準包括以下類型:
· IEEE 1588 version 2:簡稱1588v2。IEEE 1588規范了網絡中用于高精度時鐘同步的原理和報文交互處理規范,最初是應用于工業自動化,現主要用于橋接局域網。IEEE 1588對網絡環境沒有做出強制要求,適用性比較廣,可以根據不同的應用環境對該協議標準進行定制,增強或者裁剪特定的功能。最新版本為V2版本,即1588v2。
· IEEE 802.1AS:簡稱802.1AS。802.1AS是基于IEEE 1588產生的一個協議標準,對IEEE 1588在橋接局域網中的實現進行了細化。802.1AS支持的BMC(Best Master Clock,最佳主時鐘)算法和IEEE 1588略有不同,參考了MSTP(Multiple Spanning Tree Protocol,多生成樹協議)的實現方式。802.1AS支持的物理介質類型只有點對點全雙工以太網鏈路、IEEE 802.11鏈路和IEEE 802.3 EPON鏈路。
· SMPTE ST 2059-2:簡稱ST2059-2。ST2059-2是基于IEEE 1588產生的一個協議標準,本協議自定義了一些參數,參數的默認值,參數的允許范圍的描述。ST2059-2是專門用于專業廣播環境中音頻、視頻設備的時間同步的精準時間協議。
· AES67-2015:AES67-2015是基于IEEE 1588產生的一個協議標準,本協議自定義了一些參數,參數的默認值,參數的允許范圍的描述。AES67-2015是專門用于專業廣播、音樂制作和影視后期制作設備的時間同步的精準時間協議。
1.2 gPTP簡介
gPTP協議是Precision Time Protocol的簡稱,是一種用于精確時間同步的協議。它是IEEE 802.1AS標準的一部分,主要應用在局域網網絡中,可以實現亞微秒級的時間同步。
1.2.1 PTP的基本概念
gPTP協議通過使用硬件支持的時間戳和測量網線上的傳輸延時來達到精確的時間同步。在gPTP網絡中,每個節點都有一個本地時鐘,用于生成時間戳。當一個節點發送一個數據包時,它會在數據包中添加一個時間戳,然后接收節點在接收到數據包后,會測量從發送節點到接收節點的傳輸時間,并計算出偏移量。這個偏移量會被用來調整接收節點的本地時鐘,以確保它與發送節點的時鐘同步。
gPTP協議具有以下特點:
1.基于硬件時間戳:gPTP協議使用硬件時間戳來記錄數據包的發送和接收時間,這樣可以避免軟件時間戳引入的誤差和不確定性。
2.測量傳輸時間:gPTP協議可以測量數據包從發送節點到接收節點的傳輸時間,從而計算出偏移量并調整接收節點的本地時鐘。
3.多跳同步:gPTP協議可以支持多跳同步,即可以通過中間節點的傳遞來實現更遠距離的節點之間的同步。
4.適應網絡拓撲:gPTP協議可以適應不同的網絡拓撲結構,如星型、樹型、環型等。
5.可靠性和魯棒性:gPTP協議具有可靠性和魯棒性,可以在網絡中出現故障或延遲時仍然保持同步精度。
總之,gPTP協議是一種高精度的時間同步協議,適用于需要精確時間同步的局域網網絡應用場景。
1.3 PTP 與 gPTP 的區別
? gPTP假設PTP實例之間的所有通信僅使用IEEE 802 MAC pdu和尋址完成,而IEEE Std 1588-2019支持各種第2層和第3-4層通信方法。
? gPTP指定了一個獨立于媒體的子層,它簡化了具有完全不同的媒體訪問協議的多種不同網絡技術在單個定時域中的集成。gPTP為每種媒體指定一個與媒體相關的子層。在PTP實例之間交換的信息被一般化,以支持不同的數據包格式和適合特定網絡技術的管理方案。另一方面,IEEE Std 1588-2019引入了一種基于媒體獨立和媒體依賴子層的新架構(參見IEEE Std 1588-2019的6.5.2、圖5和圖6);然而,這種體系結構是可選的。IEEE標準1588-2008 [B10]的體系結構不是基于媒體獨立和媒體依賴層,它被保留在互聯網協議(IP)版本4、IP版本6、以太網局域網和幾個工業自動化控制協議中。IEEE Std 1588- 2019的意圖是,基于媒體獨立層和媒體依賴層的新架構將用于使用gPTP規范的IEEE 802.11網絡、IEEE 802.3 EPON和CSN,并且如果使用了本機定時機制,則必須將該架構用于定義本機定時機制的傳輸。
?在gPTP中只有兩種類型的PTP實例:PTP結束實例和PTP中繼實例,而IEEE Std 1588-2019有普通時鐘,邊界時鐘,端到端透明時鐘和P2P透明時鐘。PTP結束實例對應于IEEE 1588普通時鐘,而PTP中繼實例是IEEE 1588邊界時鐘的一種,其操作定義非常嚴格,以至于具有以太網端口的PTP中繼實例可以在數學上等同于如何執行同步的P2P透明時鐘,如11.1.3所示。此外,PTP中繼實例可以在一種模式下運行(即,變量syncLocked為TRUE的模式;參見10.2.5.15),其中PTP中繼實例在發送時間同步消息方面相當于P2P透明時鐘。時間感知系統測量鏈路延遲和停留時間,并在校正場中進行通信。綜上所述,PTP中繼實例符合IEEE Std 1588-2019中對邊界時鐘的規范,但PTP中繼實例不符合IEEE Std 1588-2019中對P2P透明時鐘的完整規范,因為:
–當syncLocked為FALSE時,PTP中繼實例根據邊界時鐘的規格發送同步,并且
–PTP中繼實例調用BMCA并具有PTP端口狀態。
? PTP實例只與其他PTP實例直接通信gPTP信息。也就是說,一個gPTP域只由PTP實例組成。非ptp中繼實例不能用于中繼gPTP信息。在IEEE Std 1588-2019中,可以在IEEE 1588域中使用非IEEE-1588感知繼電器,盡管這會減慢時間收斂并引入額外的抖動和抖動,必須由任何IEEE 1588時鐘濾波。
?e)對于全雙工以太網鏈路,gPTP要求使用點對點延遲機制,而IEEE Std 1588-2019也允許使用端到端延遲測量。f)對于全雙工以太網鏈路,gPTP需要使用兩步處理(使用Follow_Up和Pdelay_Resp_Follow_Up消息來通信時間戳),可選的一步處理模式是在同步中嵌入時間戳,因為它們正在傳輸(gPTP沒有指定對對等延遲消息的一步處理)。IEEE Std 1588-2019允許根據特定配置文件需要兩步或一步處理(同步和對等延遲消息)。
?一個gPTP域中所有的PTP實例在邏輯上是同步的;換句話說,它們都使用相同的頻率來測量時間間隔。這是通過7.3.3中描述的過程完成的,并且是強制性的。IEEE Std 1588-2019中的同步是可選的。gPTP使用的同步方法在IEEE Std 1588-2019中作為一種選項得到支持,但使用的是IEEE Std 1588-2019中標準化的TLV(此功能是IEEE Std 1588-2019的新功能),而gPTP使用11.4.4.3中指定的ORGANIZATION_EXTENSION TLV。
?)最后,本標準包括時間感知應用的正式接口定義,包括原語(見第9條)。IEEE標準1588-2019描述外部接口,但沒有描述特定的接口原語。
1.4 時間同步常用角色解釋
?OC(Ordinary Clock,普通時鐘):該時鐘節點在同一個PTP域內只有一個PTP接口參與時間同步,并通過該接口從上游時鐘節點同步時間。此外,當時鐘節點作為時鐘源時,可以只通過一個PTP接口向下游時鐘節點發布時間。
?BC(Boundary Clock,邊界時鐘):該時鐘節點在同一個PTP域內擁有多個PTP接口參與時間同步,它通過其中一個接口從上游時鐘節點同步時間,并通過其余接口向下游時鐘節點發布時間。此外,當時鐘節點作為時鐘源時,可以通過多個PTP接口向下游時鐘節點發布時間,如圖1-1中的BC 1。
?TC(Transparent Clock,透明時鐘):TC有多個PTP接口,但它只在這些接口間轉發PTP協議報文并對其進行轉發延時校正,而不會通過任何一個接口同步時間。與BC/OC相比,BC/OC需要與其他時鐘節點保持時間同步,而TC則不與其他時鐘節點保持時間同步。TC包括以下兩種類型:
?E2ETC(End-to-End Transparent Clock,端到端透明時鐘):直接轉發網絡中所有PTP協議報文,參與計算整條鏈路的延時。
?P2PTC(Peer-to-Peer Transparent Clock,對等透明時鐘):只直接轉發Sync報文、Follow_Up報文和Announce報文,而終結其他PTP協議報文,參與計算整條鏈路上每一段鏈路的延時。
1.5 時間同步常用關系解釋
主從關系(Master-Slave)是相對而言的,對于相互同步的一對時鐘節點來說,存在如下主從關系:
?主/從節點:發布同步時間的時鐘節點稱為主節點(Master Node),而接收同步時間的時鐘節點則稱為從節點(Slave Node)。
?主/從時鐘:主節點上的時鐘稱為主時鐘(Master Clock),而從節點上的時鐘則稱為從時鐘(Slave Clock)。
?主/從接口:時鐘節點上發布同步時間的PTP接口稱為主接口(Master Port),而接收同步時間的PTP接口則稱為從接口(Slave Port),主接口和從接口均可存在于BC或OC上。
?此外,還存在一種既不發布也不接收同步時間的PTP接口,稱為被動接口(Passive Port)。
2. Autosar 時間同步
2.1 時間同步框架
在autosar 架構中,時間同步的對上層使用接口,時間同步協議,底層通訊介質都是相互獨立解耦的存在。
基于以太網的 gPTP 協議涉及到的模塊有以下幾個。
? ?
2.1.1 STBM(Software Timer Bus
STBM(Software Timer Bus)是AUTOSAR軟件定時器總線模塊,它提供了一個用于管理軟件定時器的統一接口,并支持在分布式系統中對多個軟件組件進行時間同步。STBM模塊通過定義一個時間戳接口來傳遞定時器事件,并使用一個時間同步狀態接口來報告時間同步的狀態。
2.1.2 ETHTsync
ETHTsync是AUTOSAR中用于以太網時間同步的模塊。它通過以太網連接接收來自其他節點的時鐘同步信號,并使用該信號來同步自己的時間。ETHTsync模塊還提供了一個接口,以便其他軟件組件可以通過調用其接口來獲取當前的時間戳。
2.1.3 ETHIF
ETHIF是AUTOSAR中用于以太網接口的模塊。它提供了一個用于發送和接收以太網數據包的接口,以便在車輛網絡中實現數據通信。ETHIF模塊支持各種以太網協議,包括TCP/IP、UDP等。
2.1.4 MCAL(Microcontroller Abstraction Layer)
MCAL(Microcontroller Abstraction Layer)是AUTOSAR微控制器抽象層模塊。它位于AUTOSAR BSW(Basic Software)的最底層,為上層軟件提供了一個統一的接口來訪問微控制器和外設芯片。MCAL主要包括微控制器驅動、存儲器驅動、通信驅動和輸入輸出驅動四個部分,各部分又由具體的與微控制器硬件相對應的驅動模塊組成。此外,MCAL還包含加密驅動和無線通訊驅動等其他部分。
2.2 實現原理介紹
2.2.1 StbM
對于對時本身來說,最重要的有兩個事情。
?StbM 與 下層的協議時間信息
?StbM 為 上層應用提供時間信息
所以從StbM 的角度,無所謂時間來源,也可以說無所謂時間的對與錯。只需要知道時間已經被“同步”,可以獲取到時間信息。當然也會提供一些set時間的接口,這本質還是讓 時間對其。
2.2.1.1 stbm main
在main函數中,主要是同步系統時間宇stbm的時間信息。下面有一個全局變量的維護作為基礎。
StbM_TimeStampType StbM_GlobalTimeTupleArray_ast[STBM_CFG_NUM_OF_TIMEBASES];
代碼邏輯如下
我們把重點放在下面的gPTP 協議本身
2.2.2 TsynOverETH
在 gPTP 中 main函數主要維護了
?同步報文
?發送消除誤差報文
?響應消除誤差報文
主要體現在上面三個狀態機。在這三個狀態機里面用來
發送 sync, follow up 報文
發送 peer_delay_req 報文
響應 peer_delay_req 報文
具體的實現來自于下面幾個子集狀態機。
需要說明一下。sync 和 follow up 報文 是master 發送給slaver 用來時間同步用。
peer delay 是消除傳輸誤差的作用。
2.2.2.1 sync, follow up 報文
master 主動發送sync 和 follow up 報文來對slaver 進行時間信息傳入。這個是向的過程。
2.2.2.1.1 代碼sync, follow up 報文
通過函數
static void EthTSyn_GetHwTime( uint8 CtrlrIdx_u8, uint8 BufIdx_u8, uint8 *MsgType_pu8, Eth_TimeStampType *TimeStampPtrCurrent_pst, uint8 IdxDomain_u8, uint8 IdxGlbTim_u8 )
獲取硬件時間戳,經過Follow Up 報文發送出去。如果前面的STBM 與 ETH 的時間已經同步完成,注意這里不是與外部時間同步。
那么控制器是在哪里拿到系統時間的呢。這里我們使用ETH硬件MAC 時間。下面是時間戳寄存器。可以讀取。
如果說需要更新mac 的時候,需要對其他寄存器進行操作。這里不一一列取。通過Mcal 提供的函數進行更新系統時間戳。
/******************************************************************************* ** ** ** Traceability : [cover parentID={0CC425E3-DC66-46d8-AB0B-587E1C70CDEA}] ** ** ** ** Syntax : Std_ReturnType Eth_17_GEthMac_SetGlobalTime ** ** (const uint8 CtrlIdx, ** ** const Eth_TimeStampType* const timeStampPtr) ** ** ** ** Description : Allows the Time Master to adjust the global ETH ** ** Reference clock in HW. We can use this method to ** ** set a global time base on ETH in general or to ** ** synchronize the global ETH time base with another ** ** time base, e.g. FlexRay. ** ** ** ** [/cover] ** ** ** ** Service ID : 0x1b ** ** ** ** Sync/Async : Synchronous ** ** ** ** Reentrancy : Non Reentrant ** ** ** ** Parameters (in) : CtrlIdx - Index of Eth Controller within the ** ** context of the Ethernet driver. ** ** timeStampPtr - new time stamp ** ** ** ** Parameters (out) : None ** ** ** ** Return value : Std_ReturnType - E_OK: successful ** ** E_NOT_OK: failed ** ** ** *******************************************************************************/ Std_ReturnType Eth_17_GEthMac_SetGlobalTime(const uint8 CtrlIdx, const Eth_TimeStampType* const timeStampPtr)
其實就是對這些寄存器(沒完全列出來)進行了操作。即更新了MAC 的時間戳。
Ifx_GETH_MAC_SYSTEM_TIME_HIGHER_WORD_SECONDS MAC_SYSTEM_TIME_HIGHER_WORD_SECONDS;
2.2.2.2 peer delay req報文
peer delay 是為了消除master 到 slaver, 和 slaver 到master. 這是平等的過程,也是一樣的過程。這里只介紹一下master發送peerdelay req.
在發送過程中是不需要帶有時間信息的。只是響應端需要回復帶有時間信息的報文。即 response, response follow up. 因為發送端是知道自己發送時候的具體時間的。
autosar 實現的具體邏輯分流
這時候slaver 收到req之后,進行響應response. 邏輯如下
這里就出現一個問題,看著response 和 follow up 報文一樣,但是發送的內容是不一樣的。所以autosar 組包,組以太網包
/** *************************************************************************************************** * Function Name : EthTSyn_ComposePdelayRespMsg() * * Function Description * Composes Pdelay_Resp message * * Parameters (in) : * param BufPtr_pu8 - Buffer pointer * * Parameters (inout): * None * * Parameters (out): * None * * Return Value: None * Return Type : void *************************************************************************************************** */ void EthTSyn_ComposePdelayRespMsg( uint8 *BufPtr_pu8 ) /** *************************************************************************************************** * Function Name : EthTSyn_ComposePdelayRespFollowUpMsg() * * Function Description * Composes Pdelay_Resp_Follow_Up message * * Parameters (in) : * param BufPtr_pu8 - Buffer pointer * * Parameters (inout): * None * * Parameters (out): * None * * Return Value: None * Return Type : void *************************************************************************************************** */ void EthTSyn_ComposePdelayRespFollowUpMsg( uint8 *BufPtr_pu8 )
2.2.2.3 peer delay resp報文
反向過程,同上
-
汽車電子
+關注
關注
3035文章
8240瀏覽量
169359 -
計算機
+關注
關注
19文章
7626瀏覽量
90108 -
AUTOSAR
+關注
關注
10文章
370瀏覽量
22379 -
ecu
+關注
關注
14文章
913瀏覽量
55423 -
域控制器
+關注
關注
0文章
271瀏覽量
2955
原文標題:
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何開發符合AUTOSAR規范的電機控制器軟件
時間同步Autosar是什么意思
時間同步Autosar就是讓ECUs的軟件架構標準化
AUTOSAR是什么
為什么使用AUTOSAR呢
介紹AUTOSAR支持的四種功能安全機制
AUTOSAR CAN時鐘同步問題
車載以太網時間同步之EthTsync技術解析

車載AUTOSAR中gPTP協議介紹

評論