1
概述
系統(tǒng)看門狗定時器(System WatchDog Timer)通常用于嵌入式系統(tǒng),可以有效的防止軟件錯誤、系統(tǒng)死鎖、篡改以及意外行為,幫助維護健康和安全的系統(tǒng)。
在 AMD Versal 自適應(yīng) SoC中,分別在 FPD(Full power domain)和 LPD(Low power domain)中各自集成了一個 SWDT 用來幫助客戶開發(fā)穩(wěn)定的系統(tǒng)。其整體結(jié)構(gòu)框圖如下:
從框圖中可以看到 SWDT 中包含有 2 種不同的定時器,分別是窗口模式的定時器(Windowed WatchDog Timer)和通用模式的定時器(Generic WatchDog Timer)。
注意在使用 SWDT 之前,需要確認 LPD 和 FPD 的系統(tǒng)級別的復(fù)位是否已經(jīng)釋放,例如CRL.RST_LPD_SWDT 寄存器和CRF.RST_FPD_SWDT 寄存器。
2
通用模式定時器
通用模式定時器一共包含三個相關(guān)寄存器,分別是 G_Refresh,G_Offset 和 G_CSR 寄存器。
G_CSR 寄存器用來使能通用定時器模式,以及反饋狀態(tài)。
G_Offset 寄存器用來配置定時的周期時間。
G_Refresh 寄存器用來刷新定時器,即喂狗。
工作模式如下圖所示:
通用模式工作時最多會有兩個定時周期,當計數(shù)器計時達到第一個定時周期后,定時器會產(chǎn)生一個定時中斷。然后計數(shù)器會繼續(xù)計時,當計數(shù)器計時到達第二個定時周期后,定時器會產(chǎn)生一個超時中斷。在定時器的計數(shù)器到達第二個定時周期之前,軟件程序都可以通過 G_Refresh 寄存器刷新計數(shù)器計數(shù)值,從頭開始計時。
可以看到通用模式使用起來非常簡單。但是有一點需要注意,通用模式的定時器在超時發(fā)生之后,并不會輸出系統(tǒng)級錯誤到 PSM 的錯誤堆棧中,即不會產(chǎn)生系統(tǒng)錯誤,從而使得 PSM 或者 PLM 程序固件執(zhí)行相應(yīng)的系統(tǒng)層面的操作。
3
窗口模式定時器
窗口模式定時器功能較為全面,功能充分考慮了系統(tǒng)安全的各種應(yīng)用場景。
窗口模式基本流程如上圖所示,一共可以分成三個部分,分別是第一窗口(First Window),第二窗口(Second Window)和二次序列時間(Second Sequence Timer)。一共涉及到5個寄存器,分別是使能與狀態(tài)寄存器(Enable_and_Status),功能控制寄存器(Funct_Ctrl),第一窗口時間寄存器(First_Wind),第二窗口時間寄存器(Second_Wind)和二次序列時間寄存器(SST_COUNT)。
第一窗口時間是一個封閉的時間段,在這個時間段內(nèi)應(yīng)用程序是不能對看門狗進行刷新和復(fù)位操作。如果這個時間段內(nèi)對看門狗進行了刷新喂狗或是復(fù)位看門狗操作,那么就會產(chǎn)生一個錯誤事件,從而輸出一個系統(tǒng)錯誤到 PSM 和 PMC。這樣設(shè)計是考慮到用戶既然配置看門狗,那么就一定是要讓看門狗起到作用,所以設(shè)置了一個保護看門狗的時間,用來防范系統(tǒng)的異常操作。
當?shù)谝淮翱诒Wo期到了之后,看門狗會產(chǎn)生一個中斷通知系統(tǒng)。這個中斷的產(chǎn)生時間可以通過配置功能控制寄存器(Funct_Ctrl)中的 BSS 和 SBC 位設(shè)定。應(yīng)用程序可以在接收到中斷后刷新看門狗,或者復(fù)位/停止/重新配置看門狗。
如果應(yīng)用程序在第二窗口沒有對看門狗有任何處理,計時器超過了用戶設(shè)定的第二窗口時間,這個時候會產(chǎn)生超時中斷。如果在看門狗運行之前使能了二次序列時間,那么看門狗此時不會立刻產(chǎn)生系統(tǒng)錯誤,而是等到二次序列時間計時結(jié)束之后再產(chǎn)生。這樣應(yīng)用程序就可以有時間去記錄一些狀態(tài),日志或是處理某些外設(shè)等操作,便于后續(xù)排查問題或是增加系統(tǒng)的安全性。但是要是沒有配置這個二次序列時間,那么看門狗在第二窗口時間超時之后會立刻產(chǎn)生錯誤事件,并發(fā)送系統(tǒng)錯誤到 PSM 和 PMC。
以上就是看門狗窗口模式下最基礎(chǔ)的功能??偟膩碚f,應(yīng)用程序只有在看門狗處于第二窗口時間段內(nèi),才能對看門狗進行刷新喂狗,復(fù)位/停止/重新配置操作,否則就會產(chǎn)生錯誤事件,并發(fā)送系統(tǒng)錯誤到 PSM 和 PMC。另外,需要注意以下兩點:
第一個窗口的時間可以設(shè)置為 0,從而跳過保護周期。
在看門狗運行的任意窗口期間,如果通過 LPD 和 FPD 的系統(tǒng)級別的復(fù)位對整個看門狗進行復(fù)位,不會產(chǎn)生額外中斷以及系統(tǒng)錯誤。
為了進一步提高看門狗的安全性,窗口模式下還提供了兩種防止系統(tǒng)異常操作的進階功能。它們是簽名方式(PSM)和問答方式(Q&A),如下圖紅框標注的功能。
1. 簽名方式(PSM)
在啟動看門狗計時之前,用戶需要先在 Task_Sig0 寄存器中保存一個簽名。然后應(yīng)用程序在第二窗口刷新看門狗之前,先要對 Task_Sig1 寄存器寫入和 Task_Sig0 一樣的簽名。當看門狗被正常刷新之后,會先去比較這兩個簽名是否一致,如果不一致就會立刻產(chǎn)生一個錯誤事件,并產(chǎn)生系統(tǒng)錯誤輸出 PSM 和 PMC。
2. 問答方式(Q&A)
在運行看門狗之前,用戶需要先在 Token_fb 寄存器中設(shè)定種子(seed)和反饋(FeedBack)值,這兩個值和使能與狀態(tài)寄存器(Enable_and_Status)中 ACNT 位會被用來計算寫入 Token_Resp 寄存器的值。算法如下表所示。Token 對應(yīng)種子值,Count 對應(yīng) ACNT 值,F(xiàn)eedback Value 對應(yīng)反饋值。
舉個例子,如果反饋(Feedback)的值是 3,那么應(yīng)答(response)的每一位的計算方法就需要參考上面列表中的最后一列"11"來進行。那么 bit0 的值就是將 ACNT 的 bit1 值,異或種子(seed) bit 2 的值,再異或種子(seed)的 bit 3 的值。當應(yīng)答 8 個位的值都計算好之后,寫入 Token_resp 寄存器中即完成了一次問答。
當用戶配置好看門狗功能設(shè)置,各個窗口時間以及問答種子和反饋值后,需要通過執(zhí)行第一次應(yīng)答(response)以后,看門狗才會開始啟動計時。并且在第一窗口時間內(nèi),用戶需要完成第二次和第三次應(yīng)答,間隔的時間可以由用戶自行來控制。當這兩次應(yīng)答完成后,即使第一窗口時間沒有計完,也會立即進入第二窗口進行計時。接著,用戶需要在第二窗口時間內(nèi)完成第四次應(yīng)答。一旦第四次應(yīng)答在第二窗口完成,即使第二窗口時間沒有計完,也會立即返回到第一窗口,重新開始計時。但是,如果在第二窗口內(nèi)沒有完成第四次應(yīng)答,那么同樣會回到第一窗口重新計時,不過接下來的應(yīng)答還是需要按照第四次應(yīng)答去完成。
在這個復(fù)雜的過程中,可以允許有限次數(shù)的應(yīng)答失敗,失敗次數(shù)保存在使能與狀態(tài)寄存器(Enable_and_Status)的失敗計數(shù)位中(Fail count)。也就是說每當失敗一次,失敗計數(shù)就會增加 1,每應(yīng)答成功一次失敗計數(shù)就會減 1。當失敗次數(shù)累計到 7 次以后,那么再出現(xiàn)失敗,就會產(chǎn)生一個錯誤事件,并發(fā)送系統(tǒng)錯誤輸出到 PSM 和 PMC。
4
總結(jié)
Vesal 器件中的看門狗模塊提供了豐富的功能,從應(yīng)用簡易程度和安全性方面層層遞進,讓用戶根據(jù)不同的應(yīng)用場景來實現(xiàn)對自己系統(tǒng)的保護。
審核編輯:劉清
-
amd
+關(guān)注
關(guān)注
25文章
5468瀏覽量
134160 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120362 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3593瀏覽量
129472 -
soc
+關(guān)注
關(guān)注
38文章
4165瀏覽量
218255 -
SoC芯片
+關(guān)注
關(guān)注
1文章
612瀏覽量
34921 -
PSM
+關(guān)注
關(guān)注
1文章
41瀏覽量
13413 -
看門狗定時器
+關(guān)注
關(guān)注
0文章
39瀏覽量
16253
原文標題:開發(fā)者分享|SWDT 在 AMD Versal? Adaptive SoC 中的應(yīng)用
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論