外部授時(shí)的應(yīng)用背景
智能網(wǎng)聯(lián)汽車需要與車外系統(tǒng)進(jìn)行信息交互。
車外系統(tǒng)的交互包括諸如車端向TSP的事件上報(bào)、信號(hào)上報(bào);遠(yuǎn)控事件,車端與云端、手機(jī)端之間的信息交互;安全證書的有效期認(rèn)證;藍(lán)牙鑰匙的使用期間授權(quán);V2V之間交互;V2I之間交互等等。
廣義上,車內(nèi)HMI大屏顯示的時(shí)間也算是車端與外部乘員系統(tǒng)的信息交互。
在進(jìn)行信息交互時(shí),車端的時(shí)鐘系統(tǒng)與需要與車外的時(shí)鐘系統(tǒng)對(duì)齊基準(zhǔn)時(shí)間,也即遵循相同的時(shí)鐘體系,以便在時(shí)間維度定位事件。
外部授時(shí)的場(chǎng)景
在某些初始場(chǎng)景,如整車斷KL30電后上電,或整車深休眠->喚醒,車內(nèi)的基準(zhǔn)時(shí)鐘會(huì)紊亂,維護(hù)為一個(gè)錯(cuò)誤的起始時(shí)間。比如常見的1970/1/1 000。
這個(gè)時(shí)候就需要由外界的時(shí)間源給車端的時(shí)鐘進(jìn)行授時(shí)。
外部時(shí)鐘源
車端通常使用的外界授時(shí)時(shí)鐘源包括:GNSS原子時(shí)、NTP時(shí)間、TSP時(shí)間、NITZ時(shí)間。
GPS原子時(shí)是通過GPS衛(wèi)星播發(fā)的原子時(shí),通常視為最高精度時(shí)間源,具有最高的授時(shí)優(yōu)先級(jí);車端需要具備GPS接收機(jī),通過GPS接收機(jī)接收到GPS信號(hào)以解算出該原子時(shí)。
NTP時(shí)間是由NTP服務(wù)端提供的網(wǎng)絡(luò)時(shí)間;精度次于GPS原子時(shí)間,且其時(shí)鐘穩(wěn)定性依賴于所使用的NTP服務(wù)器的穩(wěn)定性。車端需要能夠通過蜂窩網(wǎng)絡(luò)訪問NTP服務(wù)器以獲取到NTP時(shí)間;
NITZ為基站所提供的時(shí)間;精度次于NTP時(shí)間。車端需要具備蜂窩通信模組與基站進(jìn)行空口交互以獲取該時(shí)間;
TSP時(shí)間為車企自行維護(hù)平臺(tái)的時(shí)間,其時(shí)間源多為NTP時(shí)間,所以本質(zhì)是NTP時(shí)間。
除外部授時(shí)源外,車端自身通常使用RTC芯片在淺休眠->喚醒時(shí)用于恢復(fù)時(shí)間。
舉個(gè)例子說明外部授時(shí)
車端的外部授時(shí),可以類比這樣的場(chǎng)景。
一個(gè)人喝斷片了,然后被關(guān)在小黑屋里睡覺。小黑屋里沒有鐘表。
這個(gè)人睡醒后,不知道今夕是何年何月何日 幾時(shí)幾分幾秒。
他怎么才能知道現(xiàn)在的真實(shí)時(shí)間呢?
他可以選擇拿起座機(jī)電話(是的屋子里有個(gè)座機(jī)電話,視為接受外部授時(shí)的通道)給一個(gè)他信得過的人打電話,實(shí)時(shí)獲知當(dāng)下的時(shí)間。
于是就完成了來自外部的授時(shí)。
時(shí)間維持
這個(gè)人得知了真實(shí)時(shí)間,他可以選擇一直不掛斷電話,一直問詢電話對(duì)端當(dāng)下的真實(shí)時(shí)間,以便于維持小黑屋里的時(shí)鐘系統(tǒng)。
他還有另外一種選擇,就是自己維持時(shí)間的遞增。
比如,這個(gè)人找到了個(gè)有電的秒表(是的屋子里有個(gè)秒表,作為維持時(shí)相對(duì)時(shí)間的工具),于是他記下當(dāng)下的時(shí)間后,然后開始啟動(dòng)該秒表。
這個(gè)時(shí)候他就可以掛斷電話了,因?yàn)槿绻胫喇?dāng)下的時(shí)間,只要用 他記錄的那個(gè)時(shí)間 + 秒表顯示已經(jīng)走的秒數(shù),即可計(jì)算得到當(dāng)下的時(shí)刻。
車內(nèi)域間時(shí)間同步
車內(nèi)系統(tǒng)與車外系統(tǒng)需要對(duì)齊時(shí)間。車內(nèi)各域控之間也需要對(duì)齊時(shí)間。
車內(nèi)各域控制器獨(dú)立分布,域控之間通過以太網(wǎng)、CANFD等實(shí)體總線進(jìn)行聯(lián)結(jié)和通信。各域控都有自己的一個(gè)時(shí)鐘,且在上電運(yùn)行時(shí),都有精準(zhǔn)維持自己時(shí)鐘的能力,用于域內(nèi)交互時(shí)對(duì)信號(hào)事件等標(biāo)注上相應(yīng)的時(shí)間戳。
可以想象下各個(gè)域控系統(tǒng)都有自己的一塊手表,每塊表都是相對(duì)比較精確地逐秒累加時(shí)間;但在同一時(shí)刻,各個(gè)系統(tǒng)的手表報(bào)的是不同的時(shí)間值。
在對(duì)每個(gè)信號(hào)事件標(biāo)注時(shí)間戳的時(shí)候,同一時(shí)刻的時(shí)間戳是凌亂的,這樣跨域間對(duì)時(shí)間敏感的業(yè)務(wù)無(wú)法正常運(yùn)行,無(wú)法通過多域各自打印的日志分析排查問題。
所以車內(nèi)每個(gè)域控都需要對(duì)齊時(shí)鐘,也即統(tǒng)一時(shí)間基準(zhǔn)。
由于獲取外部時(shí)間需要諸如蜂窩通訊、GPS信號(hào)接收能力等,所以不是每個(gè)域控都會(huì)與外界授時(shí)源交互獲取授時(shí)。
車端通常會(huì)選取一個(gè)主時(shí)鐘,用于與外界時(shí)鐘系統(tǒng)進(jìn)行時(shí)間的對(duì)齊,也即外部授時(shí)。再由被外部可靠時(shí)鐘源授時(shí)后的主時(shí)鐘對(duì)域內(nèi)各控制器進(jìn)行車內(nèi)的時(shí)間同步。
舉個(gè)例子,說明車內(nèi)域間時(shí)間同步
還是被關(guān)小黑屋的那個(gè)人A。
他發(fā)現(xiàn)屋里還有另一部電話。拿起來?yè)艽蚝髮?duì)方接了起來。原來是他另一個(gè)一起喝斷片的朋友B,現(xiàn)在被關(guān)在了另一個(gè)小黑屋里。
這個(gè)B的小黑屋里沒有外線電話,只有3部?jī)?nèi)線電話,一部是通朋友A,另外2部分別通另外兩個(gè)一起吃飯喝斷片的朋友C和D。
C和D分別只有一部?jī)?nèi)線電話,拿起來只能和B通話。結(jié)構(gòu)如下這種:
注:一起喝斷片的ABCD
“
外面的世界,即外部UTC時(shí)間系統(tǒng)
小黑屋們,即失去了正確時(shí)間基準(zhǔn)的車內(nèi)時(shí)間系統(tǒng)
外線電話,即可獲得外部授時(shí)的能力通道
內(nèi)線電話,即車內(nèi)域間時(shí)間同步的能力通道
A房間,有外線+內(nèi)線電話,即車內(nèi)的主時(shí)鐘
B房間,可以與多個(gè)房間進(jìn)行通話,不同房間之間無(wú)法直接通話,即B房間為域內(nèi)的網(wǎng)關(guān)域控
C房間和D房間,分別對(duì)應(yīng) 車內(nèi)的非主時(shí)鐘、非網(wǎng)關(guān)的域控
”
A通過和B的內(nèi)線電話告訴了B當(dāng)前的時(shí)刻,B知道后,拿起和C、D兩人小黑屋連線的內(nèi)線電話,告知C、D當(dāng)前的時(shí)間。
經(jīng)過這番操作,ABCD四人完成了粗糙的時(shí)間同步。(之所以粗糙是因?yàn)槲聪齻鬏斞訒r(shí))。
車內(nèi)域間時(shí)間同步故障來源
由上圖可知,末端域控節(jié)點(diǎn)獲取同步時(shí)間的鏈路存在多個(gè)環(huán)節(jié)。某時(shí)間同步系統(tǒng)的下游節(jié)點(diǎn)出現(xiàn)錯(cuò)誤時(shí)間(域控時(shí)間與UTC時(shí)間存在偏差),可能的原因很多,并非完全是主時(shí)鐘時(shí)間源錯(cuò)誤所致。
比如可能的原因有:
主時(shí)鐘時(shí)間源錯(cuò)誤
系統(tǒng)功能設(shè)計(jì)失效
硬件異常故障
軟件基礎(chǔ)庫(kù)異常故障
授時(shí)時(shí)間源時(shí)間異常
車輛出現(xiàn)過異常工況 (如斷kl30) && 無(wú)蜂窩網(wǎng)絡(luò)無(wú)法獲得ntp時(shí)間 && 封閉空間無(wú)法獲得GNSS授時(shí)(此看似極端場(chǎng)景在研發(fā)階段經(jīng)常出現(xiàn))
報(bào)文播發(fā)異常
網(wǎng)關(guān)轉(zhuǎn)發(fā)異常
主時(shí)鐘節(jié)點(diǎn)-網(wǎng)關(guān)節(jié)點(diǎn)物理鏈路/協(xié)議鏈路異常
網(wǎng)關(guān)轉(zhuǎn)發(fā)報(bào)文異常
網(wǎng)關(guān)處理時(shí)間報(bào)文邏輯異常
下游節(jié)點(diǎn)接收異常
網(wǎng)關(guān)節(jié)點(diǎn)-下游節(jié)點(diǎn)物理鏈路/協(xié)議鏈路異常
下游節(jié)點(diǎn)接收?qǐng)?bào)文異常
下游節(jié)點(diǎn)處理時(shí)間報(bào)文邏輯異常
下游節(jié)點(diǎn)應(yīng)用層獲取時(shí)間報(bào)文鏈路異常
下游節(jié)點(diǎn)應(yīng)用層展示時(shí)間處理邏輯異常
作為主時(shí)鐘的功能owner,比較頭疼的是但凡下游節(jié)點(diǎn)出現(xiàn)時(shí)間顯示異常的現(xiàn)象,就被按頭分析。有些時(shí)候是主時(shí)鐘問題,有些是下游邏輯或鏈路問題,有些時(shí)候是使用場(chǎng)景問題。
斷電斷網(wǎng)在地庫(kù),喊破喉嚨也沒有人來授時(shí)。
這也是我寫這篇文章的初衷,希望更多的汽車工程師了解時(shí)間同步的大致邏輯,以便更好地識(shí)別問題。
車內(nèi)時(shí)間同步的環(huán)節(jié)
在智能網(wǎng)聯(lián)汽車上,時(shí)間同步這個(gè)業(yè)務(wù)包括如下環(huán)節(jié):
1. 整體
a. 外部不同時(shí)間源授時(shí):授時(shí)能力、優(yōu)先級(jí)仲裁
b. 域間時(shí)間同步:同步通道CAN、gPtp等
c. 不同業(yè)務(wù)對(duì)不同時(shí)間源的選取及使用邏輯
2. 主時(shí)鐘
a. 接受多源授時(shí)能力
b. 多源使用邏輯
c. 多板板間的時(shí)間同步
d. 板上的時(shí)間維持
e. 特殊電源模式下時(shí)間恢復(fù)機(jī)制
f. CAN、gPtp報(bào)文播發(fā)
下面選取一些主要環(huán)節(jié)進(jìn)行說明。
整車層面,不同業(yè)務(wù)對(duì)不同時(shí)間源的選用邏輯
通常的設(shè)計(jì)方案,整車各域控使用相同的時(shí)間源。也即,各域控上的各個(gè)業(yè)務(wù)使用相同的時(shí)間基準(zhǔn),共源。
該共源時(shí)間源的最高優(yōu)先級(jí)通常指定的是 最高精度的GPS原子時(shí)間。只要滿足GPS時(shí)間獲取的條件,就更新時(shí)間源為GPS時(shí)間。
也有部分OEM根據(jù)實(shí)際業(yè)務(wù)需要,選擇TSP的時(shí)間作為時(shí)鐘源。
選用TSP的時(shí)間是由于車端大部分與外部系統(tǒng)進(jìn)行交互的時(shí)間敏感業(yè)務(wù)多需車端與TSP的時(shí)間對(duì)齊,如遠(yuǎn)控、車輛使用授權(quán)等。
TSP使用的時(shí)間源為NTP時(shí)間,精度不如GPS原子時(shí)間,但足以支撐業(yè)務(wù)。對(duì)于NTP服務(wù)器極小概率偶發(fā)崩潰等情況的應(yīng)對(duì),踐行的是“要錯(cuò)一起錯(cuò)”的準(zhǔn)則。
選用不同時(shí)間源的根本目的,是為了實(shí)現(xiàn)不同業(yè)務(wù) 向不同對(duì)端時(shí)間系統(tǒng)的對(duì)齊。
有的業(yè)務(wù)更傾向于對(duì)齊TSP時(shí)間,有的業(yè)務(wù)更傾向?qū)RGPS時(shí)間。所以可以考慮多源授時(shí),多源同步的方案。
不同時(shí)間源切換所帶來的時(shí)間跳變
不同時(shí)間源進(jìn)行切換可能會(huì)帶來毫秒級(jí)乃至秒級(jí)的跳變。對(duì)于從特殊工況中完成首次被授時(shí)的時(shí)間恢復(fù),可能出現(xiàn)非常大幅度的跳變。
跳變可能向已經(jīng)發(fā)生過的時(shí)間跳變,也可能向尚未發(fā)生的時(shí)間跳變。
回跳是個(gè)比較令人頭疼的場(chǎng)景。會(huì)導(dǎo)致產(chǎn)生數(shù)據(jù)順序上報(bào)、記錄類的業(yè)務(wù)出現(xiàn)相同時(shí)間戳的不同日志;對(duì)于一些有嚴(yán)格時(shí)序要求的業(yè)務(wù),會(huì)造成功能失效的情況。
所以在設(shè)計(jì)功能邏輯時(shí),對(duì)于時(shí)序有嚴(yán)格要求的業(yè)務(wù)需要使用單調(diào)時(shí)鐘(系統(tǒng)滴答)以保證時(shí)間不會(huì)會(huì)跳,避免使用墻上時(shí)鐘以免出現(xiàn)回跳導(dǎo)致的失效。
gPTP機(jī)制
下面大致介紹下基于gPTP(IEEE802.1AS)總線的同步機(jī)制。
gPTP是一種基于以太網(wǎng)總線的標(biāo)準(zhǔn)的時(shí)間同步機(jī)制。運(yùn)行在MAC層,距離物理層近可以減少運(yùn)行在上層所引起的延時(shí)及不確定性,減少傳輸時(shí)延。gptp可以實(shí)現(xiàn)各域節(jié)點(diǎn)之間ns級(jí)別的時(shí)間同步。
在gPTP域內(nèi),需要指定一個(gè)gptp節(jié)點(diǎn)作為主時(shí)鐘(Master),其他gptp節(jié)點(diǎn)作為從時(shí)鐘(Slave)。主時(shí)鐘通過播發(fā)gptp報(bào)文的方式實(shí)現(xiàn)對(duì)其他從時(shí)鐘節(jié)點(diǎn)的時(shí)間同步。
提到gPTP就少不了提到PTP。gPTP是基于PTP協(xié)議的衍生強(qiáng)化版,兩種協(xié)議適用不同的硬件環(huán)境及用途。
PTP與gptp協(xié)議的區(qū)別。
面向工程人員的區(qū)別主要體現(xiàn)在報(bào)文發(fā)送內(nèi)容、報(bào)文發(fā)送順序存在區(qū)別,gptp比ptp多了delay_resp_follow_up的報(bào)文,抓包需要參考不同協(xié)議進(jìn)行分析理解。
原理上的區(qū)別是gPTP增加測(cè)量了主從端口的時(shí)鐘頻率的偏差,即增加了時(shí)鐘頻率換算系數(shù)的計(jì)算,而PTP的報(bào)文交互未見此環(huán)節(jié)。
PTP與gPTP的區(qū)別詳見:https://blog.csdn.net/weixin_43408952/article/details/125082433。
gPTP協(xié)議的報(bào)文流程交互相比于PTP更為復(fù)雜,報(bào)文的交互邏輯,具體可查看張大俠專欄:https://zhuanlan.zhihu.com/p/101003490。寫的很清楚。
PTP 的鐘差以及時(shí)延測(cè)量邏輯
此處以PTP協(xié)議報(bào)文的發(fā)送內(nèi)容來理解主從之間clockoffset和pathdelay的測(cè)量方法。
PTP時(shí)間同步有兩個(gè)前提。一是主從分別有自己維護(hù)的時(shí)鐘系統(tǒng),且可準(zhǔn)確實(shí)現(xiàn)相同時(shí)間步長(zhǎng)的時(shí)鐘自增;二是從時(shí)鐘聰明地知道傳輸過程有時(shí)延,且默認(rèn)雙向時(shí)延相同。
報(bào)文發(fā)送流程圖示意如下:
具體的交互邏輯及意圖描述如下:
1.起始,主從時(shí)鐘各自維護(hù)自己的時(shí)間基準(zhǔn);
2. t1時(shí)刻主時(shí)鐘向從時(shí)鐘播發(fā)sync報(bào)文,通知進(jìn)行同步;從時(shí)鐘在t2時(shí)刻接收到該sync報(bào)文指令;
3. 主時(shí)鐘隨后播發(fā)follow_up報(bào)文,報(bào)文payload中攜帶上一條sync播發(fā)對(duì)應(yīng)的主時(shí)鐘時(shí)刻;
4. 基于前述步驟,從時(shí)鐘可知,在自己接收到sync報(bào)文的時(shí)刻所對(duì)應(yīng)的主時(shí)鐘的時(shí)刻;僅通過這兩個(gè)時(shí)刻無(wú)法獲知主從時(shí)鐘之間的時(shí)鐘差(clockoffset),因?yàn)樵摃r(shí)間差包含了主->從的傳輸延遲(pathdelay)。
因此下一步即從時(shí)鐘需要探測(cè)pathdelay是多少。
5. 在一定時(shí)長(zhǎng)后(這里舉例5 min,實(shí)際為ms級(jí)),在t3時(shí)刻,從時(shí)鐘向主時(shí)鐘發(fā)送探測(cè)pathdelay的delay_req請(qǐng)求;
6. 主時(shí)鐘在 t4 時(shí)刻接收到從時(shí)鐘發(fā)送的delay_req請(qǐng)求,然后發(fā)送響應(yīng)報(bào)文delay_resp。該報(bào)文的payload攜帶了t4這個(gè)時(shí)刻;
7. 通過上述兩步驟,t3 和 t4 這兩個(gè)時(shí)間差包含了 主從之間的時(shí)鐘差及從->主的傳輸延遲 pathdelay;
8. 此處默認(rèn) 主->從 和 從->主 的鏈路傳輸延遲是相同的。
9. 從時(shí)鐘基于上述的t1-4數(shù)據(jù),可計(jì)算得到與主時(shí)鐘之間的clockoffset 以及 主從之間的傳輸延遲pathdelay。
clockoffset用于從時(shí)鐘的系統(tǒng)時(shí)鐘校準(zhǔn),pathdelay用于以太網(wǎng)switch轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)的時(shí)間差補(bǔ)足。
PTP機(jī)制的擬人化理解
接下來介紹下作為主時(shí)鐘域控實(shí)現(xiàn)域內(nèi)板間時(shí)間同步。
板間同步的必要性
主時(shí)鐘需要具備多種對(duì)外播發(fā)時(shí)間同步數(shù)據(jù)的通道。介質(zhì)多為CAN 和以太網(wǎng),報(bào)文分別為CAN報(bào)文和GPTP報(bào)文。
CAN總線時(shí)間同步采用 Autosar的TimeSync協(xié)議機(jī)制。以太網(wǎng)總線時(shí)間同步采用GPTP協(xié)議機(jī)制。
CAN總線和以太網(wǎng)總線兩條時(shí)間同步通道并行,一是互為災(zāi)備冗余,二是面向不同總線節(jié)點(diǎn)。
但不論通過哪條總線對(duì)外播發(fā)時(shí)間同步的消息,主時(shí)鐘播發(fā)的CAN報(bào)文和gptp報(bào)文上的payload時(shí)間數(shù)據(jù)體都應(yīng)該是相同的。
CAN報(bào)文播發(fā)和gptp報(bào)文播發(fā)功能通常分別由MCU和MPU承接。MCU和MPU之間需要實(shí)現(xiàn)有效的時(shí)間同步,以保證通過不同通道播發(fā)的時(shí)間數(shù)據(jù)是一致的。
板間同步的困難點(diǎn)
在異常場(chǎng)景時(shí)間恢復(fù)時(shí),由于MCU的快速啟動(dòng)及低功耗等特性,多使用MCU上掛接的RTC用于MCU系統(tǒng)的時(shí)間恢復(fù)。
MPU側(cè)多用于承接外部授時(shí)源的授時(shí)。但在初始場(chǎng)景,MPU側(cè)通常是需要從MCU側(cè)快速獲取時(shí)間,并基于當(dāng)前場(chǎng)景形成判斷邏輯確認(rèn)進(jìn)入哪一種授時(shí)源的授時(shí),以避免多次低優(yōu)先級(jí)的授時(shí)源授時(shí)而引起多次跳變。
MPU完成外部授時(shí)后,需要對(duì)MCU側(cè)再進(jìn)行時(shí)間校準(zhǔn)以消除MCU RTC恢復(fù)MCU系統(tǒng)時(shí)間所引起的與MPU系統(tǒng)時(shí)間之間的誤差。
MCU與MPU之間的時(shí)間同步存在系統(tǒng)延遲誤差。該誤差可能固定可測(cè)量出具體數(shù)值用于標(biāo)定補(bǔ)償,也可能隨機(jī)不可測(cè)不可標(biāo)定。
實(shí)車的使用工況還包含KL30斷電冷啟MCU RTC時(shí)間丟失、地庫(kù)內(nèi)無(wú)GNSS信號(hào)無(wú)法獲取GPS時(shí)間、無(wú)蜂窩網(wǎng)絡(luò)無(wú)法獲取NTP授時(shí)等各種場(chǎng)景,還需要考慮讀取RTC失敗等偶發(fā)電器故障等。
所以主時(shí)鐘域內(nèi)的板上及板間 時(shí)間恢復(fù)、時(shí)間同步與反向同步、時(shí)間有效性判斷、時(shí)間維持、外部授時(shí)源缺失、休眠期間時(shí)間維持、休眠時(shí)間寫入等,都是需要考慮和設(shè)計(jì)。
一句話總結(jié)即是 MCU和MPU之間的時(shí)間同步邏輯非常復(fù)雜。是我迄今經(jīng)手過的燒腦排行前幾的系統(tǒng)功能方案。
編輯:黃飛
-
mcu
+關(guān)注
關(guān)注
146文章
17316瀏覽量
352264 -
CAN
+關(guān)注
關(guān)注
57文章
2766瀏覽量
464170 -
MPU
+關(guān)注
關(guān)注
0文章
375瀏覽量
48898 -
智能網(wǎng)聯(lián)汽車
+關(guān)注
關(guān)注
9文章
1094瀏覽量
31128 -
時(shí)鐘系統(tǒng)
+關(guān)注
關(guān)注
1文章
101瀏覽量
11778
原文標(biāo)題:分析了40個(gè)BUG后對(duì)“時(shí)間同步”的總結(jié)
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論