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