利用XC2300系列微控制器實現(xiàn)CAN網(wǎng)絡(luò)安全
XC2300是專門針對汽車安全應(yīng)用,特別是氣囊系統(tǒng)和電動助力轉(zhuǎn)向應(yīng)用而設(shè)計的新型微控制器系列。該產(chǎn)品系列旨在使汽車電子安全系統(tǒng)實現(xiàn)可擴展性、軟硬件重復(fù)使用以及兼容性。XC2300系列配備高性能中央處理器(CPU)和豐富外設(shè)。本文以MultiCAN模塊為例,說明如何利用這些特性來支持安全應(yīng)用,以及如何進(jìn)一步通過硬件支持來滿足對軟件及CAN軟件的特定安全要求。
MultiCAN 簡介
MultiCAN是一種經(jīng)過驗證的可擴展模塊,這個模塊最多可提供四個與ISO 11898完全兼容的獨立CAN節(jié)點。所有CAN節(jié)點均可共享的報文對象的數(shù)量多達(dá)128個。鏈表將報文對象分配給特定節(jié)點,從而為系統(tǒng)布局提供了極大的靈活性。報文對象通過內(nèi)部聯(lián)系,實現(xiàn)自主網(wǎng)關(guān)功能。未被分配給特定節(jié)點的報文對象可用于FIFO結(jié)構(gòu)。所有節(jié)點均支持分析器功能,作為總線無源組件與總線系統(tǒng)連接。
圖1 擁有多達(dá)4個獨立CAN節(jié)點和128個報文對象的XC2300安全產(chǎn)品系列MultiCAN模塊
靈活的FIFO結(jié)構(gòu)
CAN 節(jié)點共享的所有報文對象可分別被單獨地分配給特定的鏈表,而每個鏈表則被綁定到特定的節(jié)點。例如,鏈表1對應(yīng)節(jié)點0,鏈表2對應(yīng)節(jié)點1,以此類推。鏈表0是對應(yīng)所有未被分配的報文對象的附加鏈表。這些鏈表采用雙鏈?zhǔn)芥湵斫Y(jié)構(gòu)。這種結(jié)構(gòu)為在不同CAN節(jié)點上使用報文對象提供了高度靈活性。同時,未被使用的報文對象可用于FIFO結(jié)構(gòu)。而這些FIFO既可被分配給特定的CAN節(jié)點,也可被分配給一個未使用節(jié)點的鏈表。由于僅需將輸入到節(jié)點的報文與分配給該鏈表的報文對象進(jìn)行比較,報文對象的判斷速度得到提高。當(dāng)然,需要將FIFO基礎(chǔ)報文對象鏈接到特定的節(jié)點鏈表。
網(wǎng)關(guān)功能
嵌入式應(yīng)用中通常有多個CAN網(wǎng)絡(luò),以適合該應(yīng)用的不同速度運行。有些報文需要從一個總線系統(tǒng)傳輸?shù)搅硪粋€總線系統(tǒng)。網(wǎng)關(guān)功能對實現(xiàn)上述應(yīng)用非常有效,而且還有可能將網(wǎng)關(guān)和FIFO功能結(jié)合起來。例如,在將出現(xiàn)頻度很高的報文從高速CAN總線傳輸?shù)降退?CAN總線時,將網(wǎng)關(guān)和FIFO功能結(jié)合起來,就有可能在不增加CPU負(fù)荷的前提下實現(xiàn)這種報文傳輸。
分析器模式
CAN網(wǎng)絡(luò)的所有節(jié)點通常都采用CAN協(xié)議,即對報文做出反應(yīng)并進(jìn)行確認(rèn)。在分析器模式下,CAN節(jié)點監(jiān)聽總線,不主動利用協(xié)議進(jìn)行傳輸。該特性對于多種應(yīng)用具有價值。例如在不影響總線運行的情況下檢測波特率,該特性還可以用于實現(xiàn)對運行中的CAN網(wǎng)絡(luò)進(jìn)行熱插拔。更多優(yōu)點包括同步分析和驅(qū)動器延時測量。這可用于幀定時測量,并根據(jù)物理CAN總線情況調(diào)整位定時值。它還能提供所檢測到錯誤的詳細(xì)信息,便于分析出錯原因。比如,上次錯誤代碼(LEC)位域、所有錯誤計數(shù)器的可讀性和錯誤報警級別的靈活下調(diào)。
用于安全應(yīng)用的分析器模式
安全應(yīng)用具有特殊要求,例如在關(guān)鍵路徑中增加冗余部件。在CAN網(wǎng)絡(luò)中,CAN節(jié)點和CAN收發(fā)器就處于這種關(guān)鍵路徑中。通過節(jié)點進(jìn)行的報文傳輸可能會被阻斷,更糟糕的是,總線上其他節(jié)點的通信也可能會受到干擾。英飛凌XC2300系列微控制器最多可提供4個獨立的CAN節(jié)點,并可在多種配置下利用分析器模式進(jìn)行錯誤檢測。利用2個CAN節(jié)點和2個獨立的CAN收發(fā)器,可檢測從物理CAN總線到報文存儲器的錯誤。第二個CAN節(jié)點以分析器模式運行,監(jiān)聽總線,不主動利用協(xié)議進(jìn)行傳輸。這種配置的優(yōu)點在于,CAN收發(fā)器引起的錯誤也能被檢測到。其缺點在于成本。另一種配置是放棄第二CAN收發(fā)器,這種配置在成本上更低,但不能檢測到收發(fā)器引起的錯誤。在兩種配置下,節(jié)點均被異步處理,原因是內(nèi)部協(xié)議處理器按一個報文對象接著另一個的順序請求信息。使用兩個不同的報文對象并通過軟件進(jìn)行比較,以檢驗所收到信息的正確性。這樣甚至能發(fā)現(xiàn)協(xié)議處理器和報文存儲器之間的問題。
圖2 利用網(wǎng)關(guān)功能自主傳送CAN報文,毋須額外增加CPU負(fù)荷
軟件是內(nèi)置安全應(yīng)用中最關(guān)鍵的部分。由于軟件通常被認(rèn)為“不可信”,必須采取強制性的特殊措施,以滿足安全要求。微控制器中集成的附加硬件可以滿足這些要求。即將推出的XC2300系列新型器件可提供下述硬件特性。
存儲器保護(hù)單元
存儲器保護(hù)單元(MPU)區(qū)分不同的軟件任務(wù),為每項任務(wù)分配存儲區(qū),并在其各自指定的存儲區(qū)內(nèi)運行每項任務(wù)。如果某項任務(wù)試圖訪問未被分配給該項任務(wù)的存儲區(qū),該訪問將被阻止,并觸發(fā)一個自陷(trap)。還可采取其他措施,如向外部看門狗發(fā)送出錯報文、關(guān)閉引起錯誤的任務(wù)、切斷安全路徑或者甚至重啟微控制器。MPU將程序存儲區(qū)、數(shù)據(jù)存儲區(qū)和I/O存儲區(qū)分開,控制讀寫,并執(zhí)行存儲器訪問。
圖3 利用分析器模式構(gòu)建完整的冗余路徑,檢測被阻斷或受到干擾的報文傳輸(包括CAN收發(fā)器引起的錯
CRC或存儲檢查模塊
為保證程序和數(shù)據(jù)等存儲信息的完整性,需要進(jìn)行CRC(循環(huán)冗余檢查)。CRC的值通常針對信息塊進(jìn)行計算,并被儲存在某個存儲區(qū)域。在檢查信息時,重新計算CRC的值,并與儲存的CRC值對比。這既可在啟動等時點單次進(jìn)行,也可在運行期間定期進(jìn)行。CRC也能像CAN協(xié)議那樣保護(hù)數(shù)據(jù)通信,還能保護(hù)要求最高數(shù)據(jù)完整性的單個關(guān)鍵安全數(shù)據(jù)或變量。當(dāng)然,軟件也能非常靈活地完成CRC計算,但使用專用硬件的效率更高,因為后者可提高計算速度并將CPU從此類任務(wù)中解放出來。利用DMA(直接內(nèi)存存取)等讀寫功能,可以在無需CPU參與的情況下,在后臺進(jìn)行CRC檢查,將CRC檢查與外設(shè)初始化分開。
FLASH 和RAM上的ECC
在存儲區(qū)域使用CRC機制并由CPU啟動的同時,可以延伸CRC存儲內(nèi)容保護(hù)理念,在存儲模塊本身增加這類機制。由特殊ECC(糾錯碼)多項式生成的附加存儲校檢和來保護(hù)單個存儲數(shù)據(jù)。通過這個校檢和,能檢測到數(shù)據(jù)的意外變化,并在將數(shù)據(jù)提交CPU之前自動予以糾正。這是CRC和ECC的主要區(qū)別。例如,可以檢測到兩個比特錯誤,其中一個比特可被糾正,具體取決于所采用的多項式和存儲ECC值的長度。在進(jìn)行寫入訪問時,生成ECC值,除存儲所寫入的數(shù)據(jù)外,所生成的ECC值也被存儲。在進(jìn)行讀取訪問時,數(shù)據(jù)的ECC被重新計算,并自主地與所存儲的值對比。該機制由硬件執(zhí)行,從系統(tǒng)的角度來看,不需要增加總線周期。目前,ECC一般用于閃存,但出于安全需要,RAM存儲器也采用ECC。
圖4 利用分析器模式構(gòu)建低成本冗余路徑,檢測被阻斷或受到干擾的報文傳輸
結(jié)語
英飛凌全新的XC2300系列微控制器專為安全關(guān)鍵系統(tǒng)而設(shè)計,可支持多個并行的CAN網(wǎng)絡(luò)。網(wǎng)關(guān)功能實現(xiàn)了不同CAN網(wǎng)絡(luò)間的內(nèi)部連接, MultiCAN模塊的分析器模式可增加冗余,以檢測潛在錯誤。其他特性如上次錯誤代碼(LEC)位域、可讀的全部錯誤計數(shù)器以及錯誤報警級別的靈活下調(diào),都使?jié)撛阱e誤更易被發(fā)現(xiàn)。最后但并非最不重要的特性還有:MPU(存儲保護(hù)單元)、CRC(循環(huán)冗余檢查 ) 和ECC(糾錯碼)等,這些特性可檢測關(guān)鍵危險因素,確保運行的軟件安全。只有將各種硬件和軟件特性集合在一起所構(gòu)成的完整系統(tǒng),才能確保CAN系統(tǒng)適用于應(yīng)用。