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