1簡介
在Zynq MPSoC的器件里,PS (Processing System )集成了三個看門狗,分別是CSU SWDT,LPD SWDT和FPD SWDT。
CSU SWDT用于保護CSU與PMU及其相關連接。
LPD SWDT主要用于保護RPU系統及其相關連接。
FPD SWDT主要用于保護APU系統及其相關連接。
如果你的程序跑在APU上,并且你需要使用兩個看門狗,那么除了FPD SWDT外,你是可以使用LPD SWDT。
2對應關系
LPD SWDT和FPD SWDT是提供給用戶的應用程序使用的,CSU SWDT主要是由PMUFW和CSU BOOTROM使用的。所以通常情況下,用戶可以在自己的應用程序里使用LPD SWDT和FPD SWDT。當客戶需要使用時,需要在Vivado里需要使能相關的SWDT。但Vivado里的命名是SWDT0和SWDT1:
而在UG1087的寄存器手冊里,SWDT有三個代碼段CSU_WDT, SWDT, WDT:
所以有很多用戶并不清楚這里面的對應關系。工具命名與手冊命名的對應關系可以在UG1085里找到:
3在Petalinux里的使用
在Linux里,AMD Xilinx提供了SWDT的驅動,具體的介紹和測試方法可以參考下面wiki頁面。
只需要按照該頁面的方法,去使能驅動,修改dts和使能ENABLE_EM, 就能在Linux里使用LPD SWDT或FPD SWDT,這里不再詳述。
當LPD或FPD SWDT超時后,SWDT并不會直接復位整個系統,而是把超時錯誤傳達給PMU,由PMU決定下一步的錯誤處理方式(關于PMU的錯誤處理機制,可以參考UG1085的第6章)。而ENABLE_EM就是使能PMUFW里的錯誤處理模塊,如果不使能該模塊,當SWDT超時后,什么操作也不會發生。
PMUFW提供了一套完整的SWDT復位方案。當用戶使能ENABLE_RECOVERY后,如果FSBL跑在APU上,PMUFW會初始化FPD SWDT,默認設定時間為60秒。這樣在FSBL執行完后,用戶自動獲取SWDT的監控,通常60秒足夠用戶啟動后續的u-boot或Linux。如果60秒不夠,用戶可以在u-boot階段喂一次狗(重啟SWDT),或者在PMUFW工程里添加一個定義RECOVERY_TIMEOUT,把需要的時間定義成RECOVERY_TIMEOUT。(注意,這里需要在Vivado工程里使能TTC。)
如果CPU在復位過程中出現掛死現象,建議用戶把ENABLE_ESCALATION也添加上。如果PMUFW還有空間的話,建議把CHECK_HEALTHY_BOOT也使能上。下表來自UG1137,是系統重啟方案的推薦設置以及空間占用情況的總結。
關于ENABLE_RECOVERY,ENABLE_ESCALATION和CHECK_HEALTHY_BOOT的更多介紹,請用戶參考 UG1137。
4CSU WDT的使用
CSU WDT的使用比較簡單,只需要在PMUFW里使能ENABLE_WDT,就能讓CSU WDT監測PMU的運行。FSBL啟動后,CSU WDT會設置為90毫秒超時,而PMUFW會有一個task每50毫秒喂一次狗。
請注意,如果用戶在PMUFW里添加了自己的代碼,并且使能了CSU WDT,那需要注意CSU WDT的超時時間。因為如果你在你的代碼里添加了延遲(比如sleep),如果延時超過90毫秒,會導致CSU WDT觸發從而產生異常。
5參考文檔
本文只是簡單的介紹了看門狗(SWDT)在Zynq MPSoC在使用上的一下簡單技巧,幫助用戶快速地使用看門狗功能。如果想了解看門狗(SWDT)的完整功能,請仔細閱讀下面的參考文檔。
原文標題:開發者分享|看門狗 (SWDT) 在Zynq MPSoC 上的使用技巧
文章出處:【微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
看門狗
+關注
關注
10文章
566瀏覽量
70949 -
Linux
+關注
關注
87文章
11345瀏覽量
210392 -
Zynq
+關注
關注
10文章
610瀏覽量
47296 -
MPSoC
+關注
關注
0文章
199瀏覽量
24321
原文標題:開發者分享|看門狗 (SWDT) 在Zynq MPSoC 上的使用技巧
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論