接上文:
AUTOSAR功能安全機(jī)制(一)內(nèi)存分區(qū)與實(shí)現(xiàn)
AUTOSAR功能安全機(jī)制(二)時序監(jiān)控
2.3邏輯監(jiān)控
邏輯監(jiān)控是一種用于檢查軟件正確執(zhí)行的技術(shù),側(cè)重于控制流錯誤。
在應(yīng)用程序的無差錯執(zhí)行期間,控制流錯誤會導(dǎo)致與有效(即編碼/編譯)程序序列的背離。如果以不正確的順序處理一個或多個程序指令,或者甚至根本不處理,則會發(fā)生不正確的控制流。例如,控制流錯誤可能導(dǎo)致數(shù)據(jù)不一致、數(shù)據(jù)損壞或其他軟件故障。
2.3.1故障模式
根據(jù)ISO26262,以下與時序和執(zhí)行相關(guān)的故障可被視為 SWC之間干擾的原因:
-
執(zhí)行阻塞
-
死鎖
-
活鎖
-
執(zhí)行時間分配不正確
-
軟件要素之間的同步不正確
程序序列的邏輯和時間符號在汽車行業(yè)中使用,例如在ISO26262中提到,作為檢測處理單元(即CPU,微控制器)故障的度量,以及作為檢測硬件時鐘故障的度量。
程序序列執(zhí)行中的錯誤(即程序序列執(zhí)行無效)可能導(dǎo)致數(shù)據(jù)損壞、進(jìn)程崩潰或違反故障靜默。ISO26262、IEC61508、MISRA要求/建議對程序序列進(jìn)行邏輯監(jiān)控。
2.3.2描述
對程序執(zhí)行序列的邏輯監(jiān)控允許在應(yīng)用程序的無差錯執(zhí)行期間檢測導(dǎo)致與有效程序序列背離的錯誤。如果以不正確的順序處理單個或多個程序指令,或者根本沒有處理,則會發(fā)生不正確的程序流。
Watchdog Manager監(jiān)控AUTOSAR ECU中應(yīng)用軟件的執(zhí)行。監(jiān)控的邏輯單元稱為監(jiān)控單元。在AUTOSAR中,受監(jiān)控實(shí)體和AUTOSAR構(gòu)建模塊之間沒有固定的關(guān)系。通常,受監(jiān)控實(shí)體可以表示一個SWC或一個可運(yùn)行的SWC、BSW模塊或CDD,具體取決于開發(fā)者的選擇。
與受監(jiān)控實(shí)體中的邏輯監(jiān)控相關(guān)的位置定義為檢查點(diǎn)。受監(jiān)控實(shí)體的代碼與Watchdog Manager的函數(shù)調(diào)用交互。這些調(diào)用用于向Watchdog Manager報告已到達(dá)檢查點(diǎn)。
每個受監(jiān)控實(shí)體都有一個或多個檢查點(diǎn)。受監(jiān)控實(shí)體的檢查點(diǎn)和檢查點(diǎn)之間的過渡形成一個圖形。
圖形可以有一個或多個始檢查點(diǎn)和一個或多個終檢查點(diǎn)。假設(shè)檢查點(diǎn)屬于同一圖形,則從任何始檢查點(diǎn)開始到最后一個終檢查點(diǎn)結(jié)束的任何順序都是正確的。
受監(jiān)控實(shí)體中的圖形,稱為內(nèi)部圖形。來自不同監(jiān)控實(shí)體的檢查點(diǎn)可以通過外部轉(zhuǎn)移連接,從而形成外部圖形。
圖11顯示了While-Loop的圖形表示形式,它由檢查點(diǎn)和轉(zhuǎn)移組成。
圖11:While-Loop的抽象控制流圖
在運(yùn)行時,Watchdog Manager將驗(yàn)證受監(jiān)控實(shí)體是否根據(jù)配置的圖形執(zhí)行。這稱為邏輯監(jiān)控。
此外,Watchdog Manager可以驗(yàn)證圖形中檢查點(diǎn)和轉(zhuǎn)移的時間。
檢查點(diǎn)之間的轉(zhuǎn)移時間可以通過時限監(jiān)控進(jìn)行驗(yàn)證,而邏輯監(jiān)控則驗(yàn)證檢查點(diǎn)的正確順序。
2.3.3檢測與響應(yīng)
在設(shè)計階段,將識別有效的程序序列并對其進(jìn)行建模。在運(yùn)行時,Watchdog Manager使用此模型來監(jiān)控或監(jiān)控序列的正確執(zhí)行。
Watchdog Manager為時序和邏輯程序流監(jiān)控提供了三種機(jī)制:時限監(jiān)控、活體監(jiān)控和邏輯監(jiān)控。
監(jiān)控機(jī)制是靜態(tài)配置的。對于受監(jiān)控實(shí)體的監(jiān)控,可以采用多種監(jiān)控機(jī)制。
根據(jù)每個已啟用機(jī)制的結(jié)果,計算受監(jiān)控實(shí)體的狀態(tài)(稱為“局部狀態(tài)”)。當(dāng)確定每個受監(jiān)控實(shí)體的狀態(tài)時,然后根據(jù)每個局部監(jiān)控狀態(tài),確定整個MCU的狀態(tài)(稱為全局監(jiān)控狀態(tài))。
根據(jù)每個受監(jiān)控實(shí)體的局部監(jiān)控狀態(tài)和全局監(jiān)控狀態(tài),Watchdog Manager會啟動一系列機(jī)制,以從監(jiān)控失敗中恢復(fù)。這些范圍從受監(jiān)控實(shí)體內(nèi)的本地錯誤恢復(fù)到ECU的全局重置。
可以采用以下錯誤恢復(fù)機(jī)制:
-
受監(jiān)控實(shí)體中的錯誤處理
如果受監(jiān)控實(shí)體是SWC或CDD,則Watchdog Manager可以通過RTE模式機(jī)制通知受監(jiān)控實(shí)體監(jiān)控失敗。然后,受監(jiān)控實(shí)體可以采取措施從該故障中恢復(fù)。
Watchdog Manager可能會在檢測到監(jiān)控故障時向診斷事件管理器(DEM)注冊一個條目。受監(jiān)控實(shí)體可能會根據(jù)該錯誤條目執(zhí)行恢復(fù)操作。 -
分區(qū)關(guān)閉
如果Watchdog Manager模塊在位于不受信的分區(qū)中的受監(jiān)控實(shí)體中檢測到supervision故障,則Watchdog Manager模塊可以通過調(diào)用BswM來請求分區(qū)關(guān)閉。
-
通過硬件看門狗重置
Watchdog Manager向看門狗接口指示看門狗接口何時不再觸發(fā)硬件看門狗。在硬件看門狗超時后,硬件看門狗將重置ECU或MCU。這導(dǎo)致ECU和/或MCU硬件的重新初始化以及軟件的完全重新初始化。
-
立即復(fù)位MCU
如果需要對監(jiān)控故障立即做出全局響應(yīng),Watchdog Manager可能會直接導(dǎo)致MCU復(fù)位。這將導(dǎo)致MCU硬件和整個軟件的重新初始化。
注:AUTOSAR文檔“應(yīng)用程序級錯誤處理說明”提供了有關(guān)錯誤處理的其他信息。在文檔中,解釋了如何執(zhí)行錯誤處理以及可以從何處獲取所需數(shù)據(jù)(例如替代值)。此外,本文檔還提供了有關(guān)如何在 AUTOSAR中執(zhí)行 OS-Applications/分區(qū)終止和重新啟動的詳細(xì)說明(用戶手冊)。
2.3.4限制
-
對于邏輯監(jiān)控,Watchdog Manager不支持任何重疊的圖形-一個檢查點(diǎn)應(yīng)屬于最多一個圖形。這是能夠?qū)⑹盏降臋z查點(diǎn)通知分配給圖形所必需的。
-
Watchdog Manager不支持對并發(fā)執(zhí)行的監(jiān)控實(shí)體進(jìn)行邏輯監(jiān)控,因?yàn)樗淮沃桓檲D形的一個實(shí)例。
為了關(guān)閉或重新啟動(作為錯誤響應(yīng))包含受監(jiān)控實(shí)體的分區(qū),集成代碼( OS-Applications的重新啟動任務(wù))必須通過調(diào)用Watchdog Manager的可用功能來停用(或停用+激活)所有受監(jiān)控實(shí)體(或停用+激活)所涉及的分區(qū)。
轉(zhuǎn)自汽車電子與軟件