關于車用迢信協(xié)議中的假冒錯
摘要 假冒錯是指一條消息被誤收為另一條消息,它有很大的危害性。本文討論了產(chǎn)生此類錯的可能原因,分析了FlexRay協(xié)議對抗假冒錯的機制,針對CAN協(xié)議提出了一種解決方案。在無需增加軟硬件的條件下,CAN協(xié)議也可以獲得良好的抗假冒錯能力,對CAN協(xié)議在安全性要求高的系統(tǒng)中的應用有重要的價值。
關鍵詞 假冒錯 FlexRay CAN
在嵌入式系統(tǒng)里,通信是骨干部分,通信系統(tǒng)的錯會引起整個嵌入式系統(tǒng)的故障。在通信系統(tǒng)里,假冒錯(Masquerade fault)是指一種冒名頂替性質(zhì)的故障,即發(fā)送時的一條消息被誤收為另一種格式上合法的消息。此種錯的后果顯然是不能接受的,因為接收節(jié)點會把完全無關的數(shù)據(jù)進行解讀,例如把制動踏板的位置解釋為加速踏板的位置。在這種類型的應用中,由于控制方案對信號的突變有安全設計,機器本身的慣性也有濾波的效果,而且在很短的周期內(nèi)又有正確的消息送來,在大多數(shù)情況下除了造成不適感覺外,不會造成很嚴重的后果。但如果這是會影響到最終執(zhí)行的信號,那么如果在需要剎車時變?yōu)榧佑?,就會造成事故。在有些平時信號更新較慢的系統(tǒng)里,誤信號也可能造成新的問題。例如為了在啟動瞬間防止電池電壓跌落過大,要錯開負荷,像汽車把空調(diào)暫時關閉,若誤認為是打開信號,就會違背設計意圖,造成新的干擾源。又如行車中誤開車鎖,則會帶來新的風險。診斷系統(tǒng)中的誤信號也會帶來令人難以解釋的現(xiàn)象,浪費維修的人力物力,且損害品牌的聲譽。在安全攸關的需要冗余的系統(tǒng)里,這種冒名錯會使表決機制失效。因此對車用通信協(xié)議中的假冒錯進行研究有重要的意義,它是解決車用嵌入式系統(tǒng)可靠性的關鍵之一。現(xiàn)有的主流車內(nèi)通信協(xié)議是CAN,它還沒有采用足夠的措施可對抗假冒錯。新的FlexRay協(xié)議有了這方面的措施,但是否足夠還有待商榷。
1 假冒錯
一條消息在整個發(fā)送/接收的過程中會受到干擾,從而產(chǎn)生數(shù)據(jù)位的改變。為了不被誤收,現(xiàn)有的通信協(xié)議都有一些檢錯的措施,例如在傳送的幀尾部附加校驗數(shù)據(jù)。一般來說,較多采用循環(huán)冗余校驗(CRC)方法,CRC生成多項式的長度與需要的檢錯Hamming距離以及需要處理的數(shù)據(jù)長度有關。CRC算法的Hamming距離是指碼MIDP2.O基礎上擴充實現(xiàn)了JSRl20、JSRl35部分功能。該平臺已經(jīng)在多款MTK6225平臺手機上運行。字中無法用CRC算法檢測出的出錯位的個數(shù)。因此一個協(xié)議選用的CRC多項式反映了它要保證的Hamming距離。如果發(fā)生的位錯誤太多,CRC檢驗會產(chǎn)生漏判,把錯誤幀判為正常幀。例如CAN協(xié)議采用的15位CRC生成多項式在CAN的最大數(shù)據(jù)幀長度內(nèi)Hamming距離為6。即CRC可檢驗幀內(nèi)5位錯誤。不過CAN的CRC是在去掉填充位后計算的,由于填充位而造成Hamming距離下降是一個設計上的失誤,這在后面介紹。
當考慮假冒錯時,要分析漏檢的情況。第一種是干擾時間很長,出錯位數(shù)太多,超出了CRC檢驗的能力;第二種是通信控制器在發(fā)幀以前數(shù)據(jù)已有變化,而變化后的數(shù)據(jù)有了合法的身份,CRC檢驗只是保證這一假冒者不被錯發(fā)。在這二種情況下,都可能產(chǎn)生假冒錯。在CAN中如果數(shù)據(jù)位錯誤發(fā)生在消息的ID部分就產(chǎn)生了假冒錯,就有可能把剎車當成加油。下面進一步討論產(chǎn)生假冒錯的情況。
1.1 數(shù)據(jù)傳送鏈
從數(shù)據(jù)的產(chǎn)生到數(shù)據(jù)的利用的角度來看,通信不只是由一個通信控制器(cc)到另一個通信控制器的過程,它還包括由主機(host)到通信控制器的來回過程,這個過程同樣會出錯。一般的通信干擾分析大多數(shù)著眼于來自空間的幅射干擾對串行傳輸?shù)挠绊懀@當然是很重要的途徑,但在采取一定措施后,可以得到緩解,例如用屏蔽電纜、雙絞線、屏蔽的ECU外殼等。在汽車環(huán)境里電源的傳導干擾很大,國際標準ISO7637列出了典型的傳導干擾形式,它們的波形上升或下降沿很陡,不但在正電壓方向超出電源電壓很多倍,而且會在負電壓方向超出很多倍。電源的用)程序走飛的例子常有所聞,這說明在電源部分防范不夠的主機,完全有可能失常,包括將數(shù)據(jù)傳輸?shù)絚c的過程。所以車用控制器組件要通過抗電源傳導干擾的測試。大部分host到cc的傳送用的是并行方式,例如以字節(jié)方式把內(nèi)容(ID、數(shù)據(jù)等)寫入cc的有關寄存器里。也有少數(shù)采用串行方式,例如Microchip公司的MCP2515型號CAN通信控制器,它采用SPI串行接口來傳送。即使將來大量使用32位MCU,這二種方式很可能依然會并存:帶cc的host在MCU內(nèi)部用字節(jié)交換數(shù)據(jù);分立的host與cc可以采用并行或串行方式。但是host在計算時用的最小單位是字節(jié),即使用串口送到cc,它也要有用并行方式寫入的部分。當電源傳導干擾引起傳送失常時,這二種傳送可能出錯的位數(shù)是不同的。由于并行方式時l字節(jié)8位同時受干擾,出錯的位數(shù)就較多,其后果看來就像突發(fā)錯(burst error)。串行時可能先錯一位,但如果干擾的持續(xù)時間長,就可能形成多位錯,其后果也是突發(fā)錯。當然,一般host并行讀寫的過程較快,同樣的干擾持續(xù)時間內(nèi)可能有多次寫入,出錯就較多。
對于空間干擾,例如電磁場或重粒子流干擾,對傳送出錯的影響與上述分析不同,需要進一步研究,但后果是一樣的。
1.2 出錯位數(shù)
既然大部分host到cc的傳送總經(jīng)過并行方式,那么非常短時的干擾有可能引起的錯就是1個字節(jié)的錯。并行傳送時由于各位線路電路結(jié)構的同一性,同一極性信號的出錯可能性相同,不同極性信號則不太可能同時翻轉(zhuǎn),所以傳送內(nèi)容的不同會影響出錯位數(shù)。此時最壞的情形就是8位全為1或全為O,同時發(fā)生翻轉(zhuǎn)。Host寫一條消息一般不止寫1字節(jié)到cc。由此看來,對抗假冒錯的CRC Hamming距離最好為9。當然,即使能保證8位錯能檢出,由于要保護的數(shù)據(jù)不止1字節(jié),這種對抗假冒錯的CRC只是消除了一次干擾。從實際數(shù)據(jù)來看全O或全1的數(shù)據(jù)只占極少數(shù),所以較小的Hamming距離仍有較大的攔截錯誤的概率。
評論