日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測試網(wǎng)

  • 公眾號
    • 汽車測試網(wǎng)

    • 在線課堂

    • 電車測試

使用 MATLAB 的自動駕駛應(yīng)用 ISO 26262 工作流程:指南和最佳實(shí)踐

2024-07-09 14:16:19·  來源:功能安全  
 

在汽車 ECU 中,使用 Simulink ®和 Stateflow ®進(jìn)行ISO ® 26262軟件開發(fā)已非常普遍。特別是在自動駕駛應(yīng)用中,使用 MATLAB ®函數(shù)以及 Simulink 模塊和 Stateflow 圖表實(shí)施軟件設(shè)計正成為一種日益流行的趨勢。本文提供了使用以 MATLAB 為中心的工作流程來驗證是否符合 ISO 26262 軟件標(biāo)準(zhǔn)的最佳實(shí)踐[1] 。這些最佳實(shí)踐是對IEC 認(rèn)證套件中所示的使用基于模型的設(shè)計的 ISO 26262 參考工作流程的補(bǔ)充。


推薦的建模模式


在本文中,我們使用 Simulink 模型結(jié)合 MATLAB 函數(shù)塊的軟件開發(fā)模式(圖 1)。頂層 Simulink 模型包含代碼生成的所有配置設(shè)置。MATLAB 函數(shù)塊調(diào)用外部 MATLAB 函數(shù)。



圖 1. 使用外部 MATLAB 代碼建模模式。


這種建模模式充分利用了 Simulink 模型可用的所有驗證和確認(rèn)工具,同時允許使用 MATLAB 語言[2]實(shí)現(xiàn)功能。它還充分利用了 MATLAB 的廣泛功能。例如,ADAS 開發(fā)通常使用 MATLAB 來實(shí)現(xiàn),因為復(fù)雜的數(shù)學(xué)功能可以用簡潔、優(yōu)雅的方式表達(dá)。


在安全關(guān)鍵型產(chǎn)品開發(fā)環(huán)境中還有其他使用 MATLAB [3]的方法,本文未提及。


MATLAB ISO 26262 參考工作流程:概述


如前所述,本文描述的工作流程基于 IEC 認(rèn)證套件中的 ISO 26262 參考工作流程(圖 2)。


圖 2. IEC 認(rèn)證套件中指定的驗證和確認(rèn)活動。


基于 MATLAB 的工作流程包括針對以下驗證和確認(rèn)活動的附加建議:


·需求編寫和架構(gòu)驗證

·靜態(tài)模型分析

·MIL 測試和 SIL 或 PIL 背靠背測試

·靜態(tài)代碼分析

·文檔


需求編寫和架構(gòu)驗證


ISO 26262 要求提供證據(jù)證明所有要求均已實(shí)施并經(jīng)過測試。在 ISO 26262 參考工作流程中,圖 3 中突出顯示的架構(gòu)驗證和需求編寫活動提供了此證據(jù)。


圖 3.需求鏈接活動。


將需求鏈接到 MATLAB 代碼


使用 Requirements Toolbox?,您可以將需求鏈接到 MATLAB 函數(shù)中的代碼行,就像將需求鏈接到 Simulink 模塊一樣。不同之處在于,現(xiàn)有的缺失需求檢查不會檢查外部 MATLAB 代碼。建議您實(shí)施 Model Advisor 檢查,以查找未鏈接到需求的 MATLAB 容器。容器通常是外部 MATLAB 文件或 MATLAB 函數(shù),具體取決于文件的大小。


MATLAB 工作流程的最佳實(shí)踐 

實(shí)施模型顧問檢查以搜索與需求無關(guān)的 MATLAB 容器。


靜態(tài)模型分析


必須檢查實(shí)施模型中每個組件的可讀性、可理解性和可測試性(圖 4)。Simulink Check? 用于評估模型是否符合 ISO 26262 和 MathWorks高完整性指南。

圖 4. IEC 認(rèn)證套件中指定的靜態(tài)模型分析活動。


語言子集


在 MATLAB 中編程可能涉及使用來自多個不同工具箱的函數(shù)。由于 MATLAB 是一種功能強(qiáng)大且抽象程度高的語言,因此您只需幾行代碼即可開發(fā)復(fù)雜的功能。在某些情況下,一行 MATLAB 代碼可能會導(dǎo)致多行 C 代碼,這使得生成的代碼難以進(jìn)行全面驗證。您需要知道您正在實(shí)現(xiàn)的功能是可測試的。ISO 26262 規(guī)定根據(jù)您使用的函數(shù)類型使用語言子集(ISO 26262 中的表 1)。


