接上文:AUTOSAR功能安全機制(一)內存分區與實(shí)現
2.2時(shí)序監控
時(shí)序是嵌入式系統的一個(gè)重要屬性。安全行為要求在正確的時(shí)間內執行系統操作和響應。
正確的時(shí)間可以用一組必須滿(mǎn)足的時(shí)序約束來(lái)描述。然而,AUTOSAR SWC本身無(wú)法確保正確的時(shí)機。這取決于A(yíng)UTOSAR運行時(shí)環(huán)境和基礎軟件的適當支持。在集成過(guò)程中,需要確保AUTOSAR SWC的時(shí)序約束。
2.2.1故障模式
根據ISO26262,以下與時(shí)序和執行相關(guān)的故障可被視為 SWC之間干擾的原因:
-
阻塞執行
-
死鎖
-
活鎖
-
執行時(shí)間分配不正確
-
軟件要素之間的同步不正確
時(shí)序保護和監控可以描述為對以下屬性的監控:監控任務(wù)在指時(shí)序間調度,滿(mǎn)足執行時(shí)間預算,并且不獨占OS資源。
為了保證與安全相關(guān)的功能將遵守其時(shí)序約束,應檢測并處理壟斷CPU的任務(wù)(例如CPU負載過(guò)重,太多中斷請求)。
2.2.2描述
AUTOSAR提供以下時(shí)序監控機制:
-
使用 OS的時(shí)序保護機制。
-
使用Watchdog Manager進(jìn)行時(shí)序程序流監控。
本章將解釋W(xué)atchdog Manager在實(shí)現應用軟件時(shí)序監控方面的應用。
Watchdog Manager還引入了一種稱(chēng)為邏輯監控的機制,該機制可以與死線(xiàn)監控結合使用,以提供高診斷覆蓋率。
此外,本章還將概述AUTOSAR OS的時(shí)序保護機制。
2.2.2.1受監控實(shí)體
Watchdog Manager監控AUTOSAR ECU中應用程序軟件的執行。監控的邏輯單元稱(chēng)為監控實(shí)體。在A(yíng)UTOSAR中,受監控實(shí)體和架構構建基塊之間沒(méi)有固定的關(guān)系。通常,受監控實(shí)體可以表示一個(gè)SWC或SWC的一個(gè)Runnable、一個(gè)BSW模塊或CDD,具體取決于開(kāi)發(fā)者的選擇。
受監控實(shí)體中的重要節點(diǎn)被定義為檢查點(diǎn)。受監控實(shí)體的代碼與Watchdog Manager的函數調用交互。這些調用用于向Watchdog Manager報告已到達檢查點(diǎn)。
2.2.2.2Watchdog Manager
Watchdog Manager是AUTOSAR架構的基礎軟件模塊。Watchdog Manager將看門(mén)狗硬件的觸發(fā)與軟件執行的監控聯(lián)系起來(lái)。當檢測到對程序執行的時(shí)態(tài)和/或邏輯約束的違反時(shí),將采取許多可配置的操作來(lái)從此故障中恢復。
Watchdog Manager為時(shí)序程序流監控提供以下機制:
活體監控:定期監控實(shí)體對執行頻率有限制。通過(guò)活體監控,Watchdog Manager會(huì )定期檢查受監控實(shí)體的檢查點(diǎn)是否已達到給定限制。這意味著(zhù)Watchdog Manager會(huì )檢查受監控實(shí)體的運行頻率是否太高或太低。
活體監控是使用單個(gè)檢查點(diǎn)執行的,沒(méi)有切換。受監控實(shí)體必須周期性地調用檢查點(diǎn),以發(fā)出其及時(shí)操作的信號。OS定期執行Watchdog Manager以驗證檢查點(diǎn)參數。
受監控的實(shí)體也可以通過(guò)多個(gè)活體監控實(shí)例進(jìn)行監控,因此每個(gè)活體監控都包含一個(gè)獨立的檢查點(diǎn)。請參見(jiàn)圖9。
圖9:具有獨立檢查點(diǎn)的實(shí)時(shí)監控
死線(xiàn)監控:非周期性或周期性監控實(shí)體對兩個(gè)檢查點(diǎn)之間的時(shí)間安排有單獨的限制。通過(guò)死線(xiàn)監控,Watchdog Manager檢查受監控實(shí)體的兩個(gè)檢查點(diǎn)之間的轉換時(shí)間。這意味著(zhù)Watchdog Manager會(huì )檢查受監控實(shí)體中的某些步驟所花費的時(shí)間是否在配置的最小值和最大值之內。請參見(jiàn)圖10。
如果從未到達第二個(gè)檢查點(diǎn),則死線(xiàn)監控將無(wú)法檢測到此問(wèn)題。出現此問(wèn)題的原因是,在調用第二個(gè)檢查點(diǎn)后,Watchdog Manager將執行時(shí)序檢查。
圖10:死線(xiàn)監控
2.2.2.3 OS的時(shí)序保護
根據AUTOSAR OS規范,當任務(wù)或中斷在運行時(shí)錯過(guò)其死線(xiàn)時(shí),就會(huì )發(fā)生實(shí)時(shí)系統中的時(shí)序故障。
AUTOSAR OS不提供時(shí)序保護的死線(xiàn)監控。死線(xiàn)監控不足以正確識別導致AUTOSAR系統中時(shí)序故障的任務(wù)或中斷。違反死線(xiàn)可能是由不相關(guān)的任務(wù)或干擾執行的中斷引起的。請咨詢(xún)AUTOSAR OS規范23了解更多詳情。
在固定優(yōu)先級搶占式 OS(如AUTOSAR OS)中,任務(wù)或中斷是否滿(mǎn)足其死線(xiàn)取決于以下因素:
-
任務(wù)/中斷在系統中的執行時(shí)間。
-
任務(wù)/中斷遭受較低優(yōu)先級的任務(wù)/中斷阻塞共享資源或禁用中斷的阻塞時(shí)間。
-
系統中任務(wù)/中斷的到達間隔速率。
為了安全準確地提供時(shí)序保護, OS必須在運行時(shí)控制這些因素,以確保任務(wù)/中斷可以滿(mǎn)足各自的死線(xiàn)。AUTOSAR OS提供以下時(shí)序保護機制:
-
執行時(shí)間保護。任務(wù)或2類(lèi)中斷的執行時(shí)間上限,即所謂的執行預算,通過(guò) OS進(jìn)行監控,以防止時(shí)序錯誤。
-
鎖定時(shí)間保護。OS監控資源阻塞、鎖定和暫停中斷的上限,即所謂的鎖定預算。
-
到達時(shí)間保護。正在激活的任務(wù)或2類(lèi)中斷到達之間的下限,即所謂的時(shí)間片,通過(guò) OS進(jìn)行監控,以防止時(shí)序錯誤。
注意:執行時(shí)間實(shí)施需要硬件支持,例如時(shí)序實(shí)施中斷。如果使用中斷來(lái)實(shí)現時(shí)間執行,則該中斷的優(yōu)先級應高到足以“中斷”受監控的任務(wù)或中斷。
2.2.3檢測與響應
Watchdog Manager為時(shí)序和邏輯程序流監控提供了三種機制:死線(xiàn)監控、活體監控和邏輯監控。
監控機制是靜態(tài)配置的。對于受監控實(shí)體的監控,可以采用多種監控機制。
根據每個(gè)已啟用機制的結果,計算受監控實(shí)體的狀態(tài)(稱(chēng)為局部狀態(tài))。當確定每個(gè)受監控實(shí)體的狀態(tài)時(shí),然后根據每個(gè)局部監控狀態(tài),確定整個(gè)MCU的狀態(tài)(稱(chēng)為全局監控狀態(tài))。
根據每個(gè)受監控實(shí)體的局部監控狀態(tài)和全局監控狀態(tài),Watchdog Manager會(huì )啟動(dòng)許多機制來(lái)從監控失敗中恢復。這些范圍從受監控實(shí)體內的局部錯誤恢復到ECU的全局重置。
Watchdog Manager可以采用以下錯誤恢復機制:
-
受監控實(shí)體中的錯誤處理
如果受監控實(shí)體是SWC或CDD,則Watchdog Manager可以通過(guò)RTE模式機制通知受監控實(shí)體有關(guān)監控情況。然后,受監控實(shí)體可以采取措施從該故障中恢復。
Watchdog Manager可能會(huì )在檢測到監控故障時(shí)向診斷事件管理器(DEM)注冊一個(gè)條目。受監控實(shí)體可能會(huì )根據該錯誤條目執行恢復操作。 -
分區關(guān)閉
如果Watchdog Manager模塊在位于不受信的分區中的受監控實(shí)體中檢測到監控故障,則Watchdog Manager模塊可以通過(guò)調用BswM請求分區關(guān)閉。
-
通過(guò)硬件看門(mén)狗重置
Watchdog Manager向看門(mén)狗接口指示看門(mén)狗接口何時(shí)不再觸發(fā)硬件看門(mén)狗。在硬件看門(mén)狗超時(shí)后,硬件看門(mén)狗將重置ECU或MCU。這導致ECU和/或MCU硬件的重新初始化以及軟件的完全重新初始化。
-
立即復位MCU
如果需要對監控故障立即做出全局響應,Watchdog Manager可能會(huì )直接導致MCU復位。這將導致MCU硬件和完整軟件的重新初始化。通常,MCU復位不會(huì )重新初始化ECU硬件的其余分區。
注:AUTOSAR文檔“應用程序級別的錯誤說(shuō)明”提供了有關(guān)錯誤處理的其他信息。在文檔中,解釋了如何執行錯誤處理以及可以從何處獲取所需數據(例如替代值)。此外,本文檔還詳細介紹了如何在A(yíng)UTOSAR中執行 OS-Applications/分區終止和重新啟動(dòng)。
2.2.4限制
-
檢查點(diǎn)的粒度不是由Watchdog Manager固定的。很少有粗制的檢查點(diǎn)會(huì )限制Watchdog Manager的檢測能力。例如,如果應用程序SWC只有一個(gè)檢查點(diǎn),指示循環(huán)可運行已啟動(dòng),則Watchdog Manager只能檢測此可運行已重新啟動(dòng)并消除時(shí)序約束。相反,如果該SWC在可運行的每個(gè)塊和分支上都有檢查點(diǎn),則Watchdog Manager也可能檢測到該SWC的控制流中的故障。檢查點(diǎn)的高粒度會(huì )導致Watchdog Manager的復雜和大量配置。
-
死線(xiàn)監控有一個(gè)弱點(diǎn):它只檢測延遲(當報告結束檢查點(diǎn)時(shí)),但它不檢測超時(shí)(當根本沒(méi)有報告結束檢查點(diǎn)時(shí))。
-
不支持死線(xiàn)監控(即開(kāi)始1、開(kāi)始2、結束2、結束1)的嵌套。
-
每個(gè)受監控實(shí)體具有多個(gè)檢查點(diǎn)的“活體監控”功能在“Watchdog Manager規范”中未一致地指定。目前,建議每個(gè)監控實(shí)體僅支持一個(gè)活體監控檢查點(diǎn)。
-
為了關(guān)閉或重新啟動(dòng)(作為錯誤響應)包含受監控實(shí)體的分區,集成代碼( OS-Applications的重新啟動(dòng)任務(wù))通過(guò)調用Watchdog Manager的可用函數來(lái)停用(或停用+激活)受影響分區的所有受監控實(shí)體。這有點(diǎn)復雜,在Watchdog Manager規范文檔的未來(lái)版本中被認為是Watchdog Manager的新加功能。
-
庫無(wú)法調用BSW,因此庫不能由Watchdog Manager監控。但是,可以通過(guò)在模塊的代碼中放置庫調用之前和之后的檢查點(diǎn)來(lái)使用死線(xiàn)監控,以監控庫實(shí)例運行。
-
如何使用受監控實(shí)體ID標識BSW模塊尚未標準化。
引用來(lái)源:AUTOSAR document 2021
轉自汽車(chē)電子與軟件