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