王江濤,龔道清,盧 苗,任廣輝,王 云
[1.華東師范大學(xué)國(guó)家可信嵌入式軟件工程技術(shù)研究中心,上海 200062;2.廣東省大灣區(qū)集成電路與系統(tǒng)應(yīng)用研究院,廣東 廣州 510535;3.中科意創(chuàng)(廣州)科技有限公司,廣東 廣州 510535]
隨著汽車電子系統(tǒng)的復(fù)雜度不斷提高,系統(tǒng)失效導(dǎo)致的安全風(fēng)險(xiǎn)也隨之提高。為了降低這些安全風(fēng)險(xiǎn),相應(yīng)電子電氣系統(tǒng)符合功能安全要求逐漸成為趨勢(shì),國(guó)際標(biāo)準(zhǔn)化組織也在2018 年發(fā)布了第二版ISO26262道路車輛功能安全標(biāo)準(zhǔn)[1]。主驅(qū)電機(jī)作為電動(dòng)汽車的動(dòng)力心臟,其安全性是行業(yè)一直以來關(guān)注的焦點(diǎn)。為了支持高階自動(dòng)駕駛,對(duì)于主驅(qū)電機(jī)控制器的功能安全要求也將更高,其功能安全的實(shí)現(xiàn)也成為電機(jī)控制器產(chǎn)品化的研究重點(diǎn)。
文獻(xiàn)[2]針對(duì)純電動(dòng)汽車的電機(jī)控制器,進(jìn)行了功能安全概念及系統(tǒng)開發(fā)的論述,并提出了EGAS 三層架構(gòu)的應(yīng)用方法。文獻(xiàn)[3]基于相電壓和電流進(jìn)行扭矩估算,論述了根據(jù)估算扭矩進(jìn)行扭矩監(jiān)控的方法。文獻(xiàn)[4]分析了基于功能安全要求的電機(jī)控制器硬件設(shè)計(jì)方案,并指出了自由轉(zhuǎn)動(dòng)作為安全狀態(tài)的適用場(chǎng)景。文獻(xiàn)[5]從理論角度分析了主動(dòng)短路作為安全關(guān)斷方法的優(yōu)缺點(diǎn)。文獻(xiàn)[6]針對(duì)功率級(jí)的HiL 開發(fā)了電機(jī)控制器系統(tǒng)級(jí)功能安全測(cè)試的測(cè)試用例以及測(cè)試場(chǎng)景,并指出了該方法對(duì)于符合功能安全驗(yàn)證要求的有效性。
本文依據(jù)ISO26262 功能安全要求,基于ST 的SPC 系列多核微控制器,結(jié)合AUTOSAR 方法論,設(shè)計(jì)了符合功能安全ASIL D 等級(jí)要求的主驅(qū)電機(jī)控制器軟件架構(gòu);并介紹了軟件安全分析方法的實(shí)例。基于不同層級(jí)的實(shí)驗(yàn)平臺(tái),驗(yàn)證了基于該架構(gòu)開發(fā)的軟件對(duì)于實(shí)現(xiàn)ASIL D 等級(jí)功能安全電機(jī)控制器產(chǎn)品的有效性。
根據(jù)ISO26262 要求,確定系統(tǒng)的安全目標(biāo)與汽車安全完整性等級(jí)(ASIL),需要通過危害分析和分析評(píng)估(HARA)得出。HARA 是基于潛在傷害的嚴(yán)重度(S)、場(chǎng)景暴露度(E)和危害事件的可控度(C)三個(gè)參數(shù)分析確定系統(tǒng)的安全目標(biāo)及其安全等級(jí)。針對(duì)主驅(qū)電機(jī)控制器系統(tǒng)的功能,進(jìn)行危害分析和分析評(píng)估,通過分析系統(tǒng)的潛在風(fēng)險(xiǎn),確定其安全完整性等級(jí),進(jìn)而歸納總結(jié)出安全目標(biāo)及相關(guān)功能安全要求??紤]到篇幅限制,本文列舉了扭矩控制功能的部分HARA 結(jié)果作為參考,如表1 所示。
表1 電機(jī)控制器的危害和風(fēng)險(xiǎn)分析
基于上文危害分析和風(fēng)險(xiǎn)評(píng)估分析確定出來的安全目標(biāo)與安全完整性等級(jí),即可執(zhí)行ASIL D 要求的電機(jī)控制器功能安全產(chǎn)品開發(fā)。安全產(chǎn)品需要基于高置信度的安全架構(gòu)進(jìn)行開發(fā),通常會(huì)采用行業(yè)廣泛認(rèn)可的EGAS 三層架構(gòu)進(jìn)行設(shè)計(jì)。在使用EGAS 架構(gòu)時(shí),為了降低系統(tǒng)成本與開發(fā)難度,可對(duì)ASIL 等級(jí)進(jìn)行恰當(dāng)?shù)姆纸?,將其分解為基本功能與安全功能兩部分。對(duì)基本功能的開發(fā)執(zhí)行QM 等級(jí)標(biāo)準(zhǔn)要求,而對(duì)安全功能的開發(fā)執(zhí)行ASIL 等級(jí)標(biāo)準(zhǔn)要求。對(duì)于本文的主驅(qū)電機(jī)控制器而言,將系統(tǒng)安全等級(jí)要求分解為ASIL D=QM(D)+ASIL D(D)。
EGAS 三層架構(gòu)通過對(duì)電機(jī)控制器的功能進(jìn)行分層,從而實(shí)現(xiàn)電機(jī)控制器的安全實(shí)時(shí)監(jiān)控。為了實(shí)現(xiàn)上述分層,通常有兩種解決方式,一種是通過多核處理器實(shí)現(xiàn),另一種是通過雙芯片微處理器實(shí)現(xiàn)[7-8]。
雙芯片微處理器的系統(tǒng)安全架構(gòu)如圖1 所示。雙芯片微處理器的系統(tǒng)安全架構(gòu)通過功能芯片實(shí)現(xiàn)扭矩控制功能,即執(zhí)行沒有安全完整性等級(jí)要求的Level1功能,單獨(dú)的安全芯片實(shí)現(xiàn)扭矩監(jiān)控的安全功能,即執(zhí)行ASIL D 的Level2 和Level3 功能。該架構(gòu)基于單獨(dú)的硬件芯片,充分保證了硬件資源與軟件代碼的完全獨(dú)立,可以簡(jiǎn)單可靠的實(shí)現(xiàn)ASIL D 等級(jí)要求的系統(tǒng),但產(chǎn)品硬件成本偏高且硬件結(jié)構(gòu)稍顯復(fù)雜,為了降低產(chǎn)品的物料成本,本文設(shè)計(jì)了通過多核處理器實(shí)現(xiàn)的系統(tǒng)安全架構(gòu)。
圖1 雙芯片微處理器的安全架構(gòu)
本文基于多核處理器的系統(tǒng)安全架構(gòu)設(shè)計(jì)如圖2所示?;谶x用的ST SPC 系列單片機(jī)提供的多核處理器,該架構(gòu)在硬件層實(shí)現(xiàn)了對(duì)基本控制功能與安全監(jiān)控功能的分離,需要在軟件層面實(shí)現(xiàn)滿足ASIL D 的EGAS 架構(gòu)。該架構(gòu)中CPU1 為非鎖步核,在該非安全核中執(zhí)行扭矩控制相關(guān)的程序(Level1),而CPU2 和CPU0 是鎖步核,在這兩個(gè)安全核中執(zhí)行安全功能,即在CPU2 執(zhí)行扭矩監(jiān)控相關(guān)的程序(Level2),同時(shí)與外部的看門狗實(shí)現(xiàn)對(duì)單片機(jī)本身及其中運(yùn)行程序流的監(jiān)控(Level3)。CPU2 通過實(shí)時(shí)的對(duì)扭矩進(jìn)行計(jì)算與監(jiān)控,當(dāng)監(jiān)測(cè)到扭矩異常影響安全時(shí),通過CPU2 發(fā)出的指令信號(hào)輸出到PWM 驅(qū)動(dòng)處理電路進(jìn)行PWM 波封鎖實(shí)現(xiàn)安全關(guān)斷,從而激活電機(jī)控制器系統(tǒng)安全狀態(tài);當(dāng)看門狗監(jiān)測(cè)到程序流或芯片異常后,在直接輸出使能信號(hào)對(duì)PWM 驅(qū)動(dòng)處理電路進(jìn)行封鎖的同時(shí)激活電機(jī)控制器系統(tǒng)安全狀態(tài)。
圖2 多核處理器的系統(tǒng)安全架構(gòu)
根據(jù)ISO26262 對(duì)軟件開發(fā)的要求以及1.2 節(jié)的分析,為了通過軟件實(shí)現(xiàn)EGAS 架構(gòu),軟件架構(gòu)的設(shè)計(jì)至關(guān)重要,需要將軟件元素之間進(jìn)行解耦,而AUTOSAR架構(gòu)則很好的滿足了此要求。圖3 是基于AUTOSAR 方法論針對(duì)本文電機(jī)控制器設(shè)計(jì)的軟件靜態(tài)架構(gòu)。
圖3 電機(jī)控制器軟件靜態(tài)架構(gòu)
圖中標(biāo)深色的為帶有安全等級(jí)的軟件模塊,底層主要是系統(tǒng)服務(wù)模塊,看門狗服務(wù)模塊,安全MCAL 模塊以及安全相關(guān)的復(fù)雜驅(qū)動(dòng)模塊,應(yīng)用層帶有安全等級(jí)的模塊是扭矩計(jì)算與扭矩監(jiān)控模塊;其余部分包含電機(jī)控制應(yīng)用層均為QM 軟件模塊。其中安全相關(guān)的復(fù)雜驅(qū)動(dòng)模塊主要包含SafeTKit 等模塊。
軟件架構(gòu)設(shè)計(jì)除開指導(dǎo)軟件開發(fā),也需要設(shè)計(jì)一些安全機(jī)制保證滿足功能安全要求。而基于多核處理器開發(fā)功能安全產(chǎn)品,安全軟件與功能軟件是通過同一個(gè)單片機(jī)實(shí)現(xiàn),因此保證安全軟件的免于干擾將是實(shí)現(xiàn)軟件功能安全的關(guān)鍵一環(huán)。根據(jù)ISO26262 要求,如果系統(tǒng)設(shè)計(jì)者不能證明所開發(fā)安全軟件可以免于非安全軟件的干擾,則需要通過技術(shù)手段實(shí)現(xiàn)免于干擾。為了實(shí)現(xiàn)免于干擾,需要從內(nèi)存、時(shí)間和執(zhí)行以及信息交互等方面著手。
內(nèi)存的免于干擾,主要需要實(shí)現(xiàn)未經(jīng)授權(quán)訪問安全相關(guān)軟件組件的內(nèi)存區(qū)域的防護(hù),是由支持內(nèi)存保護(hù)機(jī)制的操作系統(tǒng)來保證,這里的操作系統(tǒng)需要滿足可擴(kuò)展性等級(jí)3 或4。在操作系統(tǒng)滿足了相應(yīng)要求的情況下,硬件需要具備內(nèi)存保護(hù)單元(MPU:Memory Protection Unit)以支持實(shí)現(xiàn)內(nèi)存保護(hù)機(jī)制。
在操作系統(tǒng)中,用于實(shí)現(xiàn)內(nèi)存保護(hù)部分的軟件被稱為安全上下文(Safe Context),控制了軟件組件在任務(wù)切換和中斷的期間的隔離,可以防止一個(gè)軟件組件在未經(jīng)許可的情況下,寫入另一個(gè)軟件組件的內(nèi)存。安全上下文被開發(fā)為ASIL D 等級(jí),因此被授權(quán)在運(yùn)行期間,重新配置受MPU 保護(hù)的各種任務(wù)和中斷的內(nèi)存范圍。這保證了在保存和恢復(fù)上下文數(shù)據(jù)(包括MPU 配置)方面與ASIL D 的一致性。
通過對(duì)操作系統(tǒng)對(duì)象(如任務(wù)和中斷)進(jìn)行邏輯分組,并將其對(duì)應(yīng)到MPU 配置中。并借助于AUTOSAR 中定義的操作系統(tǒng)應(yīng)用程序(OS-Application)的概念,則可用于配置操作系統(tǒng)?;谠撆渲?,根據(jù)QM 過程開發(fā)的基礎(chǔ)軟件模塊被合并到一個(gè)單獨(dú)的操作系統(tǒng)應(yīng)用程序中并與ASIL 等級(jí)的軟件隔離,因此避免了ASIL 軟件的內(nèi)存被QM 等級(jí)的軟件進(jìn)行錯(cuò)誤的改寫。
基于軟件分區(qū),我們將應(yīng)用層的電機(jī)控制功能模塊以及扭矩監(jiān)控功能模塊進(jìn)行分區(qū)保護(hù),以及底層安全相關(guān)模塊和非安全相關(guān)模塊進(jìn)行分區(qū)保護(hù),從而實(shí)現(xiàn)內(nèi)存上面的免于干擾。
時(shí)間和執(zhí)行的保護(hù)需要基于操作系統(tǒng)的時(shí)間保護(hù)實(shí)現(xiàn),信息交互的保護(hù)則需要基于AUTOSAR 的端到端通信庫實(shí)現(xiàn)。限于篇幅,這里僅對(duì)內(nèi)存的免于干擾的原理做詳細(xì)的闡述。
除了上述的安全機(jī)制,為了實(shí)現(xiàn)控制器的安全運(yùn)行環(huán)境,需要設(shè)計(jì)EGAS 架構(gòu)中的Level3 來保證,本文設(shè)計(jì)的Level3 軟件功能架構(gòu)如圖4 所示。其中的SafeTKit 軟件模塊,基于單片機(jī)內(nèi)部集成的硬件安全機(jī)制,通過檢測(cè)這些硬件安全機(jī)制是否能夠如預(yù)期正常工作,可以幫助實(shí)現(xiàn)控制器的安全運(yùn)行環(huán)境。
圖4 Level3 軟件功能架構(gòu)
SafeTKit 是基于SPC 系列單片機(jī)開發(fā)的功能安全測(cè)試庫,滿足ASIL D 的功能安全等級(jí)要求。SafeTKit 提供兩種單片機(jī)的測(cè)試功能,一種是針對(duì)潛伏故障的檢測(cè)功能,這種檢測(cè)功能可在Earlypre-Run,Pre-Run,Post-Run 等階段運(yùn)行一次即可;另一種是對(duì)單點(diǎn)故障的檢測(cè)功能,可在Run 階段周期性運(yùn)行。SafeTKit 軟件包括如下兩個(gè)部分。
(1)單片機(jī)測(cè)試功能庫,主要包含F(xiàn)CCU 的測(cè)試、寄存器的測(cè)試、DMA 的測(cè)試、邏輯/內(nèi)存的自建測(cè)試、內(nèi)存的ECC 功能測(cè)試、時(shí)鐘監(jiān)控功能測(cè)試以及ADC 功能測(cè)試等。
(2)單片機(jī)安全相關(guān)功能驅(qū)動(dòng)庫,主要包括FCCU驅(qū)動(dòng)、MPU 驅(qū)動(dòng)、堆棧保護(hù)監(jiān)控以及基于軟件的自檢驅(qū)動(dòng)(SBST)。
SafeTKit 的自檢測(cè)試分為以個(gè)階段進(jìn)行運(yùn)行:Early pre-run 階段,F(xiàn)CCU 對(duì)應(yīng)的故障觸發(fā)未配置完成,它不會(huì)標(biāo)志出任何由硬件安全機(jī)制檢測(cè)到的錯(cuò)誤,因此不能進(jìn)行單片機(jī)潛伏故障的故障注入測(cè)試,此時(shí)可以測(cè)試FCCU 錯(cuò)誤信號(hào)。Pre-run 階段會(huì)測(cè)試單片機(jī)的各個(gè)部件的安全機(jī)制以及FCCU 的對(duì)于測(cè)試的響應(yīng),其中包括操作系統(tǒng)啟動(dòng)前完成的測(cè)試以及在激活操作系統(tǒng)后立即進(jìn)行的測(cè)試。Run 階段會(huì)周期性執(zhí)行單點(diǎn)故障測(cè)試,如基于軟件的自檢測(cè)試,該功能需要基于用戶的軟件以及SafeTKit 當(dāng)中的驅(qū)動(dòng)共同完成;除此之外,基于SafeTKit 提供的驅(qū)動(dòng),單片機(jī)的硬件安全機(jī)制將會(huì)進(jìn)行故障監(jiān)測(cè),如果檢測(cè)到錯(cuò)誤,SafeTKit 會(huì)觸發(fā)FCCU警報(bào)。
使用AUTOSAR 架構(gòu)來實(shí)現(xiàn)電機(jī)控制器軟件,可以把SafeTKit 作為AUTOSAR 的復(fù)雜設(shè)備驅(qū)動(dòng),如圖3 所示。在AUTOSAR 架構(gòu)中,可以在EcuM 中觸發(fā)SafeTKit的初始化以及執(zhí)行Pre-run 測(cè)試。Pre-run 測(cè)試可以被拆分為幾個(gè)部分,并分別被觸發(fā),例如分別在操作系統(tǒng)啟動(dòng)前后觸發(fā)測(cè)試。當(dāng)然,SafeTKit 也可以集成到非AUTOSTR 環(huán)境中。圖5 是在AUTOSAR 架構(gòu)中FCCU子模塊Pre-run 測(cè)試的軟件動(dòng)態(tài)架構(gòu)。
圖5 FCCU 模塊Pre-run 測(cè)試軟件動(dòng)態(tài)架構(gòu)
由于軟件架構(gòu)當(dāng)中具有多個(gè)執(zhí)行安全功能的模塊,為了在早期發(fā)現(xiàn)軟件當(dāng)中可能存在的安全缺陷,軟件架構(gòu)設(shè)計(jì)需要執(zhí)行安全分析。同時(shí),根據(jù)ISO26262 的要求,需要通過軟件安全分析對(duì)軟件架構(gòu)進(jìn)行迭代設(shè)計(jì)。
FMEA 分析是一種基于歸納的安全分析方法。FMEA 分析的目的是系統(tǒng)地評(píng)估故障在軟件組件輸出端的傳播,檢查軟件系統(tǒng)是否在的適當(dāng)位置定義了適當(dāng)?shù)陌踩珯C(jī)制,并定義相應(yīng)的相關(guān)的發(fā)現(xiàn)和防范措施以降低風(fēng)險(xiǎn)。表2 是對(duì)扭矩控制控制模塊中的輸出信號(hào)處理模塊的軟件FMEA 分析。
表2 電機(jī)控制器的軟件FMEA 表格
系統(tǒng)理論過程分析(Systems-Theoretic Processes Analysis, STPA)是基于系統(tǒng)工程原理和控制理論進(jìn)行危害識(shí)別和安全約束設(shè)計(jì)的分析方法[9]。傳統(tǒng)的危害分析方法FTA 和FMEA 均是基于可靠性理論去分析一個(gè)或多個(gè)部件失效所造成的危害。與這些傳統(tǒng)方法不同的是,STPA 除了可以分析由部件設(shè)計(jì)缺陷或者部件之間不安全的交互所造成的事故,還可以用于消除或減輕系統(tǒng)早期設(shè)計(jì)階段的潛在危害。STPA 作為一種迭代的方法,使開發(fā)與設(shè)計(jì)同時(shí)進(jìn)行,在設(shè)計(jì)形成早期就進(jìn)行分析,并且給出相關(guān)的決策對(duì)設(shè)計(jì)進(jìn)行改進(jìn),使系統(tǒng)開發(fā)經(jīng)濟(jì)有效[10]。STPA 應(yīng)用于軟件的分析,將有助于發(fā)現(xiàn)軟件當(dāng)中的動(dòng)態(tài)部分的潛在失效。
通過應(yīng)用STPA 對(duì)扭矩控制軟件系統(tǒng)的分析,得到以下結(jié)論。
(1)影響電機(jī)控制功能安全的事故類型主要有兩種:①當(dāng)電機(jī)控制系統(tǒng)處于激活狀態(tài)時(shí),發(fā)生非預(yù)期輸出扭矩;②當(dāng)沒有扭矩請(qǐng)求時(shí),電機(jī)控制扭矩輸出被意外激活。
(2)系統(tǒng)級(jí)危害主要有兩類:①車輛發(fā)生非預(yù)期加速;②車輛發(fā)生非預(yù)期減速。
(3)如圖6 所示,通過電機(jī)控制軟件系統(tǒng)安全分析控制流程架構(gòu),可分析電機(jī)控制各個(gè)子系統(tǒng)之間的交互安全性。
圖6 電機(jī)控制軟件系統(tǒng)控制流程架構(gòu)
(4)子系統(tǒng)之間非安全控制動(dòng)作可分為四類,以輸入信號(hào)計(jì)算為例,第一類是沒有提供數(shù)據(jù),如沒有電流信息和旋變信息;第二類是提供錯(cuò)誤數(shù)據(jù),如錯(cuò)誤的旋變信息;第三類是提供數(shù)據(jù)的延時(shí)較大,如電流信息非實(shí)時(shí);第四類是提供的信息不準(zhǔn)確,如旋變信息不準(zhǔn)確。
(5)安全需求:安全需求分析對(duì)應(yīng)于ISO26262 中功能安全要求分析過程。使用STPA 時(shí),每個(gè)非安全控制動(dòng)作將轉(zhuǎn)換成在子系統(tǒng)或部件上的安全需求。如(4)中所述第一類非安全動(dòng)作轉(zhuǎn)化成安全需求就輸入信號(hào)處理模塊需要處理完整的電流與旋轉(zhuǎn)變壓器信息。
(6)分析安全影響因素,解決措施是在軟件控制系統(tǒng)當(dāng)中增加對(duì)于輸入信號(hào)的完整性診斷,以保證在電機(jī)控制系統(tǒng)失效的情況下,控制系統(tǒng)可以發(fā)現(xiàn)這些錯(cuò)誤的輸入,進(jìn)而采取相應(yīng)動(dòng)作使系統(tǒng)進(jìn)入安全狀態(tài)。
為了驗(yàn)證SafeTKit 軟件單元的功能及其有效性,搭建了如圖7 所示的軟件單元驗(yàn)證實(shí)驗(yàn)平臺(tái)。由于軟件單元較多,本文僅列舉指令集測(cè)試這一個(gè)例子。
圖7 軟件單元驗(yàn)證實(shí)驗(yàn)平臺(tái)
指令集測(cè)試通過調(diào)用SafeTKit 當(dāng)中的SBST Driver模塊,再配合上用戶應(yīng)用代碼,通過逐組測(cè)試可在CPU上運(yùn)行的指令集中的指令代碼,進(jìn)而檢查CPU 是否存在影響安全的故障。具體的測(cè)試流程如圖8 所示。
圖8 指令集測(cè)試流程
指令集測(cè)試以外部看門狗的問題作為觸發(fā)信號(hào),并將測(cè)試結(jié)果回復(fù)給看門狗。當(dāng)進(jìn)行指令集測(cè)試時(shí),首先判斷是否為新的問題的同時(shí),檢查測(cè)試開始標(biāo)志是否置位,若為新的問題且當(dāng)前測(cè)試開始標(biāo)志未置位,則將指令測(cè)試計(jì)數(shù)器賦值為0,然后開始運(yùn)行指令集,某一段指令運(yùn)行完并保存運(yùn)行結(jié)果后調(diào)用故障注入功能函數(shù),當(dāng)故障注入之后,再次運(yùn)行該段指令并判斷對(duì)于當(dāng)前運(yùn)行的指令是否檢測(cè)到故障,若檢測(cè)到故障,則測(cè)試通過,同時(shí)指令測(cè)試計(jì)數(shù)器遞增;遞增之后檢查是否大于最大值,如果大于最大值,意味著該組指令測(cè)試結(jié)束,在結(jié)果發(fā)送之后置位新問題標(biāo)志并將計(jì)數(shù)清零。如果不大于最大值,則接著進(jìn)行未測(cè)試指令的檢查。一旦在故障注入后檢測(cè)不到故障,則認(rèn)為CPU 發(fā)生異常,則指令測(cè)試錯(cuò)誤標(biāo)志置位,同時(shí)單片機(jī)硬件故障處理單元發(fā)送報(bào)警信號(hào)。
通過修改用戶軟件,將上述步驟中的錯(cuò)誤檢測(cè)函數(shù)修改成屏蔽錯(cuò)誤檢測(cè)功能。因此當(dāng)指令集測(cè)試的錯(cuò)誤注入后,無法檢測(cè)到應(yīng)該檢測(cè)到的CPU 錯(cuò)誤,指令集測(cè)試功能直接觸發(fā)了FCCU 的故障標(biāo)志,F(xiàn)CCU 的故障輸出引腳由PWM 波被拉高,從而表征了單片機(jī)的CPU故障,而電機(jī)控制器系統(tǒng)也將根據(jù)該信號(hào)的變化進(jìn)行更進(jìn)一步的安全響應(yīng),從而避免了CPU 的單點(diǎn)故障導(dǎo)致的系統(tǒng)安全風(fēng)險(xiǎn)。
類似于指令集測(cè)試,通過對(duì)內(nèi)存、時(shí)鐘以及FCCU等單片機(jī)硬件模塊進(jìn)行操作,注入故障(圖9~圖11),得到單片機(jī)對(duì)于故障的響應(yīng)測(cè)試結(jié)果如圖12 所示,表明相應(yīng)的軟件單元已滿足功能要求,可以有效的完成功能安全自測(cè)試。
圖9 注入內(nèi)存故障
圖10 注入時(shí)鐘故障
圖11 注入FCCU 故障
圖12 軟件單元故障注入測(cè)試結(jié)果
軟件集成測(cè)試不僅是保證系統(tǒng)完整性的前提,同時(shí)也可以對(duì)軟件架構(gòu)及軟件設(shè)計(jì)的符合性進(jìn)行驗(yàn)證。為了驗(yàn)證扭矩監(jiān)控功能,本文在多個(gè)工況下進(jìn)行了故障注入測(cè)試。該測(cè)試通過在軟件中制造扭矩控制錯(cuò)誤,從而觸發(fā)扭矩監(jiān)控功能并使系統(tǒng)進(jìn)入主動(dòng)短路的安全狀態(tài)?;趫D13 的軟件集成驗(yàn)證實(shí)驗(yàn)平臺(tái),500rpm/50Nm 工況的實(shí)驗(yàn)結(jié)果列舉如下。
圖13 軟件集成驗(yàn)證實(shí)驗(yàn)平臺(tái)
圖14 和圖15 是500rpm/50Nm 工況下進(jìn)入主動(dòng)短路時(shí)的三相電流波形以及dq 軸電流波形。
圖14 主動(dòng)短路時(shí)的三相電流波形
圖15 主動(dòng)短路時(shí)的dq 軸電流波形
本文概述了電機(jī)控制器的安全目標(biāo)以及安全完整性等級(jí)的確定,依據(jù)此進(jìn)行了系統(tǒng)架構(gòu)的概要設(shè)計(jì)。并根據(jù)ISO26262 功能安全要求,基于ST 的SPC 系列多核微控制器,結(jié)合AUTOSAR 方法論,設(shè)計(jì)了符合功能安全ASIL D 等級(jí)要求的主驅(qū)電機(jī)控制器軟件架構(gòu)。在軟件架構(gòu)設(shè)計(jì)中,闡述了軟件架構(gòu)設(shè)計(jì)中的重要安全機(jī)制,包括軟件分區(qū)和SafeTKit 功能。在對(duì)安全機(jī)制進(jìn)行分析的基礎(chǔ)上,闡述了在軟件架構(gòu)級(jí)別進(jìn)行安全分析的實(shí)施過程,使用的軟件安全分析方法包括FMEA分析以及STPA 分析,與傳統(tǒng)的軟件安全分析方法不同,本文進(jìn)行了軟件的STPA 分析,覆蓋了軟件當(dāng)中的動(dòng)態(tài)交互部分。最后進(jìn)行軟件的實(shí)驗(yàn)驗(yàn)證,軟件的實(shí)驗(yàn)驗(yàn)證包含指令集測(cè)試模塊的軟件單元的測(cè)試和扭矩監(jiān)控功能的軟件集成測(cè)試。經(jīng)過軟件安全分析論證以及實(shí)驗(yàn)驗(yàn)證,基于該電機(jī)控制器軟件架構(gòu)設(shè)計(jì)的軟件可實(shí)現(xiàn)相應(yīng)功能,同時(shí)符合功能安全ASIL D 要求;進(jìn)一步地,將該軟件應(yīng)用于相應(yīng)的電機(jī)控制器產(chǎn)品也可使整個(gè)產(chǎn)品符合功能安全要求。