基于FPGA的汽車ECU設計充分符合AUTOSAR和ISO 26262標準(四)
用戶可以將在 MCU 和 BSW 層中綜合的外設和硬件協處理器設置成高智能化水平,以釋放 CPU 時間,從而簡化車載 ECU 的軟件。
隨著 ECU 平臺日趨復雜化,系統所需的 I/O 線路數也在不斷增加。在這方面 FPGA 較微控制器有明顯的優勢,因為 FPGA一般能夠提供多得多的用戶引腳數。這一點一般與基于 MCU 的 ECU 有關,因為這種 ECU 需要采用執行并-串數據轉換的外部芯片(比如數字移位寄存器或模擬多路復用器)來擴展 ECU 的輸入和輸出。采用 FPGA 可以繞開這些外部組件,進而縮減材料清單成本以及電子開發板的 PCB尺寸。
先進的 FPGA 器件已經集成有模數轉換器。這個特性對汽車設計意義重大,因為許多 ECU使用模擬信號(比如電池電壓)來實現所需的部分功能。在可編程邏輯器件中集成模數轉換器為 FPGA 開辟了新的應用領域。
與 MCU 類似,FPGA 也提供遠程更新功能。但在這里需要提醒的是,下載到 FPGA 中的位流不僅涉及到軟件代碼,而且與硬件電路也息息相關。這意味著就算產品已經進入量產階段,仍然可以通過系統更新或升級來修改硬件設計。汽車產業非常欣賞這種靈活性,因為它能夠在產品發布后修改缺陷(軟/硬件均可)。
在任何嵌入有符合 ISO 26262安全相關要求的功能的 ECU 中,涉及該實現方案的軟硬件必須根據其分類滿足一定程度的保護要求。從軟件的角度講,它必須體現出抗干擾能力,即運行在 ECU 中的非安全相關代碼一定不能危及同一 ECU 中安全相關類的代碼的運行。這種隔離是保證安全相關功能與非安全相關功能在同一處理器上正確并行運行所必須的。一般來說,在可編程邏輯中管理這些指標比在 MCU 中具有更大的靈活性。
對于面向功能安全的存儲器保護策略,有必要確保只能授權的安全軟件組件有權對特定安全相關信號進行寫入存取。在 MCU 器件環境中,存儲器分區提供了一種故障約束機制,能夠將軟件應用彼此分離,避免其間發生數據錯誤。可編程邏輯很有可能實現一種更有效的自我保護機制。可編程邏輯可以通過專用的單個雙端口存儲器來管理與安全信號相關的 RTE 緩存,這樣數據從寫端口寫入,從讀端口讀取。采用這種方法,可以采用專用的硬件控制器給寫入或讀取這些來自軟件側的信號設置不同的約束條件。這種方法也可以采用寄存器來實現。
能夠在 ECU 系統中導入定制硬件解決方案是 FPGA 的一大優勢,特別是對安全相關的功能而言。具體而言,對 I/O 引腳和 GPIO 控制器,在安全功能中涉及的引腳布局可以組合成定制的 I/O 端口,僅供 ECU 中的安全組件訪問,與器件的其余引腳分離。這是將系統的安全相關引腳與非安全相關引腳分開的理想辦法,從設計上避免了干擾的發生。任何對非安全引腳的訪問都不會破壞安全引腳的狀態,因為安全引腳只受安全相關代碼的管理。這種構思的具體描述見圖 4。
圖4 軟/硬件聯合設計的安全架構,可將安全相關端口和非安全相關端口隔離開來,以保證無干擾
另外,還能夠根據應用或處理該應用的軟件組件的需求定制每個 GPIO 端口的大小,從而避免將 GPIO 端口轉換為不同應用共享的物理資源,如MCU端口的情況。用這種方法,FPGA中每一個由不同軟件組件(比如車窗升降器、雨刷、外后視鏡等)管理的應用都能夠將自己特定的端口映射到系統存儲映射中特定的寄存器。這在 MCU 平臺上無法做到,因為 MCU的端口有固定尺寸(一般為8、16 或 32 位寬)且按字長尋址,而非按位尋址。因此在采用 MCU 的情況下,這種控制寄存器在程序執行的時候變成了有多個 SWC 訪問的共享資源。
我們可以把用于 GPIO 控制器的策略擴展用于其它標準外設。這樣 AUTOSAR 借助 SWC 概念在頂層提倡的功能分區和隔離思路也可以在可編程硬件的幫助下推廣運用到較低層的資源上。這種技術如果采用基于標準 MCU 器件的靜態硬件解決方案是無法實現的。
我們上文介紹的用于 MCU 標準外設的隔離策略也可以用于安全功能的各個通道或數據路徑。這一特性尤其適用于按 ISO 26262 標準的 ASIL 分級組織的精細分類安全目標(見側邊欄)。此項功能可用于將各個通道或者數據路徑分解成較低 ASIL 級別的冗余分區,這樣每一個通道或路徑都以冗余方式運行,后續根據各自的新級別予以實現。這種基于冗余的安全策略是選擇可編程邏輯的又一理由,因為可編程邏輯能夠在同一器件中多次例化多個相同、獨立的處理引擎。另外,滿足某個 ASIL 級別的要求用架構方法(硬件)往往比用抽象軟件能夠更輕松明晰地證明,特別是像抗干擾這樣的功能。C 編程語言中的棧溢出或是數據指針處理不當可能會給系統帶來出乎意料的安全性問題。

評論