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