唐風敏, 李春書, 馮欣陽, 夏顯召, 戎 輝
(1.河北工業大學機械學院, 天津 300401; 2.中汽研(天津)汽車工程研究院有限公司, 天津 300300)
隨著車載汽車電控系統的發展和普及,人們在享受到汽車電控系統帶來的便利的同時,汽車電控系統帶來的失效風險也在日益增加。微控制器作為汽車電控系統的大腦,安全問題更是不容忽視。汽車電控系統在工作過程中,可能會由于電磁干擾、物理碰撞等多種多樣的原因導致汽車電控系統失效。為了解決汽車電控系統失效所導致的人身安全和財產安全等問題,功能安全標準ISO26262應運而生,該標準對汽車電控系統的開發流程和檢測指標提出了相應的要求。ISO26262:2018是現行的功能安全標準,該標準對汽車電控系統從設計開發到運營報廢提出了一系列的要求。ISO26262:2018對汽車半導體應用也提出了要求,對汽車半導體的開發、測試等多方面提供了標準。國外眾多企業及研究機構因起步較早,在汽車半導體功能測試安全方面已有了相當的研究。涉及虛擬仿真以及故障注入測試[1-5];文獻[1]針對SoC(system on chip)安全性分析方法的局限性,提出了通過模擬對診斷覆蓋率實現真是結果的定量方法,從而減少了不必要或者復雜的安全機制;文獻[2]通過使用硬件仿真平臺,采用故障注入的方法驗證了SoCs的魯棒性;文獻[3]提出了一種基于仿真的電路級別的故障分組方法,以減少要模擬 的故障數量,且不會遺漏關鍵型故障;文獻[4]為了減少門級故障注入活動花費的大量時間,提出了通過寄存器傳輸級的SEU(single-event upset)來表示門級SET(single-event transient)的方法,結果表明,該方法能夠減少數十至數百倍的故障空間,從而減少故障注入的工作量。文獻[5]通過在硬件在環回路仿真器上通過故障注入方法驗證了動力裝置的數學模型。中國在半導體層面的功能安全測試研究起步較晚,大部分文獻主要停留在系統的功能安全開發及測試,研究的對象主要是控制器以及整車層面,測試以實際對象為主,吉林大學在電子換擋系統的識別風險、量化風險、降低風險等方面作出了突出貢獻[6];電子科技大學李耀等[7]提出時間狀態機測試建模理論和測試用例生成方法;孫德明等[8]基于dSPACE設備設計了整車控制器硬件在環測試方案,搭建了測試環境,并對某車型整車控制器進行了硬件在環測試;楊劉倩等[9]則是對電動汽車的電源管理系統進行硬件仿真的功能安全測試;趙曉凡[10]基于功能安全對電磁兼容的7個方面闡述其設計及防護方法。對基于硬件環境開發的系統軟件的測試多數也是對最基本的的芯片系統來進行的,對基于新型微控制芯片開發的系統件的測試研究較少。現結合ISO26262的測試標準和汽車V模型開發中對測試相關的要求,以英飛凌TC397作為芯片原型,使用VDK建立TC397虛擬原型,在芯片流片前利用虛擬原型采用軟硬件集成的方式對基于TC397開發的應用軟件進行測試,為基于TC397芯片開發的應用軟件測試提供思路和方法。
汽車功能安全開發過程中一般都采用V型開發,如圖1所示,在基于功能安全的開發體系下,測試環節是必不可少的,測試在軟硬件集成層面、系統集成層面以及整車層面三個不同的水平上進行[11]。軟硬件層面的測試作為最底層的測試,具有不可替代的作用。當開發人員將系統軟件設計完成后,需要對開發得軟件進行集成測試,軟件集成有兩個概念,一種是純粹的軟件模塊集成,一個是硬件和軟件相結合的可編程電子集成[12],相比于純粹的軟件模塊集成,軟硬件結合的集成測試方式具有真實性強、實時性好、易發現軟件在真實環境下運行的缺陷等優點。ISO26262對軟硬件集成層面測試提出以下測試要求:基于技術安全需要的測試、軟硬件層面的故障注入、軟件層面接口的一致性、軟硬件層面的魯棒性測試四個方面。

圖1 汽車V模型開發流程
根據功能安全測試要求以及汽車的V模型開發流程,本研究在軟硬件層面進行故障注入來驗證系統軟件對各種故障的診斷覆蓋率。ISO26262中推薦通過故障注入的方式即將故障引入軟硬件集成系統中,通過技術手段觀察當故障發生后的軟件是否可以正常工作,軟件安全模塊的反應時間,來評估安全機制的診斷范圍、診斷時間間隔和故障反應間隔,確定故障效應等。ISO26262在第11部分即對半導體的應用指南中采用汽車安全完整性等級-ASIL來描述指定安全目標的概率高低。用A、B、C、D等級來表示,其中D級最高[13]。ASIL標準貫穿汽車的整個生命安全周期,不同的ASIL對應用軟件提出了不同的故障覆蓋率要求。等級越高就要求應用軟件對故障的覆蓋率越高,在軟件測試中需要分析和檢測的故障模式就越多。以系統軟件的中斷處理功能為例,ASIL-B等級下系統軟件只需要對中斷卡滯故障進行覆蓋,但是在ASIL-D等級下,系統軟件需要對中斷遺漏、中斷錯誤執行、中斷卡滯、中斷優先級錯誤等多種故障進行覆蓋。
現以英飛凌TC397作為硬件原型,通過VDK工具,建立TC397的虛擬原型,為基于TC397硬件環境下開發的系統軟件提供真實的運行環境,通過故障注入方法測試系統軟件是否正確配置以及是否啟動相應的安全機制,驗證應用軟件的開發是否符合相應的汽車完整性等級,驗證等級最高可以達到ASIL-D水平。TC397屬于英飛凌TC3xx系列,具有高性能的六核結構,其性能、加密和安全功能都符合ISO26262 ASIL-D的體系認證,這些優點都使其適合眾多汽車應用[14],眾多汽車企業紛紛使用其作為電控系統的控制器芯片。
采用Virtualizer開發套件作為建模工具,VDK是一套軟件開發工具包,可適用于各種類型的軟件開發,也適用于常用處理器架構。VDK提供了多種虛擬原型,用戶可使用這些原型來開始軟件啟動,或擴展這些原型以符合設計要求。利用VDK有助于加速汽車軟件開發、提高質量和可靠性,并且降低汽車軟件開發成本。
基于芯片虛擬原型的故障測試流程圖如圖2所示,測試原理圖如圖3所示。

