
01
什么是看門狗?
看門狗技術是20世紀80年代由美國半導體巨頭AMD公司首次提出,是一種專門用于檢測、記錄處理器運行狀況以及在異常情況下復位的一種技術。
隨著技術的不斷的迭代,看門狗逐漸發展成一類專門的芯片,廣泛應用于汽車、工業自動化、物聯網等領域。

此狗非彼狗!!!
軟件會在執行完特定指令后進行喂狗,若在一定周期內看門狗沒有收到來自軟件的喂狗信號,則認為系統故障,會進入中斷處理程序或強制系統復位。
系統上電后根據不同的工作模式可以選擇使能看門狗,若看門狗被使能則計數器開始計數,如果在設定的時間內沒有及時喂狗則會發生看門狗超時。
通過寄存器對看門狗進行基本設置,計數器計算狗叫時間,狗叫模塊決定看門狗超時后發出的中斷或復位方式。
看門狗發展至今,功能已經發展的比較完善,所以已經有很多比較詳細且角度不同的分類,例如按照種類分可以分為硬件看門狗和軟件看門狗;按照與單片機集成性可以分為內部看門狗和外部看門狗;
02
TLF35584中集成的看門狗
以汽車產品中最通用的英飛凌的TLF35584芯片為例,該電源管理芯片通過了ISO26262的ASILD的認證,并且集成了看門狗模塊,該看門狗模塊既屬于硬件看門狗,同時也屬于外部看門狗。
由Window Watchdog和Functional Watchdog組成,(后面簡化成為WWD和FWD)

Window Watchdog和Functional Watchdo
兩個看門狗的設置對安全狀態控制的影響在安全狀態控制一章中進行了描述,以便更好地理解。
03
Window Watchdog(WWD)
我們稱作窗口看門狗或時間看門狗,首先被監控的控制器(MCU)必須在Open Window期間內觸發(就是指喂狗操作),喂狗可以通過 WDI 引腳上的下降沿或通過 SPI 命令寫入寄存器 WWDSCMD,具體取決于配置。
觸發后將終止“Open Window”。看門狗輸出指示 WWD 故障計數器的“有效”或“無效”WWD 觸發。
如果有效觸發,則啟動“Closed Window”。如果在“Open Window”期間沒有觸發或在“Closed Window”期間觸發,看門狗輸出指示“無效 WWD 觸發”到 WWD 失敗計數器,并啟動新的“Open Window”。
1.WWD工作狀態圖

Window Watchdog State
“Open Window”中的“無觸發”被視為“WWD 觸發無效”。
2.WDI引腳觸發WWD
看門狗輸入引腳 WDI 具有集成的下拉電流 IWDI 。看門狗輸入 WDI 可以在“Closed Window”內或隨后的“Open Window”期間轉換為高電平。

WDI引腳
WD的有效觸發信號
看門狗輸入 WDI 以TSAMT周期定期采樣。有效觸發信號是從VWDIV,高電平到VWDIV,低電平的下降沿。
為了提高 WDI 輸入上的抗噪聲或毛刺的能力,有效觸發信號至少需要兩個高采樣點,然后是兩個低采樣點,通過測量低信號的第二個連續采樣點來考慮有效觸發。
例如,如果引腳 WDI 處的觸發脈沖的前三個采樣(兩個高一個低)位于“關閉窗口”內,并且僅在“打開窗口”中采集第四個采樣(第二個低采樣),則看門狗 輸出 WWO 將指示“有效 WWD 觸發”。
WDI 觸發無效
在“Open Window”期間未檢測到觸發信號或在“Closed Window”期間檢測到觸發信號,均視為無效觸發。
看門狗輸出 WDO 在“Open Window”期間無有效觸發后立即指示“無效觸發”,或者在“Closed Window”期間檢測到觸發信號后立即指示“無效觸發”。

3.WWD正常工作——正確觸發

