一文聊聊高級自動駕駛域控制器功能安全設計
高級自動駕駛中央域控制器的設計過程需要充分掌握其中的安全設計原則,因為前期設計中,無論是架構、軟件、硬件還是通信都是需要充分掌握其設計規則才能充分發揮出相應的優勢,同時規避掉一定的設計問題的。
這里我們講的高階域控制器功能安全設計主要是指包含前端研發中預期功能安全所涉及的場景分析和后端功能安全所涉及的所有子項。首先以硬件基礎層面為連接基點,通過數據通信端實現整個系統架構通信、數據流傳輸,軟件則是燒錄到硬件上,以硬件為載體,通信單元負責相互之間的模塊調用。因此對于域控制器的安全設計端來說。從整車安全能力分析上看,主要的分析過程也包括如下三個方面:系統理論分析 STPA(Systems Theoretic Process Analysis)、失效模式與影響分析FMEA、故障樹分析(Fault Tree Analysis, FTA) 。
對于架構核心中的域控制器來講,其中涉及到非常強大的功能安全等級。我們可以總體分為三個層面:數據通信安全、硬件基礎安全、軟件基礎安全三個層面。而具體到相應的分析過程卻需要充分考慮到包含硬件基礎層面功能安全、軟件基礎層面功能安全以及數據通信能力等幾個方面,且每個方面的分析都需要面面俱到。
數據通信安全?
通信端作為連接和數據流入流出端,對整個系統架構通信起著舉足輕重的作用,對于數據通信層面來說,其功能安全要求主要指通用數據完整性機制、在線計數機制(Rolling Counter)、系統診斷數據刷新、時間戳信息(Time Stamp)、時間溢出(CheckSum)、管理授權代碼、數據冗余、網關等幾大方面。其中,對于數據通信來講,諸如在線計數、診斷、時間溢出校驗等都和傳統的點對點Canbus信號是一致的,而對于下一代自動駕駛來說,數據冗余、中央網關管理優化、數據授權訪問等則是需要重點關注的方面。
他們在功能安全的整體要求如下:
硬件基礎層面
硬件基礎層面的功能安全要求主要是指微控制器模塊、存儲模塊、電源支持、串行數據通信等幾大模塊。
微控制器模塊安全?
這里的微控制器也就是我們常說的AI芯片(SOC)、浮點運算芯片(GPU)以及邏輯運算芯片(MCU)幾個運行于車端域控制器的主要運算單元。從功能安全設計的角度上講,各類不同的微控制器模塊包含通用設計模塊、鎖步核校驗(包含鎖步核比較、鎖步核自檢)、時鐘校驗(包含時鐘比較、時鐘自檢)、程序流監控、心跳監控、硬件看門狗功能、中斷保護、內存/閃存/寄存器監控/自檢、電源監控和自檢、通信保護等幾大方面。
需要說明的是微控制器應通過硬線向監控單元提供“活動心跳”周期性切換信號。切換信號應由安全看門狗管理,該看門狗還提供程序流監控功能。僅允許安全看門狗在看門狗服務期間切換“活動心跳”。微控制器安全軟件則應在每次為內部安全看門狗服務期間切換“活動心跳”,這向監控單元指示微控制器正在運行并且安全看門狗定時器正在運行。系統后臺應通過檢查信號切換和高低狀態的時間都在有效范圍內來監控“活動心跳”切換信號。一旦檢測到“活動心跳”故障,SMU 將激活安全降級。
對于看門狗程序來說,應在系統初始化期間進行測試,以避免潛在的故障。過程中應測試以下故障類型:
- 不正確的看門狗觸發時間(在關閉窗口中觸發);
- 沒有看門狗觸發;
存儲模塊安全
存儲模塊是整個域控不可或缺的一部分,在整個芯片運算過程中,主要用于進行臨時性、常用的文件存儲,以及運算過程中的數據交換,比如我們的操作系統啟動程序就是存放在一個SOC/MCU外掛的存儲單元中,又如我們下一代自動駕駛產品中必須用到行車/泊車高精地圖,通常也是外掛于芯片的存儲單元進行存儲的,還有一些底層軟件中的診斷、日志類的文件也是放到我們外掛的芯片中進行存儲的。那么對于整個存儲單元而言,需要滿足什么樣的條件才能確保達到合適的功能安全條件呢?如下圖做具體說明。
整個存儲單元的安全主要包括寄存器監控、通用存儲單元、RAM/內存 ECC、ECC自檢、閃存冗余、寄存器寫保護、范圍保護、寄存器自檢等多個方面。
電源供給完整性
電源供給的完整性安全方法測試主要是通過對整個電源運行狀態的。通過故障注入,并實時監測來進行的。
一種測試方法示例是配置較高或較低的監控閾值,以強制監控器檢測欠壓或過壓故障并驗證是否正確檢測到故障。注入故障時,電源監視器應激活輔助關閉路徑。微控制器應監控輔助關斷路徑,如果輔助關斷路徑的行為與預期的測試程序一致,則僅考慮測試“通過”,否則視為“失敗”。一旦檢測到失敗,微控制器將激活安全降級。該測試可由專用 BIST 功能支持,并且必須由微控制器軟件根據詳細程序進行配置。
軟件基礎安全?
關于軟件基礎安全層面的設計考慮,主要是對車載智能駕駛軟件開發過程中可能出現的軟件故障進行的綜合考慮。其中包括軟件文檔設計、軟件語言和風格、安全關鍵變量、故障探測和糾錯、軟件架構、安全關鍵代碼、程序流程監控、變更管理等幾個大方面。所有層面的軟件設計描述均應使用自然語言,以定義模型或代碼目的。比如,當多個變量間的獨立性對系統的安全至關重要時,不應將這些變量組合為一個使用變量公共地址的數據要素。這可能導致涉及結構中所有要素的共模系統性失效。如果變量已經分組,則應針對安全關鍵函數進行恰當論證。
本文從功能安全的角度出發,從各個不同的方面詳細分析了整個自動駕駛域控制器設計綜合要素及流程。其中,包含硬件基礎、軟件方法、數據通信等各個方面。這些功能安全設計能力都是在關注整個架構層面的同時,充分關注其內部各個部件之間的聯系,確保設計過程的合規性和完整性,避免在設計后期出現不可預估的后果。因此,作為詳細的安全設計細則,可以為開發工程師提供必要的參考。