接上文:AUTOSAR功能安全機制(一)內(nèi)存分區(qū)與實現(xiàn)
2.2時序監(jiān)控
時序是嵌入式系統(tǒng)的一個重要屬性。安全行為要求在正確的時間內(nèi)執(zhí)行系統(tǒng)操作和響應(yīng)。
正確的時間可以用一組必須滿足的時序約束來描述。然而,AUTOSAR SWC本身無法確保正確的時機。這取決于AUTOSAR運行時環(huán)境和基礎(chǔ)軟件的適當(dāng)支持。在集成過程中,需要確保AUTOSAR SWC的時序約束。
2.2.1故障模式
根據(jù)ISO26262,以下與時序和執(zhí)行相關(guān)的故障可被視為 SWC之間干擾的原因:
-
阻塞執(zhí)行
-
死鎖
-
活鎖
-
執(zhí)行時間分配不正確
-
軟件要素之間的同步不正確
時序保護和監(jiān)控可以描述為對以下屬性的監(jiān)控:監(jiān)控任務(wù)在指時序間調(diào)度,滿足執(zhí)行時間預(yù)算,并且不獨占OS資源。
為了保證與安全相關(guān)的功能將遵守其時序約束,應(yīng)檢測并處理壟斷CPU的任務(wù)(例如CPU負載過重,太多中斷請求)。
2.2.2描述
AUTOSAR提供以下時序監(jiān)控機制:
-
使用 OS的時序保護機制。
-
使用Watchdog Manager進行時序程序流監(jiān)控。
本章將解釋W(xué)atchdog Manager在實現(xiàn)應(yīng)用軟件時序監(jiān)控方面的應(yīng)用。
Watchdog Manager還引入了一種稱為邏輯監(jiān)控的機制,該機制可以與死線監(jiān)控結(jié)合使用,以提供高診斷覆蓋率。
此外,本章還將概述AUTOSAR OS的時序保護機制。
2.2.2.1受監(jiān)控實體
Watchdog Manager監(jiān)控AUTOSAR ECU中應(yīng)用程序軟件的執(zhí)行。監(jiān)控的邏輯單元稱為監(jiān)控實體。在AUTOSAR中,受監(jiān)控實體和架構(gòu)構(gòu)建基塊之間沒有固定的關(guān)系。通常,受監(jiān)控實體可以表示一個SWC或SWC的一個Runnable、一個BSW模塊或CDD,具體取決于開發(fā)者的選擇。
受監(jiān)控實體中的重要節(jié)點被定義為檢查點。受監(jiān)控實體的代碼與Watchdog Manager的函數(shù)調(diào)用交互。這些調(diào)用用于向Watchdog Manager報告已到達檢查點。
2.2.2.2Watchdog Manager
Watchdog Manager是AUTOSAR架構(gòu)的基礎(chǔ)軟件模塊。Watchdog Manager將看門狗硬件的觸發(fā)與軟件執(zhí)行的監(jiān)控聯(lián)系起來。當(dāng)檢測到對程序執(zhí)行的時態(tài)和/或邏輯約束的違反時,將采取許多可配置的操作來從此故障中恢復(fù)。
Watchdog Manager為時序程序流監(jiān)控提供以下機制:
活體監(jiān)控:定期監(jiān)控實體對執(zhí)行頻率有限制。通過活體監(jiān)控,Watchdog Manager會定期檢查受監(jiān)控實體的檢查點是否已達到給定限制。這意味著Watchdog Manager會檢查受監(jiān)控實體的運行頻率是否太高或太低。
活體監(jiān)控是使用單個檢查點執(zhí)行的,沒有切換。受監(jiān)控實體必須周期性地調(diào)用檢查點,以發(fā)出其及時操作的信號。OS定期執(zhí)行Watchdog Manager以驗證檢查點參數(shù)。
受監(jiān)控的實體也可以通過多個活體監(jiān)控實例進行監(jiān)控,因此每個活體監(jiān)控都包含一個獨立的檢查點。請參見圖9。

圖9:具有獨立檢查點的實時監(jiān)控
死線監(jiān)控:非周期性或周期性監(jiān)控實體對兩個檢查點之間的時間安排有單獨的限制。通過死線監(jiān)控,Watchdog Manager檢查受監(jiān)控實體的兩個檢查點之間的轉(zhuǎn)換時間。這意味著Watchdog Manager會檢查受監(jiān)控實體中的某些步驟所花費的時間是否在配置的最小值和最大值之內(nèi)。請參見圖10。
如果從未到達第二個檢查點,則死線監(jiān)控將無法檢測到此問題。出現(xiàn)此問題的原因是,在調(diào)用第二個檢查點后,Watchdog Manager將執(zhí)行時序檢查。

