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