看門狗模塊(WDOG)在MCU應(yīng)用里可以說是非常基礎(chǔ)的功能模塊。對于一個產(chǎn)品級的應(yīng)用程序,如果它沒有使能主控內(nèi)部的看門狗模塊,一般都不能算是一個合格的軟件設(shè)計(jì)。
有的時候,硬件工程師覺得片內(nèi)看門狗不可靠,還會在板級設(shè)計(jì)里再加入外部看門狗電路。
總之看門狗對于產(chǎn)品工作穩(wěn)定性具有很重要的意義。
最近有一個i.MX RT客戶注意到了芯片手冊System Boot章節(jié)里提及了WDOG應(yīng)用,想使能這個功能,并且要確認(rèn)該功能真實(shí)生效以及評估對后續(xù)應(yīng)用程序的影響。
借助客戶的問題,我們來細(xì)聊下這個話題。
一、WDOG模塊簡介
首先我們來了解一下i.MX RT1xxx系列內(nèi)部的WDOG模塊,在i.MX RT1xxx內(nèi)部一共有三個WDOG模塊(WDOG1/2/3),雖然WDOG本質(zhì)上就是個特殊功能定時器,但因?yàn)樾酒O(shè)計(jì)時為其賦予的超時觸發(fā)行為不同,所以其應(yīng)用場合并不一樣。
1.1 系統(tǒng)看門狗WDOG1/2
WDOG1和WDOG2屬于系統(tǒng)看門狗,前者用于系統(tǒng)級復(fù)位(產(chǎn)生WDOG_RESET_B_DEB信號給SRC模塊)防止系統(tǒng)發(fā)生異常,后者用于系統(tǒng)SNVS域安全警報(bào)(不會產(chǎn)生復(fù)位效果)。
不過從模塊寄存器角度,WDOG1和WDOG2是一樣的,因此除了超時觸發(fā)行為外,它們其余方面特性是一樣的:
模塊內(nèi)部兩個計(jì)數(shù)時鐘源是固定的,來自ipg_clk_32k以及anatop_xtal32k_clk 。
模塊內(nèi)部8bit定時器(Time-OutCounter)用于產(chǎn)生WDOG_RESET_B_DEB復(fù)位信號,計(jì)時精度固定為0.5秒,超時可設(shè)范圍為0.5秒到128秒。
塊內(nèi)部定時器(PowerDown Counter)用于產(chǎn)生對外輸出的復(fù)位信號WDOG_B,其超時時間固定為16秒。
模塊對外輸出的信號最多有三個:WDOG_RST_B_DEB、WDOG_B、WDOG_ANY(僅WDOG1)。
模塊使能信號WDOGx->WCR[WDE]可多次設(shè)置(并不是一次復(fù)位期間僅可write one once)。
模塊配置寄存器與定時器計(jì)數(shù)值可直接修改。
模塊Time-Out Counter默認(rèn)是關(guān)閉的,PowerDown Counter默認(rèn)是開啟的。
1.2 內(nèi)核看門狗WDOG3(4)
WDOG3有時候又叫RTWDOG(對于i.MX RT1170,還存在用于默認(rèn)CM4從核的WDOG4),屬于內(nèi)核看門狗,主要用于復(fù)位內(nèi)核,防止程序陷入死循環(huán)。其模塊寄存器跟WDOG1/2完全不同,更接近于一般的定時器模塊設(shè)計(jì):
1. 模塊內(nèi)部計(jì)數(shù)時鐘源有四種選擇,Bus clock / LPO clock / INTCLK / ERCLK 。
2. 模塊內(nèi)部16bit定時器(Time-OutCounter)用于產(chǎn)生內(nèi)核復(fù)位信號。
3. 模塊使能信號WDOGx->CS[EN]可多次設(shè)置(但是其屬于write-once屬性)。
4. 模塊配置寄存器write-once bits與定時器計(jì)數(shù)值需要特殊unlock時序才可以修改。
5. 模塊Time-Out Counter默認(rèn)是開啟的。
二、系統(tǒng)ROM里對WDOG的使用
i.MXRT1xxx系列芯片上電默認(rèn)都是先執(zhí)行系統(tǒng)BootROM,在BootROM里會有對看門狗的處理。默認(rèn)情況下BootROM是不啟用看門狗做代碼執(zhí)行守護(hù)的,只有當(dāng)用戶燒寫了指定的eFuse位,看門狗功能才會生效。BootROM并沒有使用默認(rèn)開啟的 WDOG3,而是將其關(guān)閉并打開了WDOG1作為看門狗。
2.1 看門狗使能
i.MXRT10xx系列芯片BootROM看門狗在eFuse里配置如下,包含eFuse 0x460[21]使能位與eFuse 0x6D0[15:13]超時時間設(shè)置。
i.MXRT1160/1170 芯片BootROM看門狗在eFuse里配置如下,包含eFuse 0x9A0[15]使能位與eFuse 0x9B0[2:0]超時時間設(shè)置,以及多了eFuse0x9B0[5:3]關(guān)于WDOG_B外部信號腳選擇設(shè)置。
2.2 看門狗作用
對于i.MXRT10xx系列,BootROM看門狗主要用于Serial Downloader分支程序下(SDP 模式BT_MODE = 2'b01,或者Device Boot模式BT_MODE = 2'bx0下啟動失敗進(jìn)入了Serial Downloader)檢測與主機(jī)通訊情況,只要在設(shè)置的超時時間里沒有通信交互行為,看門狗就會復(fù)位整個系統(tǒng)(并不是單次通信就可以的,任意超時時間內(nèi)都得保持交互)。如果在Device Boot模式下能夠正常啟動程序,則看門狗不會被使能。
對于i.MXRT1160/1170系列,BootROM看門狗不僅在Serial Downloader分支程序中有效,其在Device Boot模式下(BT_MODE = 2'bx0)也同樣被使能了,這樣做主要有兩個用意:
如果因板級電路干擾導(dǎo)致首次啟動程序失敗,BootROM正常是直接跳轉(zhuǎn)到了SDP模式不會再做啟動程序行為。但是使能了看門狗,則在SDP模式下等待超時時間后系統(tǒng)復(fù)位會重新嘗試啟動程序,這樣不斷嘗試直到板級干擾消失。
如果啟動程序成功,BootROM會直接跳轉(zhuǎn)到目標(biāo)應(yīng)用程序,但無法檢驗(yàn)?zāi)繕?biāo)程序是否能夠正常執(zhí)行。但是使能了看門狗,如果應(yīng)用程序不對看門狗做有效處理,系統(tǒng)還是會復(fù)位回來,這樣相當(dāng)于做了應(yīng)用程序是否執(zhí)行的驗(yàn)證。
三、使能WDOG后對i.MX RT開發(fā)的影響
現(xiàn)在回到文章開頭提到的客戶問題,如何判斷BootROM中WDOG已經(jīng)生效了,這個其實(shí)特別簡單,在SDP模式下插上USB線,在資源管理器里觀察是不是有HID設(shè)備每隔一段時間就會重新枚舉一次,沒錯就是WDOG搗的鬼。
那么對于應(yīng)用程序的開發(fā),有什么注意事項(xiàng)呢?對于i.MX RT10xx其實(shí)沒有任何影響,而對于i.MX RT1160/1170,則必須在應(yīng)用程序里增加對WDOG1的處理。
在恩智浦提供的頭文件system_MIMXRT1xxx.c文件里SystemInit()函數(shù)中其實(shí)有關(guān)于看門狗相關(guān)代碼,默認(rèn)是將全部的看門狗都關(guān)一遍(DISABLE_WDOG=1),這部分代碼對于i.MX RT10xx程序是可以不做的,但是對于i.MX RT1160/1170就必須要做了。
審核編輯 :李倩
-
看門狗
+關(guān)注
關(guān)注
10文章
566瀏覽量
70951 -
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121201 -
定時器
+關(guān)注
關(guān)注
23文章
3256瀏覽量
115392
原文標(biāo)題:系統(tǒng)看門狗WDOG1在i.MX RT系統(tǒng)啟動中的應(yīng)用及影響
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
安利給工程師!看門狗相關(guān)知識
![安利給工程師!<b class='flag-5'>看門狗</b>相關(guān)知識](https://file1.elecfans.com/web3/M00/04/4D/wKgZO2dyP1iAOrMJAATrj7x_ANc937.png)
抄作業(yè)!看門狗定時器必備知識
![抄作業(yè)!<b class='flag-5'>看門狗</b>定時器必備知識](https://file1.elecfans.com/web3/M00/04/43/wKgZPGdyPx-AJjkkAAaPx4vFsEM206.png)
一文詳解看門狗/電壓監(jiān)控芯片規(guī)格書
![一文詳解<b class='flag-5'>看門狗</b>/電壓監(jiān)控芯片規(guī)格書](https://file1.elecfans.com/web3/M00/03/EF/wKgZO2dtH2uAbqQ8AAAitlCLDrI138.png)
NXP專為邊緣AI打造的i.MX RT700跨界MCU到底強(qiáng)在哪?
![NXP專為邊緣AI打造的<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>700跨界MCU到底強(qiáng)在哪?](https://file1.elecfans.com/web1/M00/F4/8D/wKgaoWctbLKANWBwAABt3gvNJAM209.png)
看門狗定時器的工作原理
![<b class='flag-5'>看門狗</b>定時器的工作原理](https://file1.elecfans.com/web2/M00/0A/CA/wKgaomcV8kqAeEjLAABZeGRdMgo486.png)
i.MX Linux開發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開發(fā)板
單片機(jī)開發(fā):使用內(nèi)部看門狗定時器(WDT)還是外掛看門狗芯片?
恩智浦i.MX RT1170 uSDHC eMMC啟動時間
![恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1170 uSDHC eMMC<b class='flag-5'>啟動</b>時間](https://file1.elecfans.com/web2/M00/01/48/wKgZoma0dMuAanuQAAEcjN2nozc201.png)
TCAN1164-Q1 具有 LDO 輸出和看門狗的汽車 CAN FD系統(tǒng)基礎(chǔ)芯片數(shù)據(jù)表
![TCAN1164-Q<b class='flag-5'>1</b> 具有 LDO 輸出和<b class='flag-5'>看門狗</b>的汽車 CAN FD<b class='flag-5'>系統(tǒng)</b>基礎(chǔ)芯片數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
軟件看門狗和硬件看門狗的區(qū)別
TLF35584中集成的看門狗工作應(yīng)用案例
![TLF35584<b class='flag-5'>中</b>集成的<b class='flag-5'>看門狗</b>工作應(yīng)用案例](https://file1.elecfans.com/web2/M00/C4/BD/wKgZomX3tVaADn1QAAAPgafpCV8647.jpg)
調(diào)試模式下如何調(diào)試看門狗?
![調(diào)試模式下如何調(diào)試<b class='flag-5'>看門狗</b>?](https://file1.elecfans.com/web2/M00/C0/AF/wKgZomXX9T-AZfbVAABKIA6bhqg256.png)
評論