圖2 基于虛擬原型的故障注入測試流程圖

圖3 基于虛擬原型的故障注入測試原理圖
由于安全模塊數量眾多,現僅以TC397的電源管理模塊PMS(power management system)為例,進行后續的測試步驟。軟件測試環境參數配置如圖4所示。對TC397相應的模塊進行分析,確定安全相關的模塊。其部分安全模塊如表1所示。

圖4 測試環境配置

表1 TC397安全相關模塊
當模型建立完成后,需要針對要測試的軟件模塊導出相應的測試用例,這些測試用例要求涵蓋寄存器、信號以及軟件全局變量等測試對象。電源管理系統不同的診斷覆蓋率所需要分析的失效模式如表2所示。
PMS可以管理多個不同的電壓,包括外部電源電壓VEXT、備用域供電電壓VEVRSB、內部電壓VDDPD等。根據表2中所描述的失效模式和各種電壓排列組合,得出PMS系統相應的具體測試用例。

表2 不同的診斷覆蓋率所需要分析的失效模式
確定故障注入測試場景流程,首先選擇測試項目,本研究選擇ASIL-D等級下PMS的系統軟件的安全機制和配置。本文研究以PMS的系統軟件的安全機制和配置為目的,第二步確定測試前置條件,本研究測試采用的前置條件為保持芯片運行模式或者睡眠模式,第三步是故障注入,由于驗證等級是ASIL-D,因此所有的電壓失效模式都要進行故障注入,故障注入有兩種不同的方式,以PMS為例,故障注入1是通過直接改變供壓電源來注入故障,故障注入2通過改變安全管理單元的標志位即SM Flag ALM[x]進行故障注入。PMS的工作模塊以及故障注入流程如圖5所示。

圖5 功能安全測試流程
最后查看TC397的輸出結果,觀察安全機制對應的安全機制是否能夠作用,根據測試結果與預期行為對比,可以判斷軟件開發是否達到預期要求。
當測試場景流程定義完成后,需要調用故障注入腳本來對PMS中的不同的電壓進行故障注入測試,以PMS的過壓欠壓為例,故障注入腳本研究件如下所示:
import sys
import struct
sys.path.insert(0, ′vpconfigs/shared/sim_probes′)
import sim_utils
from sim_utils.sim_print_messages import *
sys.path.insert(0, ′vpconfigs/shared/vdk′)
import smu_utils
......
本示例中的應用軟件行為如下:當PMS發生電壓故障時,TC397會重置Core0并啟動處于掉電狀態的Core1-Core5。通過注入電源故障進行軟件響應測試對PMS進行故障注入,觀測診斷響應及安全機制的反應。
當TC397啟動后,其注入過程及結果如圖6所示。 圖6(a)表示TC397虛擬模型啟動,Core0啟動,TC397處于運行狀態,從圖中也可以觀察到六核中各個核軟件的工作情況。圖6(b)顯示在500 μs時進行過壓故障注入,掉電狀態的Core1-5的啟動和Core0的重啟是在過壓故障產生后的100 μs內完成。通過圖6(c)可以發現電源過壓的情況下,安全機制的過壓標志位做出反應,診斷時間間隔在5 μs內,故障產生后20 μs內安全機制啟動,Core0在故障產生后40 μs內掉電重啟,安全機制發揮作用,軟件正確響應。確認安全機制和響應處理的復雜軟件配置是正確。通過注入故障結果的分析也可以得到在故障注入后,軟件函數模塊的反應,進而確定其安全機制是否正確運行。其余不同電壓的過壓欠壓、漂移、電源尖峰都是通過這種方法進行功能安全的故障注入測試,以達到最高的驗證等級。

圖6 故障注入及結果
對基于TC397虛擬原型的應用軟件進行功能安全測試,采取故障注入的技術,檢測故障發生后安全機制是否啟動來驗證軟件配置的正確性以及是否滿足相應的ASIL需求,測試水平最高可達到ASIL-D。通過VDK工具可以觀察到芯片內部的軟件各個函數在故障注入后的表現,評估診斷時間間隔和故障反應時間間隔等指標。這種測試方法可以極大縮短軟硬件集成的測試時間,加快測試流程,減少不必要的成本,為基于TC397開發的應用軟件的功能安全測試提供了思路。