我們建議您采取以下步驟來滿足語言子集要求:


·評估使用的 MATLAB 函數(shù),確保它們均不需要大量驗證工作。由于代碼復(fù)雜,可以使用 Model Advisor 識別不推薦函數(shù)的使用情況。

·用更簡單的實(shí)現(xiàn)替換不推薦的 MATLAB 函數(shù)。這些更簡單的函數(shù)將更易于跟蹤和測試。


MATLAB 工作流程的最佳實(shí)踐 

檢查模型時,查找 Model Advisor 檢查himl_0013標(biāo)記的 MATLAB 操作或函數(shù)。如果可能,請用其他函數(shù)替換它們。


如果功能無法替代,則需要單獨(dú)測試。

·通過高覆蓋率的單獨(dú)單元測試來驗證功能。當(dāng)達(dá)到覆蓋率時,通過引用外部單元測試來證明這些功能的使用。


MATLAB 工作流程的最佳實(shí)踐 

如果發(fā)現(xiàn) MATLAB 操作或函數(shù)會生成大量 C 代碼且無法替換,請使用單元測試在外部測試這些函數(shù)。編寫與函數(shù)使用位置相關(guān)的理由,并鏈接到測試結(jié)果的存儲位置。


強(qiáng)數(shù)據(jù)類型


ISO 26262 要求所有變量都是強(qiáng)類型的。Model Advisor 檢查 Simulink 模型中是否存在強(qiáng)類型塊,包括 MATLAB 函數(shù)塊的接口,但它不檢查外部 MATLAB 函數(shù)。為了克服這個障礙,編寫一個檢查來驗證所有 MATLAB 函數(shù)是否都是強(qiáng)類型的。檢查數(shù)據(jù)類型和數(shù)據(jù)維度尤為重要。


MATLAB 工作流程的最佳實(shí)踐 

添加模型顧問檢查以確保 MATLAB 代碼中的所有變量都是強(qiáng)類型的。


MIL 測試和 SIL 或 PIL 背對背測試


背靠背(等效性)測試使您能夠證明生成的代碼的行為與模型相同,如 ISO 26262 表 7 軟件單元驗證方法所建議的那樣。對于目標(biāo)代碼,使用處理器在環(huán) (PIL) 測試;對于生成的 C 代碼,使用軟件在環(huán) (SIL)(圖 5)。測試用例應(yīng)與模型在環(huán) (MIL) 測試中使用的測試用例相同。對于單元驗證,使用 SIL。對于集成測試,建議也在目標(biāo)硬件上執(zhí)行以驗證整個開發(fā)工具鏈。

圖 5. IEC 認(rèn)證套件中指定的模型驗證活動。


預(yù)防意外功能


為了證明在代碼生成過程中沒有添加非預(yù)期的功能,請在模型和代碼測試期間測量測試覆蓋率。測試覆蓋率通常使用 Simulink Coverage? 進(jìn)行背對背測試來完成。根據(jù) ISO 26262,覆蓋率用于評估驗證的完整性并提供證據(jù)證明單元測試的目標(biāo)已經(jīng)實(shí)現(xiàn)。


根據(jù) ISO 26262,需要審查和論證缺少覆蓋率的代碼。使用 Simulink 模塊進(jìn)行開發(fā)時,可以將論證連接到模型,這意味著論證在驗證運(yùn)行之間保留。此選項不適用于外部 MATLAB 函數(shù)。要證明 MATLAB 函數(shù)缺少覆蓋率,請向代碼添加覆蓋率過濾器,然后將其連接到測試工具或 Simulink Test? 中的測試文件。我們的建議是將覆蓋率過濾器文件連接到測試文件(圖 6)。


圖 6. 連接到測試文件的覆蓋率過濾器。


MATLAB 工作流程的最佳實(shí)踐 

通過連接到測試文件的證明過濾器跟蹤外部 MATLAB 代碼中缺失覆蓋的證明。


靜態(tài)代碼分析


根據(jù) ISO 26262 標(biāo)準(zhǔn),靜態(tài)分析包括搜索源代碼文本或模型以查找與已知故障匹配的模式或是否符合建?;蚓幋a指南等活動。靜態(tài)代碼分析是在生成的代碼上執(zhí)行的(圖 7)。


圖 7. IEC 認(rèn)證套件中指定的靜態(tài)代碼分析活動。


MISRA C 合規(guī)性


要評估 MATLAB 生成的代碼是否符合 MISRA ® ?C 標(biāo)準(zhǔn),請使用靜態(tài)代碼分析工具(如 Polyspace Bug Finder?)檢測不符合 MISRA C 標(biāo)準(zhǔn)的代碼并手動調(diào)查結(jié)果。如果不合規(guī)的代碼來自內(nèi)置的 MATLAB 函數(shù),您有兩種選擇:


