研究傳統(tǒng)汽車和自動(dòng)駕駛汽車嵌入式安全系統(tǒng)領(lǐng)域的汽車工程師正在尋找有效方式滿足 ISO 26262[1] 嚴(yán)苛的流程標(biāo)準(zhǔn):乘用車研發(fā)領(lǐng)域的功能安全標(biāo)準(zhǔn)。
自動(dòng)駕駛汽車是所有媒體關(guān)注的焦點(diǎn),有關(guān)其功能安全方面的建議層出不窮。雖然如此,這些建議主要集中于最新的編碼方式或消除錯(cuò)誤的工具。行業(yè)專家很早便認(rèn)識(shí)到,保證安全主要是確保系統(tǒng)及其相關(guān)要求正確和適當(dāng),而軟件及編碼方式[2]次之。
以連續(xù)時(shí)間和離散時(shí)間仿真為基礎(chǔ)的 Simulink 可實(shí)現(xiàn)基于模型的設(shè)計(jì), 該工具不僅能夠用于輔助設(shè)計(jì)車輛,還能在車輛進(jìn)入道路測(cè)試或車隊(duì)測(cè)試之前,提前在各種駕駛條件下對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試,并仿真各種故障情況。此外,該工具還支持 ISO 26262 規(guī)定的流程活動(dòng),包括工具認(rèn)證。IEC Certification Kit 對(duì)該工具支持的功能進(jìn)行了詳細(xì)說(shuō)明,還包括了國(guó)際認(rèn)證機(jī)構(gòu) TüV SüD 提供的證書(shū)和報(bào)告。
本文將介紹經(jīng) TüV SüD 認(rèn)證、將 Simulink 應(yīng)用于 ISO 26262 項(xiàng)目的工作流程,還將介紹 ISO 26262 以及基于模型的設(shè)計(jì),并對(duì)下列任務(wù)進(jìn)行說(shuō)明:
需求開(kāi)發(fā)
設(shè)計(jì)建模
代碼生成
設(shè)計(jì)驗(yàn)證
代碼驗(yàn)證
工具認(rèn)證
ISO 26262 和基于模型的設(shè)計(jì)
ISO 26262 包含用于人工設(shè)計(jì)編碼和基于模型的設(shè)計(jì)的規(guī)范。此外,ISO 26262 還認(rèn)可一些采用基于模型設(shè)計(jì)[3]的優(yōu)勢(shì):
模型的無(wú)縫使用能夠有效保證一致性,提高研發(fā)效率。
該標(biāo)準(zhǔn)提及“廣泛使用”數(shù)學(xué)模型,同時(shí)指出利用建模工具將“半形式化的圖形方法”應(yīng)用于軟件開(kāi)發(fā)。該標(biāo)準(zhǔn)還指出建模不僅可獲取要實(shí)現(xiàn)的功能(嵌入式軟件),還可通過(guò)真實(shí)的物理系統(tǒng)(車輛模型和環(huán)境模型)的仿真來(lái)創(chuàng)建整個(gè)系統(tǒng)模型:
由此,便能夠以可接受的計(jì)算速度構(gòu)建高保真度、高復(fù)雜度的車輛系統(tǒng)以仿真接近于實(shí)際的行為。在開(kāi)發(fā)過(guò)程中,車輛/環(huán)境模型將逐漸被實(shí)際系統(tǒng)及其環(huán)境替換,而功能模型將作為設(shè)計(jì)基準(zhǔn),通過(guò)生成代碼將嵌入式軟件應(yīng)用于控制單元。[3]
圖 1 為典型 Simulink 閉環(huán)系統(tǒng)模型。它由控制器、被控對(duì)象以及信號(hào)處理器組成。在 ISO 26262 中,系統(tǒng)設(shè)計(jì)規(guī)范不僅是軟件開(kāi)發(fā)的輸入,更是保證系統(tǒng)安全的基礎(chǔ)[2]。
圖 1:Simulink系統(tǒng)設(shè)計(jì)模型
隨后進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì),直至其成為包含足夠細(xì)節(jié)的、可用于產(chǎn)品級(jí)代碼生成的軟件設(shè)計(jì)基準(zhǔn)。ISO 26262 將這個(gè)模型的詳細(xì)設(shè)計(jì)流程描述為“模型進(jìn)化”[2]:
在實(shí)踐中,[存在]功能模型的進(jìn)化:從早期規(guī)范模型(設(shè)計(jì)模型)到可實(shí)施模型,最終自動(dòng)轉(zhuǎn)換為代碼。
ISO 26262 推薦了各種基于汽車安全完整性等級(jí)(ASILs)的活動(dòng)的實(shí)施方法。您可以根據(jù)您的應(yīng)用場(chǎng)景,利用該規(guī)范建立適當(dāng)?shù)墓ぷ髁鞒?。圖 2 所示為 ISO 26262 流程概覽。實(shí)心箭頭所示為開(kāi)發(fā)活動(dòng),虛線箭頭所示為驗(yàn)證和確認(rèn)活動(dòng)。ISO 26262 中提及的“模型進(jìn)化”以省略號(hào)(…)表示。
圖 2:使用 Simulink 實(shí)施 ISO 26262 軟件開(kāi)發(fā)和驗(yàn)證的流程
需求開(kāi)發(fā)
在實(shí)施安全相關(guān)開(kāi)發(fā)流程時(shí),應(yīng)首先制定功能及安全需求。ISO 26262 建議您利用“軟件架構(gòu)設(shè)計(jì)和軟件安全需求之間的雙向可追溯性”對(duì)軟件架構(gòu)的設(shè)計(jì)進(jìn)行驗(yàn)證。為此,您可以利用 Simulink Requirements 制定并追蹤需求到模型、測(cè)試及代碼。Simulink Requirements 支持對(duì)其他工具的雙向追溯,包括 Microsoft Word、Microsoft Excel 以及 IBM Rational DOORS。需求的實(shí)現(xiàn)和驗(yàn)證狀態(tài)可在 Simulink Requirements 中監(jiān)測(cè)和管理,需求鏈接可顯示在生成的代碼中(圖 3)。
圖 3:Simulink 中的需求規(guī)格
設(shè)計(jì)建模
正如“ISO 2626262 和基于模型設(shè)計(jì)”章節(jié)所述,ISO 26262 說(shuō)明了功能模型從高層可執(zhí)行規(guī)范進(jìn)化為可用于產(chǎn)品級(jí)代碼生成的詳細(xì)設(shè)計(jì)的整個(gè)流程。典型修改和完善包括:
使用 Simulink Control Design 離散化工具將模塊從連續(xù)時(shí)間(S 域)轉(zhuǎn)換為離散時(shí)間(Z 域)
使用 Fixed-Point Designer 將數(shù)據(jù)從雙精度轉(zhuǎn)換至單精度或定點(diǎn)
使用 Stateflow 添加診斷、模式邏輯、狀態(tài)機(jī)以及調(diào)度算法
對(duì)于 ASIL B 至 D,ISO 26262 強(qiáng)烈建議使用建模規(guī)范。此外,還可使用 MAAB 規(guī)范[4],以及 Simulink 提供的用于 ISO 26262 的高完整性規(guī)范。Simulink Check 可自動(dòng)檢查該兩種規(guī)范。Simulink Check 可在編輯時(shí)顯示問(wèn)題,例如不合規(guī)模塊的插入等。此外,還可加入自定義規(guī)范和檢查。
代碼生成
ISO 26262 聲明“軟件單元的實(shí)施包括生成源代碼以及轉(zhuǎn)換為目標(biāo)代碼”。為此,您可以利用EmbeddedCoder生成 Simulink 模型的 C、C++ 以及 AUTOSAR 代碼。該代碼符合 MISRAC:2012 自動(dòng)代碼規(guī)范[5]要求。ISO 26262 指出基于模型設(shè)計(jì)的代碼規(guī)范和手工代碼規(guī)范存在差異,并以 MISRA為例進(jìn)行說(shuō)明。
IEC Certification Kit 可為用于 C、C++ 以及 AUTOSAR 的 Embedded Coder(包括 ASIL A-D)提供工具認(rèn)證支持。其 TüV SüD 證書(shū)報(bào)告做出了如下聲明:
Embedded Coder 滿足 ISO 26262 中關(guān)于工具支持及自動(dòng)化的要求。
Embedded Coder 通常用于以下三種使用案例之一:
用于產(chǎn)品級(jí)代碼生成的模型的 C 代碼生成
用于產(chǎn)品級(jí)代碼生成的模型的 C++ 代碼生成
用于產(chǎn)品級(jí)代碼生成的模型的 AUTOSAR應(yīng)用軟件組件的AUTOSAR代碼和描述文件生成
Embedded Coder 提供了優(yōu)化代碼存儲(chǔ)和速度的選項(xiàng)。此外,您還可以生成處理器專用優(yōu)化代碼,從而有效利用硬件加速器,例如用于 ARM和 Intel的SIMD。您可以通過(guò) ISO 26262 中所述的模型至代碼、處理器在環(huán)來(lái)測(cè)試驗(yàn)證優(yōu)化代碼是否與規(guī)定公差內(nèi)的仿真結(jié)果匹配。
可執(zhí)行目標(biāo)代碼使用編譯器和鏈接器從生成的源代碼中產(chǎn)生,IEC Certification Kit 中的工作流程允許代碼生成器、編譯器和處理器的優(yōu)化,這對(duì)于大批量生產(chǎn)的 ECU 非常關(guān)鍵,而處理器在環(huán)測(cè)試可用于驗(yàn)證可執(zhí)行的目標(biāo)代碼。
設(shè)計(jì)驗(yàn)證
ISO 26262 推薦了一些用于驗(yàn)證軟件設(shè)計(jì)和實(shí)施的靜態(tài)方法和動(dòng)態(tài)方法,包括單元級(jí)和集成級(jí)活動(dòng)。關(guān)于基于模型的設(shè)計(jì),ISO 26262 指出“測(cè)試對(duì)象可以是源于模型的代碼或模型自身,具體取決于軟件開(kāi)發(fā)流程”。
Simulink Test 提供在 Simulink 中進(jìn)行 ISO 26262 驗(yàn)證和確認(rèn)活動(dòng)使用的框架。您可以將其用于制定、管理以及執(zhí)行針對(duì)模型和模型生成代碼的系統(tǒng)化仿真測(cè)試。圖 4 為測(cè)試序列和評(píng)估模塊的示例。
圖 4:Simulink 測(cè)試序列和評(píng)估模塊用于建模和編制復(fù)雜的測(cè)試場(chǎng)景
IEC Certification Kit(適用于 ISO 26262)中的 TüV SüD 報(bào)告明確了自動(dòng)驗(yàn)證和確認(rèn)期間 SimulinkTest 的作用:
[Simulink Test]可自動(dòng)對(duì) Simulink 模型和生成的代碼執(zhí)行核心認(rèn)證和確認(rèn)活動(dòng)。根據(jù)功能安全標(biāo)準(zhǔn) ISO 26262,以下使用案例反應(yīng)了軟件開(kāi)發(fā)期間需要完成的活動(dòng):
開(kāi)發(fā)和執(zhí)行 Simulink 模型測(cè)試
開(kāi)發(fā)和執(zhí)行模型與代碼之間的背對(duì)背測(cè)試
評(píng)估測(cè)試結(jié)果
生成測(cè)試報(bào)告
識(shí)別需求和測(cè)試用例之間的可追溯性
ISO 26262 建議通過(guò)結(jié)構(gòu)覆蓋率分析確定測(cè)試的完整性,識(shí)別非預(yù)期功能。此外,ISO 26262 還列出提高安全度的三種方法,并強(qiáng)烈建議將最后兩種方法用于 ASIL-D:
語(yǔ)句覆蓋
分支覆蓋
MC/DC 覆蓋
關(guān)于基于模型的設(shè)計(jì),該標(biāo)準(zhǔn)指出:“可在模型級(jí)下使用類似結(jié)構(gòu)覆蓋率度量方法,對(duì)模型進(jìn)行結(jié)構(gòu)覆蓋率分析”。對(duì)于結(jié)構(gòu)覆蓋率不足的情況,該標(biāo)準(zhǔn)指出:“應(yīng)指定附加測(cè)試用例或提供合理性說(shuō)明”。
Simulink Coverage 針對(duì)模型和生成的代碼提供結(jié)構(gòu)覆蓋度量功能,使用 Simulink Test 執(zhí)行測(cè)試可輕松啟用該功能。若模型覆蓋率不足,您可以使用 Simulink Design Verifier 自動(dòng)生成其他測(cè)試用例以達(dá)到所需覆蓋率,包括 MC/DC。此外,Simulink Check 還能夠識(shí)別重復(fù)模塊以降低復(fù)雜度。它也包括度量?jī)x表板以評(píng)估項(xiàng)目質(zhì)量,滿足 ISO 26262 要求:“使用低復(fù)雜度、限制大小的軟件組件和接口“(圖 5)。
圖 5:度量?jī)x表板展示了模型規(guī)范的符合程度
IEC Certification Kit 提供工具認(rèn)證支持,以及針對(duì) Simulink Check、Simulink Coverage(包括模型和代碼覆蓋率)、Simulink Design Verifier 以及 Simulink Test 的 TüV SüD 證書(shū)和報(bào)告。
代碼驗(yàn)證
ISO 26262 提供了一些用于驗(yàn)證軟件設(shè)計(jì)和實(shí)施情況的方法。IEC Certification Kit 中介紹了一種用于檢測(cè)已生成代碼中非預(yù)期功能(例如,無(wú)法追蹤至模塊或信號(hào)的代碼)的追溯審查方法。該套件可自動(dòng)生成所需追溯矩陣?;蛘撸谶M(jìn)行軟件在環(huán)(SIL)測(cè)試期間,您可以使用 Simulink Coverage 將模型覆蓋率與代碼覆蓋率進(jìn)行比較,或直接使用 Simulink Code Inspector。
最后,您可以使用 Polyspace Bug Finder 檢查是否符合 MISRA 要求。如果您的項(xiàng)目中含有自動(dòng)和手工的混合代碼,采用 MISRA 檢查和代碼覆蓋分析方法非常有幫助。若對(duì)安全性要求較高,您可以使用 Polyspace Code Prover 以證明不存在運(yùn)行時(shí)錯(cuò)誤,例如除零錯(cuò)誤。
IEC Certification Kit 提供用于 Polyspace 產(chǎn)品的工具認(rèn)證支持以及 TüV SüD 證書(shū)和報(bào)告。
在編譯和生成可執(zhí)行代碼后,您可以利用 PIL 測(cè)試(圖 6)重用模型測(cè)試以驗(yàn)證目標(biāo)處理器上執(zhí)行的代碼(圖 6)。
圖 6:嵌入式處理器PIL的示例
ISO 26262 強(qiáng)烈推薦對(duì) ASIL C 和 D 執(zhí)行背對(duì)背測(cè)試。此外,ISO 26262 還指出在目標(biāo)硬件環(huán)境的替代環(huán)境下測(cè)試的重要性,并強(qiáng)調(diào)需要了解測(cè)試環(huán)境和硬件環(huán)境之間的差異。
源代碼或目標(biāo)代碼不同,例如處理器數(shù)據(jù)和地址的不同字長(zhǎng),可能導(dǎo)致測(cè)試環(huán)境和目標(biāo)環(huán)境之間出現(xiàn)差異。
但正如每位計(jì)算機(jī)科學(xué)家都應(yīng)了解的事實(shí)[6]——跨平臺(tái)存在許多潛在的數(shù)值誤差,特別是浮點(diǎn)數(shù)據(jù)。某些數(shù)值誤差起初很小隨后逐漸累積和增大,這種情況在反饋控制系統(tǒng)中特別明顯。因此,ISO 26262 列出了各種適用于背對(duì)背測(cè)試的在環(huán)測(cè)試方法:
可在不同環(huán)境下執(zhí)行軟件單元測(cè)試,例如:
模型在環(huán)測(cè)試
軟件在環(huán)測(cè)試
處理器在環(huán)測(cè)試
硬件在環(huán)測(cè)試
Simulink Test 可以自動(dòng)執(zhí)行在環(huán)測(cè)試,包括使用 Embedded Coder 執(zhí)行 SIL 和 PIL,使用 SimulinkReal-Time 執(zhí)行 HIL,通過(guò) Simulink Coverage 中的覆蓋率度量功能提供通過(guò)/失敗報(bào)告。
工具認(rèn)證
ISO 26262-8 還對(duì)其他流程進(jìn)行介紹,包括版本控制、配置管理以及文檔編制。同時(shí),這些流程分別由 Simulink Project,Simulink 模型差異識(shí)別和合并(功能),以及 Simulink Report Generator 提供支持。
此外,該標(biāo)準(zhǔn)還提供工具認(rèn)證指南。該標(biāo)準(zhǔn)不允許工具供應(yīng)商認(rèn)證自身工具,而要求用戶對(duì)于特定項(xiàng)目認(rèn)證工具。IEC Certification Kit 通過(guò)提供典型使用案例、參考工作流程、工具分類分析、軟件工具文檔、工具認(rèn)證報(bào)告和確認(rèn)測(cè)試,從而對(duì)工具進(jìn)行有效的預(yù)認(rèn)證。
TüV SüD 審查及審核 MathWorks 工具的開(kāi)發(fā)和質(zhì)量流程、錯(cuò)誤報(bào)告功能,以及認(rèn)證每次產(chǎn)品發(fā)布的結(jié)果。IEC Certification Kit 包含這些 TüV SüD 證書(shū)和報(bào)告,可用于遵守適當(dāng)?shù)尿?yàn)證和確認(rèn)工作流程的需要。該套件提供基于典型工具使用案例(例如本文中突出顯示的)的參考工作流程。
此外,該套件還提供一些更為詳細(xì)的信息,包括將 ISO 26262 目標(biāo)映射至 Simulink 的支持功能(圖7)。
圖 7:摘自 IEC Certification Kit 中 ISO 26262 至 Simulink 的映射
注意,需要考慮使用已認(rèn)證的工具并不一定能保證軟件或系統(tǒng)的安全性。
ISO 26262是乘用車的國(guó)際功能安全標(biāo)準(zhǔn)[1]。它明確了與安全相關(guān)的電子/電氣(E/E)系統(tǒng)在出現(xiàn)故障時(shí)可能導(dǎo)致的危險(xiǎn)。ISO 26262 按照風(fēng)險(xiǎn)類別將汽車安全完整級(jí)別(ASIL)分為四級(jí):從 A 至 D,ASIL D 為最高完整級(jí)。該標(biāo)準(zhǔn)有九個(gè)標(biāo)準(zhǔn)章節(jié),而第十章為指南。每個(gè)章節(jié)均以獨(dú)立文件呈現(xiàn)。ISO 26262 在本質(zhì)上是目標(biāo)導(dǎo)向而非規(guī)范指南,但 ISO 26262 中包含有數(shù)百頁(yè)指南內(nèi)容。第 4、6 和 8 章節(jié)分別介紹系統(tǒng) [ISO 26262-4]、軟件 [ISO26262-6] 和工認(rèn)證具 [ISO 26262-8]。ISO 26262 第一版于 2011 年發(fā)布。第二版預(yù)計(jì)于 2018 年發(fā)布 (ISO26262:2018)。第二版將涉及其他類型車輛標(biāo)準(zhǔn),例如摩托車、卡車和公交車。此外,第二版還包含有關(guān)于半導(dǎo)體(器件)的全新指南。
References:
1. ISO 26262 Road vehicles — Functional safety
2. Nancy G. Leveson, Engineering a Safer World, Systems Thinking Applied to Safety
3. ISO 26262-6 — Part 6: Product development at the software level
4. MAAB Style Guidelines
5. MISRA C:2012
6. David Goldberg, What Every Computer Scientist Should know about Floating-Point Arithmetic
-
處理器
+關(guān)注
關(guān)注
68文章
19293瀏覽量
229966 -
控制器
+關(guān)注
關(guān)注
112文章
16376瀏覽量
178226
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論