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

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

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

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

圖4 測試環(huán)境配置

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

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

圖5 功能安全測試流程
最后查看TC397的輸出結(jié)果,觀察安全機制對應(yīng)的安全機制是否能夠作用,根據(jù)測試結(jié)果與預(yù)期行為對比,可以判斷軟件開發(fā)是否達到預(yù)期要求。
當測試場景流程定義完成后,需要調(diào)用故障注入腳本來對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
......
本示例中的應(yīng)用軟件行為如下:當PMS發(fā)生電壓故障時,TC397會重置Core0并啟動處于掉電狀態(tài)的Core1-Core5。通過注入電源故障進行軟件響應(yīng)測試對PMS進行故障注入,觀測診斷響應(yīng)及安全機制的反應(yīng)。
當TC397啟動后,其注入過程及結(jié)果如圖6所示。 圖6(a)表示TC397虛擬模型啟動,Core0啟動,TC397處于運行狀態(tài),從圖中也可以觀察到六核中各個核軟件的工作情況。圖6(b)顯示在500 μs時進行過壓故障注入,掉電狀態(tài)的Core1-5的啟動和Core0的重啟是在過壓故障產(chǎn)生后的100 μs內(nèi)完成。通過圖6(c)可以發(fā)現(xiàn)電源過壓的情況下,安全機制的過壓標志位做出反應(yīng),診斷時間間隔在5 μs內(nèi),故障產(chǎn)生后20 μs內(nèi)安全機制啟動,Core0在故障產(chǎn)生后40 μs內(nèi)掉電重啟,安全機制發(fā)揮作用,軟件正確響應(yīng)。確認安全機制和響應(yīng)處理的復(fù)雜軟件配置是正確。通過注入故障結(jié)果的分析也可以得到在故障注入后,軟件函數(shù)模塊的反應(yīng),進而確定其安全機制是否正確運行。其余不同電壓的過壓欠壓、漂移、電源尖峰都是通過這種方法進行功能安全的故障注入測試,以達到最高的驗證等級。

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