一種基于fpga的看門狗復(fù)位方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于監(jiān)控服務(wù)中看門狗的技術(shù)領(lǐng)域,尤其涉及一種基于FPGA的看門狗復(fù)位方法。
【背景技術(shù)】
[0002]看門狗(Watch Dog Timer,簡稱WDT)的核心是看門狗定時(shí)器,看門狗定時(shí)器實(shí)際上是一個(gè)計(jì)數(shù)器,一般給看門狗定時(shí)器一個(gè)閾值,程序開始運(yùn)行后,看門狗開始倒計(jì)數(shù);如果程序運(yùn)行正常,過一段時(shí)間就會收到一個(gè)復(fù)位信號,讓看門狗中的定時(shí)器重新開始倒計(jì)數(shù)。設(shè)置看門狗電路的主要目的是對于一些程序的潛在錯(cuò)誤和惡劣環(huán)境下干擾等因素而導(dǎo)致的系統(tǒng)死機(jī),在無人干預(yù)的情況下能自動恢復(fù)系統(tǒng)正常工作狀態(tài)。
[0003]隨著計(jì)算機(jī)水平的發(fā)展,看門狗的應(yīng)用也更加廣泛,例如,在中國專利申請?zhí)枮镃N201210271617.8的中國專利申請中,公開了一種網(wǎng)絡(luò)看門狗及其實(shí)現(xiàn)方法,具體的技術(shù)方案是:至少一個(gè)與被監(jiān)控計(jì)算機(jī)對應(yīng)的看門狗控制器;處理模塊,用于當(dāng)所述看門狗控制器產(chǎn)生超時(shí)信號時(shí),生成用來控制被監(jiān)控計(jì)算機(jī)進(jìn)行復(fù)位上電操作的網(wǎng)絡(luò)復(fù)位包;網(wǎng)絡(luò)模塊,用于向與所述看門狗控制器對應(yīng)的被監(jiān)控計(jì)算機(jī)發(fā)送所述網(wǎng)絡(luò)復(fù)位包;并且網(wǎng)絡(luò)模塊還用于向被監(jiān)控計(jì)算機(jī)發(fā)送網(wǎng)絡(luò)請求包和接收被監(jiān)控計(jì)算機(jī)返回的網(wǎng)絡(luò)應(yīng)答包;所述處理模塊還用于當(dāng)所述網(wǎng)絡(luò)模塊接收到被監(jiān)控計(jì)算機(jī)返回的網(wǎng)絡(luò)應(yīng)答包,則向與所述被監(jiān)控計(jì)算機(jī)對應(yīng)的看門狗控制器進(jìn)行喂狗操作。處理模塊還用于設(shè)置看門狗控制器和與所述看門狗控制器對應(yīng)的被監(jiān)控計(jì)算機(jī)的IP地址之間的映射關(guān)系;所述網(wǎng)絡(luò)模塊則用于根據(jù)與看門狗控制器對應(yīng)的IP地址向被監(jiān)控計(jì)算機(jī)發(fā)送所述網(wǎng)絡(luò)復(fù)位包。因此,可以通過網(wǎng)絡(luò)看門狗實(shí)現(xiàn)多個(gè)計(jì)算機(jī)系統(tǒng)的看門狗功能,能節(jié)省多個(gè)計(jì)算機(jī)的硬件成本。
[0004]發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn):現(xiàn)有技術(shù)中的看門狗定時(shí)器的工作原理是:在微控單元(Micro controller unit,簡稱MCU)正常工作時(shí),每隔一段時(shí)間輸出一個(gè)喂狗信號,給看門狗電路清零,如果超過規(guī)定的時(shí)間不喂狗,看門狗定時(shí)超時(shí),就會給一個(gè)復(fù)位信號到MCU,使MCU復(fù)位,防止MCU死機(jī);但是這類看門狗定時(shí)器的弊端在于,MCU在開發(fā)過程中會錯(cuò)誤復(fù)位,例如MCU在仿真過程中暫停,這時(shí)看門狗會誤判斷MCU死機(jī),并對MCU進(jìn)行復(fù)位,從而導(dǎo)致MCU無法正常進(jìn)行仿真。
[0005]在中國專利申請?zhí)枮镃N201410298589.8的中國專利申請中,雖然公開了一種能夠讓看門狗的定時(shí)時(shí)間可控和看門狗功能也可控的技術(shù)方案:一種FPGA實(shí)現(xiàn)軟件編程器件可控看門狗功能的方法,包括:(I)FPGA上電復(fù)位,令看門狗監(jiān)控計(jì)數(shù)器初值為0,進(jìn)入步驟(2) ;(2)判斷軟件編程器件是否打開了寫初值開關(guān),若軟件編程器件打開了寫初值開關(guān),則進(jìn)入步驟(3);若軟件編程器件沒有打開寫初值開關(guān),則直接進(jìn)入步驟(5) ;(3)軟件編程器件根據(jù)數(shù)據(jù)處理周期計(jì)算看門狗監(jiān)控計(jì)數(shù)器初值,F(xiàn)PGA讀取該初值并將初值鎖定,進(jìn)入步驟(4);所述數(shù)據(jù)處理周期與喂狗周期相同;(4)FPGA將從軟件編程器件中讀取的看門狗監(jiān)控計(jì)數(shù)器初值賦給看門狗監(jiān)控計(jì)數(shù)器,進(jìn)入步驟(5) ; (5)FPGA判斷軟件編程器件是否打開了看門狗使能,若軟件編程器件沒有打開看門狗使能,則直接結(jié)束;若軟件編程器件打開了看門狗使能,則進(jìn)入步驟(6) ; (6)FPGA中看門狗監(jiān)控計(jì)數(shù)器根據(jù)FPGA的時(shí)鐘開始自動計(jì)數(shù),進(jìn)入步驟(7) ;(7)FPGA判斷是否有軟件編程器件發(fā)出的喂狗信號,如果有喂狗信號,則利用喂狗周期來修改FPGA中的看門狗監(jiān)控計(jì)數(shù)器初值,返回步驟(4);若沒有喂狗信號,則進(jìn)入步驟⑶;(8)FPGA判斷看門狗監(jiān)控計(jì)數(shù)器是否計(jì)滿或者達(dá)到預(yù)設(shè)的固定值,若看門狗監(jiān)控計(jì)數(shù)器的計(jì)數(shù)上限為計(jì)數(shù)器上限且看門狗監(jiān)控計(jì)數(shù)器沒有計(jì)滿,返回步驟(6);若看門狗監(jiān)控計(jì)數(shù)器的計(jì)數(shù)上限為計(jì)數(shù)器上限且看門狗監(jiān)控計(jì)數(shù)器計(jì)滿,進(jìn)入步驟(9);若看門狗監(jiān)控計(jì)數(shù)器的計(jì)數(shù)上限為預(yù)設(shè)的固定值且看門狗監(jiān)控計(jì)數(shù)器沒有達(dá)到預(yù)設(shè)的固定值,返回步驟¢);若看門狗監(jiān)控計(jì)數(shù)器的計(jì)數(shù)上限為預(yù)設(shè)的固定值且看門狗監(jiān)控計(jì)數(shù)器達(dá)到預(yù)設(shè)的固定值,進(jìn)入步驟(9);所述預(yù)設(shè)的固定值小于計(jì)數(shù)器上限;(9)FPGA產(chǎn)生給軟件編程器件復(fù)位的信號,返回步驟(4)。
[0006]發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),上述申請?zhí)枮镃N201410298589.8的中國專利申請中,雖然有講到可以讓看門狗看門功能可控的技術(shù)方案,但是對于如何通過軟件編程器件可控地打開或者關(guān)閉看門狗功能并沒有公開。因此,本領(lǐng)域人員迫切希望找到一種能夠智能、可靠地實(shí)現(xiàn)看門狗的看門功能打開或者關(guān)閉的技術(shù)方案。
【發(fā)明內(nèi)容】
[0007]為了解決現(xiàn)有技術(shù)中存在的上述技術(shù)問題,本發(fā)明提供一種基于FPGA具體實(shí)現(xiàn)對看門狗的看門功能打開或者關(guān)閉功能的技術(shù)方案,能夠有效避免看門狗對MCU錯(cuò)誤復(fù)位。
[0008]本發(fā)明采用的技術(shù)方案是:提供一種基于FPGA的看門狗復(fù)位方法,其特征在于,包括:
[0009]一,初始化看門狗;
[0010]二,接收看門狗配置報(bào)文,并將配置報(bào)文轉(zhuǎn)換為并行數(shù)據(jù),其中,所述看門狗配置報(bào)文中的數(shù)據(jù)通過最大似然判決法識別;
[0011]三,對步驟二中識別到的看門狗配置報(bào)文數(shù)據(jù)進(jìn)行解碼,當(dāng)檢測到幀起始位時(shí),進(jìn)入看門狗配置報(bào)文數(shù)據(jù)接收狀態(tài);
[0012]四,將步驟三中接收的看門狗配置報(bào)文數(shù)據(jù)存儲至寄存器中,并且當(dāng)接收到此幀結(jié)束位時(shí),此幀看門狗配置報(bào)文數(shù)據(jù)接收結(jié)束,返回至步驟三,重新準(zhǔn)備下一幀看門狗配置報(bào)文數(shù)據(jù)的接收;
[0013]五,在步驟四中接收到此幀結(jié)束位時(shí),對此幀報(bào)文中的看門狗配置報(bào)文數(shù)據(jù)進(jìn)行判斷,判斷此幀看門狗配置報(bào)文中的數(shù)據(jù)中是否對應(yīng)有關(guān)閉看門狗功能的命令;如果沒有,則向看門狗復(fù)位信號發(fā)生器發(fā)出開啟看門狗功能的命令;如果有,則向看門狗復(fù)位信號發(fā)生器發(fā)出關(guān)閉看門狗功能的命令;
[0014]六,如果步驟五中,看門狗復(fù)位發(fā)生器接收到開啟看門狗功能的命令,繼續(xù)檢測復(fù)位信號發(fā)生器接收到的喂狗信號是否滿足復(fù)位的條件;如果是,復(fù)位信號發(fā)生器向MCU輸出復(fù)位信號;
[0015]如果步驟五中,看門狗復(fù)位發(fā)生器接收到關(guān)閉看門狗命令,則返回至步驟二。
[0016]因此,當(dāng)MCU處于仿真狀態(tài)下時(shí),利用FPGA硬件平臺,通過對看門狗配置報(bào)文的解碼,可以準(zhǔn)確地控制看門狗功能進(jìn)行關(guān)閉;而1(^正常工作時(shí),又可以通過對看門狗配置報(bào)文進(jìn)行解碼,讓看門狗功能開啟;并且在看門狗配置報(bào)文接收、解碼過程中,通過最大似然判決法識別看門狗配置報(bào)文的數(shù)據(jù),提高了看門狗配置報(bào)文數(shù)據(jù)獲取、解碼過程中抗干擾的能力,使得看門狗配置報(bào)文數(shù)據(jù)的結(jié)果更加準(zhǔn)確。
[0017]優(yōu)選地,步驟二中所述看門狗配置報(bào)文中的數(shù)據(jù)識別采用的最大似然判決法包括:將看門狗配置報(bào)文接收的時(shí)鐘配置為波特率的N倍,所述看門狗配置報(bào)文中的數(shù)據(jù)的每個(gè)位都會有N個(gè)采樣值,當(dāng)采樣值超過N/2次的電平邏輯值即為所述數(shù)據(jù)中相應(yīng)位的值。
[0018]優(yōu)選地,上述N倍為16倍,所述波特率為9600Bps ;所述看門狗配置報(bào)文接收的時(shí)鐘的分頻率系數(shù)為652,每個(gè)周期的前半段內(nèi)為高電平,每個(gè)周期的后半段為低電平。
[0019]因此,采用上述優(yōu)選的技術(shù)方案,更好地,保證了看門狗配置報(bào)文接收、解碼后數(shù)據(jù)的準(zhǔn)確性。
[0020]優(yōu)選地,對步驟六中喂狗信號的檢測方法包括:在喂狗信號檢測模塊中設(shè)置第一寄存器和第二寄存器,所述第一寄存器中的值滯后喂狗信號一個(gè)時(shí)鐘,所述第二寄存器滯后所述第一寄存器一個(gè)時(shí)鐘;如果在同一個(gè)時(shí)刻檢測到所述第一寄存器中的值和所述第二寄存器中的值不同,復(fù)位信號發(fā)生器中的計(jì)數(shù)器就開始計(jì)時(shí)。
[0021]優(yōu)選地,所述復(fù)位信號發(fā)生器中計(jì)數(shù)器開始計(jì)時(shí)后,判斷所述復(fù)位信號發(fā)生器中計(jì)數(shù)器的計(jì)時(shí)時(shí)間;如果時(shí)間滿足看門狗變化時(shí)間,則將喂狗信號檢測模塊中的狀態(tài)寄存器置為看門狗信號處于正常的狀態(tài);如果時(shí)間不滿足看門狗變化時(shí)間,則將喂狗信號檢測模塊中的狀態(tài)寄存器置為看門狗信號處于異常的狀態(tài)。
[0022]因此,可以讓看門狗功能可以更好地監(jiān)控MCU狀態(tài),避免對MCU錯(cuò)誤復(fù)位的同時(shí),能夠在正常情況下,準(zhǔn)確、及時(shí)地為MCU發(fā)出復(fù)位信號。
[0023]優(yōu)選地,所述復(fù)位信號發(fā)生器設(shè)置有狀態(tài)寄存器,計(jì)數(shù)器和復(fù)位信號發(fā)出模塊;所述所述復(fù)位信號發(fā)生器中狀態(tài)寄存器檢測到復(fù)位信號有效后,對計(jì)所述復(fù)位信號發(fā)生器中計(jì)數(shù)器進(jìn)行清零。
[002