正確觸發
有效的觸發信號立即終止“Open Window”,因此“Open Window”的時間是可變的,并且取決于微控制器安排觸發的時間。這被視為“有效 WWD 觸發”。
4.WWD異常工作——在“Long Open Window”未觸發

在Long Open Window未觸發
接下來的“Closed Window”持續時間 tWD,CWt。在此時間內觸發將被視為“無效WWD觸發”。
5.WWD異常工作——在“ Open Window”未觸發

在Open Window未觸發
接下來的“Closed Window”持續時間 tWD,CWt_{WD,CW} 。在此時間內觸發將被視為“無效WWD觸發”。
引腳 ROT 的行為取決于 ΣWWO 的值。在上面的例子中,假設無效觸發不會導致超過閾值ΣWWO。
6.WWD異常工作——在初始化之后的“Closed Window”中錯誤的觸發

接下來的“Closed Window”持續時間 tWD,CWt_{WD,CW} 。在此時間內觸發將被視為“無效WWD觸發”。
引腳 ROT 的行為取決于 ΣWWO 的值。在上面的例子中,假設無效觸發不會導致超過閾值ΣWWO。
7.WWD異常工作——在穩態“Closed Window”錯誤的觸發

在Close Window中錯誤的觸發
引腳 ROT 的行為取決于 ΣWWO 的值。在上面的例子中,假設無效觸發不會導致超過閾值ΣWWO。
04
Functional Watchdog(FWD)
我們稱作功能看門狗或問答看門狗。在穩定狀態下,會生成一個問題(從表中取出),同時心跳計數器從零開始計數。心跳計數器開始計數,直到心跳周期結束。
心跳周期的持續時間可以通過 SPI 命令進行設置和調整。
問題由 4 bits組成,預期答案由 4 個回復組成,每個回復為 8 位。這四個回復應在心跳周期結束之前發送。最后回復應寫入同步回復寄存器以重置心跳計數器。

Functional Watchdog的問題與回復
功能看門狗輸出 FWO 是一個內部信號:它連接到 FWD 故障計數器。功能看門狗 FWO 輸出的值為“有效 FWD 觸發”或“無效 FWD 觸發”。
1.FWD工作流程圖

FWD工作流程圖
步驟如下:
2.FWD正常工作——正確觸發

正確觸發模式
步驟如下:
生成一個新問題,同時心跳計數器開始計數
3.FWD異常工作——同步丟失

同步丟失
步驟如下:
心跳計數器開始計數。,不會產生新問題
4.FWD異常工作——回答錯誤

回答錯誤
步驟如下:
沒有生成新問題,但心跳計數器開始計數
注意:如果將Resp2和Resp1混合在一起,則將兩個回復視為不正確的,則必須按正確的順序發送回復。
5.FWD異常工作——回復丟失

回復丟失
步驟如下:
不再生成新問題,心跳計數器開始計數
05
為什么需要Watch Dog?
1.功能安全標準軟件部分要求
首先在功能安全標準第6章,7.4.12中提到,應使用看門狗進行軟件的時間監控和程序流監控。

ISO26262標準第6章
2.功能安全標準硬件部分要求
在第5章的附錄中,也提到了不同看門狗的功能和診斷覆蓋率

看門狗的診斷覆蓋率

功能安全標準
標準中分別介紹幾種看門狗的目標和功能描述,我在這里歸納總結一下在ISO26262中,看門狗作為安全機制的一些用法和要求

看門狗的作用
06
如何使用看門狗?
1.功能安全對看門狗的要求
標準并沒有明確給出不同的ASIL等級如何使用看門狗,下面是個人根據自身的項目經驗,給出的一些建議,僅供參考。

看門狗監控的使用建議
2.內部看門狗VS外部看門狗

內部看門狗與外部看門狗
3.看門狗監控機制的作用

看門狗監控機制
文章來源于網絡,版權歸原作者所有,如有侵權,請聯系刪除。

關注【一起學嵌入式】,回復“加群”進技術交流群。
覺得文章不錯,點擊“分享”、“贊”、“在看” 唄!