·用重寫的函數(shù)替換內(nèi)置的 MATLAB 函數(shù)

·對 MISRA C 警告做出解釋


如果可能,我們建議替換該函數(shù)。為確保其他開發(fā)人員不會使用替換的函數(shù),請對非推薦函數(shù)實(shí)施 Model Advisor 檢查。


MATLAB 工作流程的最佳實(shí)踐 

在審查靜態(tài)代碼分析報告時,請檢查 MISRA 警告是否來自內(nèi)置 MATLAB 函數(shù)。如果這些函數(shù)可以替換,則添加 Model Advisor 檢查,當(dāng)使用非推薦函數(shù)時發(fā)出警告。如果不能,請在靜態(tài)代碼分析報告中說明問題。


文檔


在提供符合 ISO 26262 要求的證據(jù)的最終安全案例中,您需要記錄驗證流程中的每個步驟,從需求到驗證。文檔應(yīng)包括功能的設(shè)計描述。圖 8 突出顯示了設(shè)計描述中必須包含的一些活動。


圖 8. 設(shè)計文檔中要包含的活動。


系統(tǒng)設(shè)計說明


Simulink Report Generator? 包含預(yù)定義的系統(tǒng)設(shè)計報告模板。此模板通常足以記錄在 Simulink 中開發(fā)的組件,但不足以記錄外部 MATLAB 函數(shù),因為它們未包含在默認(rèn)系統(tǒng)設(shè)計描述中。因此,我們建議自定義模板以包含外部 MATLAB 代碼。


MATLAB 工作流程的最佳實(shí)踐 

定制系統(tǒng)設(shè)計描述模板以包含外部 MATLAB 代碼。


SOTIF 注意事項


在 ADAS 等復(fù)雜系統(tǒng)中,某個功能可能按預(yù)期運(yùn)行,但仍會導(dǎo)致危險行為。在 ISO 21448 預(yù)期功能安全性 (SOTIF) 標(biāo)準(zhǔn)的指導(dǎo)下,您可以通過將額外的驗證和確認(rèn)活動集成到基于模型的設(shè)計中來解決此問題。我們建議添加隨機(jī)操作條件測試來擴(kuò)展測試并包括未知用例。這些隨機(jī)測試應(yīng)驗證實(shí)施模型和集成目標(biāo)代碼的行為與系統(tǒng)要求相比的情況。


IEC 認(rèn)證套件包括對 SOTIF 的支持。就 SOTIF 而言,Simulink 和 MATLAB 工作流程之間沒有太大區(qū)別。更新后的 IEC 認(rèn)證套件包含有關(guān)使用 Automated Driving Toolbox? 進(jìn)行系統(tǒng)測試的信息。


概括


在符合 ISO 標(biāo)準(zhǔn)的軟件開發(fā)中,完全基于 Simulink 的開發(fā)和以 MATLAB 為中心的工作流程之間的差異并不大。主要區(qū)別在于需要避免使用非推薦函數(shù)。Simulink Check 中的 ISO 26262 檢查中有專門的檢查來識別此類 MATLAB 函數(shù),確保 MATLAB 實(shí)現(xiàn)生成適合高完整性應(yīng)用程序的代碼。使用以 MATLAB 為中心的 ISO 26262 工作流程的其他挑戰(zhàn)可以通過簡單的解決方法來解決,例如使用理由過濾器或?qū)⑿枨筮B接到模型中的多個級別。


[1]本文中的建議基于 MATLAB R2024a。。

[2]開發(fā)人員有時會選擇 MATLAB 而不是 Simulink,因為他們認(rèn)為 Simulink 不支持差異和合并。如果您使用 Simulink,則可以使用內(nèi)置工具來處理差異和合并。如果您的團(tuán)隊使用 Git 等分布式版本控制系統(tǒng),則可以在發(fā)生沖突時進(jìn)行三方合并。

[3]在 MATLAB R2023a 中,發(fā)布了 MATLAB Test?。MATLAB Test 提供用于開發(fā)、執(zhí)行、測量和管理 MATLAB 代碼動態(tài)測試的工具。這使開發(fā)人員可以在開發(fā)高完整性軟件時留在 MATLAB 環(huán)境中。MATLAB Test 使您能夠滿足受監(jiān)管應(yīng)用程序中的規(guī)范,并且是 IEC 認(rèn)證套件的一部分。



分享到:
 
反對 0 舉報 0 收藏 0 評論 0
滬ICP備11026917號-25