圖10:死線監(jiān)控
2.2.2.3 OS的時序保護
根據(jù)AUTOSAR OS規(guī)范,當(dāng)任務(wù)或中斷在運行時錯過其死線時,就會發(fā)生實時系統(tǒng)中的時序故障。
AUTOSAR OS不提供時序保護的死線監(jiān)控。死線監(jiān)控不足以正確識別導(dǎo)致AUTOSAR系統(tǒng)中時序故障的任務(wù)或中斷。違反死線可能是由不相關(guān)的任務(wù)或干擾執(zhí)行的中斷引起的。請咨詢AUTOSAR OS規(guī)范23了解更多詳情。
在固定優(yōu)先級搶占式 OS(如AUTOSAR OS)中,任務(wù)或中斷是否滿足其死線取決于以下因素:
-
任務(wù)/中斷在系統(tǒng)中的執(zhí)行時間。
-
任務(wù)/中斷遭受較低優(yōu)先級的任務(wù)/中斷阻塞共享資源或禁用中斷的阻塞時間。
-
系統(tǒng)中任務(wù)/中斷的到達間隔速率。
為了安全準確地提供時序保護, OS必須在運行時控制這些因素,以確保任務(wù)/中斷可以滿足各自的死線。AUTOSAR OS提供以下時序保護機制:
-
執(zhí)行時間保護。任務(wù)或2類中斷的執(zhí)行時間上限,即所謂的執(zhí)行預(yù)算,通過 OS進行監(jiān)控,以防止時序錯誤。
-
鎖定時間保護。OS監(jiān)控資源阻塞、鎖定和暫停中斷的上限,即所謂的鎖定預(yù)算。
-
到達時間保護。正在激活的任務(wù)或2類中斷到達之間的下限,即所謂的時間片,通過 OS進行監(jiān)控,以防止時序錯誤。
注意:執(zhí)行時間實施需要硬件支持,例如時序?qū)嵤┲袛?。如果使用中斷來實現(xiàn)時間執(zhí)行,則該中斷的優(yōu)先級應(yīng)高到足以“中斷”受監(jiān)控的任務(wù)或中斷。
2.2.3檢測與響應(yīng)
Watchdog Manager為時序和邏輯程序流監(jiān)控提供了三種機制:死線監(jiān)控、活體監(jiān)控和邏輯監(jiān)控。
監(jiān)控機制是靜態(tài)配置的。對于受監(jiān)控實體的監(jiān)控,可以采用多種監(jiān)控機制。
根據(jù)每個已啟用機制的結(jié)果,計算受監(jiān)控實體的狀態(tài)(稱為局部狀態(tài))。當(dāng)確定每個受監(jiān)控實體的狀態(tài)時,然后根據(jù)每個局部監(jiān)控狀態(tài),確定整個MCU的狀態(tài)(稱為全局監(jiān)控狀態(tài))。
根據(jù)每個受監(jiān)控實體的局部監(jiān)控狀態(tài)和全局監(jiān)控狀態(tài),Watchdog Manager會啟動許多機制來從監(jiān)控失敗中恢復(fù)。這些范圍從受監(jiān)控實體內(nèi)的局部錯誤恢復(fù)到ECU的全局重置。
Watchdog Manager可以采用以下錯誤恢復(fù)機制:
-
受監(jiān)控實體中的錯誤處理
如果受監(jiān)控實體是SWC或CDD,則Watchdog Manager可以通過RTE模式機制通知受監(jiān)控實體有關(guān)監(jiān)控情況。然后,受監(jiān)控實體可以采取措施從該故障中恢復(fù)。
Watchdog Manager可能會在檢測到監(jiān)控故障時向診斷事件管理器(DEM)注冊一個條目。受監(jiān)控實體可能會根據(jù)該錯誤條目執(zhí)行恢復(fù)操作。 -
分區(qū)關(guān)閉
如果Watchdog Manager模塊在位于不受信的分區(qū)中的受監(jiān)控實體中檢測到監(jiān)控故障,則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硬件和完整軟件的重新初始化。通常,MCU復(fù)位不會重新初始化ECU硬件的其余分區(qū)。
注:AUTOSAR文檔“應(yīng)用程序級別的錯誤說明”提供了有關(guān)錯誤處理的其他信息。在文檔中,解釋了如何執(zhí)行錯誤處理以及可以從何處獲取所需數(shù)據(jù)(例如替代值)。此外,本文檔還詳細介紹了如何在AUTOSAR中執(zhí)行 OS-Applications/分區(qū)終止和重新啟動。
2.2.4限制
-
檢查點的粒度不是由Watchdog Manager固定的。很少有粗制的檢查點會限制Watchdog Manager的檢測能力。例如,如果應(yīng)用程序SWC只有一個檢查點,指示循環(huán)可運行已啟動,則Watchdog Manager只能檢測此可運行已重新啟動并消除時序約束。相反,如果該SWC在可運行的每個塊和分支上都有檢查點,則Watchdog Manager也可能檢測到該SWC的控制流中的故障。檢查點的高粒度會導(dǎo)致Watchdog Manager的復(fù)雜和大量配置。
-
死線監(jiān)控有一個弱點:它只檢測延遲(當(dāng)報告結(jié)束檢查點時),但它不檢測超時(當(dāng)根本沒有報告結(jié)束檢查點時)。
-
不支持死線監(jiān)控(即開始1、開始2、結(jié)束2、結(jié)束1)的嵌套。
-
每個受監(jiān)控實體具有多個檢查點的“活體監(jiān)控”功能在“Watchdog Manager規(guī)范”中未一致地指定。目前,建議每個監(jiān)控實體僅支持一個活體監(jiān)控檢查點。
-
為了關(guān)閉或重新啟動(作為錯誤響應(yīng))包含受監(jiān)控實體的分區(qū),集成代碼( OS-Applications的重新啟動任務(wù))通過調(diào)用Watchdog Manager的可用函數(shù)來停用(或停用+激活)受影響分區(qū)的所有受監(jiān)控實體。這有點復(fù)雜,在Watchdog Manager規(guī)范文檔的未來版本中被認為是Watchdog Manager的新加功能。
-
庫無法調(diào)用BSW,因此庫不能由Watchdog Manager監(jiān)控。但是,可以通過在模塊的代碼中放置庫調(diào)用之前和之后的檢查點來使用死線監(jiān)控,以監(jiān)控庫實例運行。
-
如何使用受監(jiān)控實體ID標識BSW模塊尚未標準化。
引用來源:AUTOSAR document 2021
轉(zhuǎn)自汽車電子與軟件