本發(fā)明涉及通信技術(shù)領(lǐng)域,尤指一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)設(shè)備越來(lái)越普及,常用的有路由器、交換機(jī)等等,網(wǎng)絡(luò)設(shè)備通常具有復(fù)位功能,下面以如圖1所示的交換機(jī)為例進(jìn)行說(shuō)明。交換機(jī)的復(fù)位有冷復(fù)位和熱復(fù)位兩種:冷復(fù)位是交換機(jī)從下電狀態(tài)到上電狀態(tài)的復(fù)位,用于對(duì)整機(jī)復(fù)位,即對(duì)交換機(jī)中各器件(例如,中央處理器(Central Processing Unit,CPU),復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)、業(yè)務(wù)模塊等等)進(jìn)行復(fù)位;熱復(fù)位是指交換機(jī)在上電狀態(tài)下,通過(guò)復(fù)位命令或者復(fù)位按鈕對(duì)整機(jī)復(fù)位或者對(duì)CPU復(fù)位。
如圖1所示,CPLD和看門(mén)狗器件(如芯片TPS3823)的設(shè)置正是為了滿(mǎn)足交換機(jī)同時(shí)具有可靠的熱復(fù)位和冷復(fù)位的功能:TPS3823帶有上電延時(shí)200ms復(fù)位功能,可以在冷復(fù)位時(shí)送出復(fù)位信號(hào)給CPLD;TPS3823同時(shí)作為看門(mén)狗定時(shí)器,CPU發(fā)出脈沖信號(hào)給CPLD,CPLD可以對(duì)該脈沖信號(hào)進(jìn)行脈沖變換處理后發(fā)出給TPS3823,亦可以直接將該脈沖信號(hào)透?jìng)鹘oTPS3823,實(shí)現(xiàn)對(duì)TPS3823的喂狗。當(dāng)交換機(jī)需要熱復(fù)位時(shí),CPU會(huì)發(fā)出重啟(reload)命令,之后CPU主動(dòng)停止發(fā)出脈沖信號(hào),TPS3823喂狗超時(shí),發(fā)出復(fù)位信號(hào);當(dāng)交換機(jī)的軟件或硬件異常時(shí),CPU會(huì)被動(dòng)停止發(fā)出脈沖信號(hào),TPS3823喂狗超時(shí),發(fā)出復(fù)位信號(hào)。CPLD接收到TPS3823發(fā)出的復(fù)位信號(hào)后,分發(fā)復(fù)位信號(hào)給交換機(jī)中的各個(gè)器件,即進(jìn)行整機(jī)復(fù)位。
上述網(wǎng)絡(luò)設(shè)備的復(fù)位方法中,CPLD接收到看門(mén)狗器件的復(fù)位信號(hào)后直接進(jìn)行整機(jī)復(fù)位,但實(shí)際上,并不是所有的情況下都需要整機(jī)復(fù)位,當(dāng)無(wú)需整機(jī)復(fù)位時(shí)進(jìn)行整機(jī)復(fù)位會(huì)導(dǎo)致網(wǎng)絡(luò)設(shè)備的正常業(yè)務(wù)中斷,影響網(wǎng)絡(luò)設(shè)備的可靠性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法及裝置,用以解決現(xiàn)有技術(shù)中存在的無(wú)需整機(jī)復(fù)位時(shí)進(jìn)行整機(jī)復(fù)位導(dǎo)致的網(wǎng)絡(luò)設(shè)備的正常業(yè)務(wù)中斷、影響網(wǎng)絡(luò)設(shè)備可靠性的問(wèn)題。
根據(jù)本發(fā)明實(shí)施例,提供一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法,所述網(wǎng)絡(luò)設(shè)備包括CPU、業(yè)務(wù)模塊、CPLD、復(fù)位信號(hào)發(fā)生器件和電源時(shí)鐘監(jiān)控器件,所述方法應(yīng)用在所述CPLD中,所述方法包括:
接收所述復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào);
確定所述復(fù)位信號(hào)是否是熱復(fù)位信號(hào);
若確定所述復(fù)位信號(hào)是熱復(fù)位信號(hào),則根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將所述CPU進(jìn)行復(fù)位。
具體的,確定所述復(fù)位信號(hào)是否是熱復(fù)位信號(hào),具體包括:
判斷熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是否是熱復(fù)位信號(hào)標(biāo)識(shí);
若所述熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是熱復(fù)位信號(hào)標(biāo)識(shí),則確定所述復(fù)位信號(hào)是熱復(fù)位信號(hào)。
具體的,根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將所述CPU進(jìn)行復(fù)位,具體包括:
獲取軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息;
若所述軟件復(fù)位寄存器存儲(chǔ)的信息或者所述電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是整機(jī)復(fù)位標(biāo)識(shí),則將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位;
若所述軟件復(fù)位寄存器存儲(chǔ)的信息和所述電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是CPU復(fù)位標(biāo)識(shí),則將所述CPU進(jìn)行復(fù)位。
可選的,還包括:
若檢測(cè)到所述電源時(shí)鐘監(jiān)控器件監(jiān)控到異常的電源時(shí)鐘時(shí),則在電源時(shí)鐘監(jiān)控結(jié)果寄存器中與異常的電源時(shí)鐘對(duì)應(yīng)的位置寫(xiě)入異常標(biāo)識(shí);
若所述異常標(biāo)識(shí)對(duì)應(yīng)的電源時(shí)鐘是所述CPU與所述業(yè)務(wù)模塊共用的電源時(shí)鐘,則確定所述業(yè)務(wù)模塊異常;
在所述電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入所述整機(jī)復(fù)位標(biāo)識(shí)。
可選的,還包括:
接收網(wǎng)絡(luò)設(shè)備初始化指令,所述網(wǎng)絡(luò)設(shè)備初始化指令是所述CPU進(jìn)入初始化、并確定整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值不是零后發(fā)出的,用于指示所述網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件執(zhí)行初始化;
執(zhí)行初始化;以及,
接收所述CPU在熱復(fù)位信號(hào)寄存器中寫(xiě)入的熱復(fù)位信號(hào)標(biāo)識(shí)、在所述軟件復(fù)位寄存器和所述電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入的CPU復(fù)位標(biāo)識(shí)、并將所述電源時(shí)鐘監(jiān)控結(jié)果寄存器、整機(jī)復(fù)位次數(shù)寄存器和CPU復(fù)位次數(shù)寄存器清零。
可選的,所述復(fù)位信號(hào)是所述復(fù)位信號(hào)發(fā)生器件檢測(cè)到所述CPU停止發(fā)出脈沖信號(hào)后發(fā)出的;
其中,所述脈沖信號(hào)是所述CPU發(fā)出重啟CPU命令后停止發(fā)出的;或者,所述脈沖信號(hào)是所述CPU發(fā)出重啟整機(jī)命令、并在所述軟件復(fù)位寄存器中寫(xiě)入整機(jī)復(fù)位標(biāo)識(shí)后停止發(fā)出的。
根據(jù)本申請(qǐng)實(shí)施例,還提供一種網(wǎng)絡(luò)設(shè)備的復(fù)位裝置,所述網(wǎng)絡(luò)設(shè)備包括CPU、業(yè)務(wù)模塊、CPLD、復(fù)位信號(hào)發(fā)生器件和電源時(shí)鐘監(jiān)控器件,所述裝置應(yīng)用在所述CPLD中,所述裝置包括:
第一接收單元,用于接收所述復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào);
第一確定單元,用于確定所述復(fù)位信號(hào)是否是熱復(fù)位信號(hào);
復(fù)位單元,用于若確定所述復(fù)位信號(hào)是熱復(fù)位信號(hào),則根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將所述CPU進(jìn)行復(fù)位。
具體的,所述第一確定單元,用于確定所述復(fù)位信號(hào)是否是熱復(fù)位信號(hào),具體用于:
判斷熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是否是熱復(fù)位信號(hào)標(biāo)識(shí);
若所述熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是熱復(fù)位信號(hào)標(biāo)識(shí),則確定所述復(fù)位信號(hào)是熱復(fù)位信號(hào)。
具體的,所述復(fù)位單元,用于根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將所述CPU進(jìn)行復(fù)位,具體用于:
獲取軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息;
若所述軟件復(fù)位寄存器存儲(chǔ)的信息或者所述電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是整機(jī)復(fù)位標(biāo)識(shí),則將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位;
若所述軟件復(fù)位寄存器存儲(chǔ)的信息和所述電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是CPU復(fù)位標(biāo)識(shí),則將所述CPU進(jìn)行復(fù)位。
可選的,還包括:
第一寫(xiě)入單元,用于若檢測(cè)到所述電源時(shí)鐘監(jiān)控器件監(jiān)控到異常的電源時(shí)鐘時(shí),則在電源時(shí)鐘監(jiān)控結(jié)果寄存器中與異常的電源時(shí)鐘對(duì)應(yīng)的位置寫(xiě)入異常標(biāo)識(shí);
第二確定單元,用于若所述異常標(biāo)識(shí)對(duì)應(yīng)的電源時(shí)鐘是所述CPU與所述業(yè)務(wù)模塊共用的電源時(shí)鐘,則確定所述業(yè)務(wù)模塊異常;
第二寫(xiě)入單元,用于在所述電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入所述整機(jī)復(fù)位標(biāo)識(shí)。
可選的,所述裝置還包括:
第二接收單元,用于接收網(wǎng)絡(luò)設(shè)備初始化指令,所述網(wǎng)絡(luò)設(shè)備初始化指令是所述CPU進(jìn)入初始化、并確定整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值不是零后發(fā)出的,用于指示所述網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件執(zhí)行初始化;
執(zhí)行單元,用于執(zhí)行初始化;以及,
第三接收單元,用于接收所述CPU在熱復(fù)位信號(hào)寄存器中寫(xiě)入的熱復(fù)位信號(hào)標(biāo)識(shí)、在所述軟件復(fù)位寄存器和所述電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入的CPU復(fù)位標(biāo)識(shí)、并將所述電源時(shí)鐘監(jiān)控結(jié)果寄存器、整機(jī)復(fù)位次數(shù)寄存器和CPU復(fù)位次數(shù)寄存器清零。
本發(fā)明有益效果如下:
本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的復(fù)位方法及裝置,所述CPLD接收所述復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào);確定所述復(fù)位信號(hào)是否是熱復(fù)位信號(hào);若確定所述復(fù)位信號(hào)是熱復(fù)位信號(hào),則根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將所述網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將所述CPU進(jìn)行復(fù)位。該方案中,CPLD確定復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào)后,根據(jù)軟件復(fù)位標(biāo)識(shí)寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器中存儲(chǔ)的信息可以準(zhǔn)確判斷出將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU復(fù)位,從而能夠確保在僅需要CPU復(fù)位而無(wú)需整機(jī)復(fù)位時(shí),網(wǎng)絡(luò)設(shè)備可以繼續(xù)正常業(yè)務(wù),保證網(wǎng)絡(luò)設(shè)備的可靠性。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)中交換機(jī)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例中網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中網(wǎng)絡(luò)設(shè)備的復(fù)位方法的流程圖;
圖4為發(fā)明實(shí)施例中另一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法的流程圖;
圖5為本發(fā)明實(shí)施例中網(wǎng)絡(luò)設(shè)備的復(fù)位裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
針對(duì)現(xiàn)有技術(shù)中存在的無(wú)需整機(jī)復(fù)位時(shí)進(jìn)行整機(jī)復(fù)位導(dǎo)致的網(wǎng)絡(luò)設(shè)備的正常業(yè)務(wù)中斷、影響網(wǎng)絡(luò)設(shè)備可靠性的問(wèn)題,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法,該網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)如圖2所示。發(fā)明人經(jīng)研究發(fā)現(xiàn),網(wǎng)絡(luò)設(shè)備需要進(jìn)行整機(jī)復(fù)位還是CPU復(fù)位可以根據(jù)軟件和硬件是否異常來(lái)確定,而硬件異常時(shí)常通常是電源時(shí)鐘異常,因此,相對(duì)于如圖1所示的網(wǎng)絡(luò)設(shè)備增加了電源時(shí)鐘監(jiān)控器件,用來(lái)監(jiān)控電源時(shí)鐘是否異常,在網(wǎng)絡(luò)設(shè)備中CPU與業(yè)務(wù)模塊會(huì)共用電源時(shí)鐘,若在接收到復(fù)位信號(hào)時(shí)還監(jiān)控到這些CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘異常時(shí),則確定業(yè)務(wù)模塊異常,需要進(jìn)行整機(jī)復(fù)位,當(dāng)接收到復(fù)位信號(hào)時(shí)未監(jiān)控到CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘異常時(shí),則確定業(yè)務(wù)模塊正常,僅復(fù)位CPU即可,因此,在該方法中可以根據(jù)監(jiān)控結(jié)果進(jìn)一步確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU復(fù)位。不同的網(wǎng)絡(luò)設(shè)備,業(yè)務(wù)模塊設(shè)置的也不同,這里不再一一贅述。該方法的流程如圖3所示,執(zhí)行主體可以是網(wǎng)絡(luò)設(shè)備中的CPLD,執(zhí)行步驟如下:
S31:接收復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)。
復(fù)位信號(hào)發(fā)生器件可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,下面以復(fù)位信號(hào)發(fā)生器件為芯片TPS3823為例進(jìn)行說(shuō)明。
當(dāng)網(wǎng)絡(luò)設(shè)備冷復(fù)位時(shí),TPS3823利用自身帶有的上電延時(shí)200ms復(fù)位功能,發(fā)出復(fù)位信號(hào)給CPLD。當(dāng)網(wǎng)絡(luò)設(shè)備的CPU因?yàn)檐浖惓;蛘唠娫磿r(shí)鐘異常停止喂狗時(shí),TPS3823接收不到CPU發(fā)送的脈沖信號(hào),TPS3823會(huì)因?yàn)槲构烦瑫r(shí)發(fā)出復(fù)位信號(hào)給CPLD。
S32:確定復(fù)位信號(hào)是否是熱復(fù)位信號(hào)。
現(xiàn)有技術(shù)中,CPLD接收到復(fù)位信號(hào)后會(huì)進(jìn)行脈沖變換處理后或者直接分發(fā)給網(wǎng)絡(luò)設(shè)備的各個(gè)器件,從而直接進(jìn)行整機(jī)復(fù)位。在本發(fā)明實(shí)施例中,CPLD接收到復(fù)位信號(hào)后會(huì)確定復(fù)位信號(hào)是冷復(fù)位信號(hào)還是熱復(fù)位信號(hào),從而進(jìn)一步確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位。
其中,冷復(fù)位信號(hào)是復(fù)位信號(hào)發(fā)生器件在網(wǎng)絡(luò)設(shè)備從下電狀態(tài)變?yōu)樯想姞顟B(tài)后發(fā)出的復(fù)位信號(hào),熱復(fù)位信號(hào)是復(fù)位信號(hào)發(fā)生器件在網(wǎng)絡(luò)設(shè)備處于上電狀態(tài)下發(fā)出的復(fù)位信號(hào)。
S33:若確定復(fù)位信號(hào)是熱復(fù)位信號(hào),則根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位。
若復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是冷復(fù)位信號(hào),說(shuō)明網(wǎng)絡(luò)設(shè)備剛剛從下電狀態(tài)變?yōu)樯想姞顟B(tài),此時(shí)需要將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位。
若復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào),說(shuō)明網(wǎng)絡(luò)設(shè)備一直處于上電狀態(tài)下,此時(shí),還可以進(jìn)一步根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位。
其中,軟件復(fù)位寄存器可以定義為網(wǎng)絡(luò)設(shè)備的軟件在網(wǎng)絡(luò)設(shè)備處于上電狀態(tài)下是否發(fā)出過(guò)整機(jī)復(fù)位指令,該寄存器存儲(chǔ)的信息可讀寫(xiě),上電時(shí)是CPU復(fù)位標(biāo)識(shí),不受CPLD分發(fā)的復(fù)位信號(hào)影響,當(dāng)軟件需要復(fù)位時(shí),CPU會(huì)將此寄存器存儲(chǔ)的信息改為整機(jī)復(fù)位標(biāo)識(shí)。其中,整機(jī)復(fù)位標(biāo)識(shí)可以但不限于設(shè)定為0x55,CPU復(fù)位標(biāo)識(shí)可以但不限于設(shè)定為0x00,該寄存器可以用rst_notify來(lái)表示。
電源時(shí)鐘監(jiān)控復(fù)位寄存器可以定義為CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘是否異常,該寄存器存儲(chǔ)的信息可讀寫(xiě),上電時(shí)為CPU復(fù)位標(biāo)識(shí),不受CPLD分發(fā)的復(fù)位信號(hào)影響,當(dāng)CPLD檢測(cè)到CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘異常時(shí)將該寄存器的值改為整機(jī)復(fù)位標(biāo)識(shí),CPU初始化后會(huì)將其改為CPU復(fù)位標(biāo)識(shí)。其中,該寄存器可以用mon_notify來(lái)表示。
該方案中,CPLD確定復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào)后,根據(jù)軟件復(fù)位標(biāo)識(shí)寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器中存儲(chǔ)的信息可以準(zhǔn)確判斷出將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU復(fù)位,從而能夠確保在僅需要CPU復(fù)位而無(wú)需整機(jī)復(fù)位時(shí),網(wǎng)絡(luò)設(shè)備可以繼續(xù)正常業(yè)務(wù),保證網(wǎng)絡(luò)設(shè)備的可靠性。
下面詳細(xì)說(shuō)明上述網(wǎng)絡(luò)設(shè)備的復(fù)位方法中的各個(gè)步驟。
具體的,上述S32中的確定復(fù)位信號(hào)是否是熱復(fù)位信號(hào),具體包括:判斷熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是否是熱復(fù)位信號(hào)標(biāo)識(shí);若熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是熱復(fù)位信號(hào)標(biāo)識(shí),則確定復(fù)位信號(hào)是熱復(fù)位信號(hào)。
熱復(fù)位信號(hào)寄存器可以定義為網(wǎng)絡(luò)設(shè)備處于上電狀態(tài)下復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào)還是冷復(fù)位信號(hào),該寄存器存儲(chǔ)的信息可讀寫(xiě),上電時(shí)為冷復(fù)位信號(hào)標(biāo)識(shí),不受CPLD分發(fā)的復(fù)位信號(hào)影響,當(dāng)CPU初始化完成后會(huì)將此寄存器存儲(chǔ)的信息改為熱復(fù)位信號(hào)標(biāo)識(shí)。其中,冷復(fù)位信號(hào)標(biāo)識(shí)可以但不限于設(shè)定為0x00,熱復(fù)位信號(hào)標(biāo)識(shí)可以但不限于設(shè)定為0x01,該寄存器可以用warmboot_flag來(lái)表示。
若熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是0x00,說(shuō)明復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是冷復(fù)位信號(hào);若熱復(fù)位信號(hào)寄存器存儲(chǔ)的值是0x01,說(shuō)明復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào)。
具體的,上述S33中的根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位,具體包括:獲取軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息;若軟件復(fù)位寄存器存儲(chǔ)的信息或者電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是整機(jī)復(fù)位標(biāo)識(shí),則將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位;若軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是CPU復(fù)位標(biāo)識(shí),則將CPU進(jìn)行復(fù)位。
前面已經(jīng)描述軟件復(fù)位寄存器和電源時(shí)鐘監(jiān)控復(fù)位寄存器的定義,因此,可以根據(jù)這兩個(gè)寄存器中存儲(chǔ)的信息來(lái)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位,還是將CPU進(jìn)行復(fù)位。若軟件復(fù)位寄存器存儲(chǔ)的信息或者電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是整機(jī)復(fù)位標(biāo)識(shí),說(shuō)明網(wǎng)絡(luò)設(shè)備的軟件下發(fā)過(guò)整機(jī)復(fù)位指令或者業(yè)務(wù)模塊異常,這兩種情況需要將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位;若軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息均不是整機(jī)復(fù)位標(biāo)識(shí),而是CPU復(fù)位標(biāo)識(shí),說(shuō)明網(wǎng)絡(luò)設(shè)備的軟件沒(méi)有下發(fā)過(guò)整機(jī)復(fù)位指令且業(yè)務(wù)模塊正常,此時(shí)無(wú)需進(jìn)行整機(jī)復(fù)位,僅需將CPU復(fù)位即可。
可選的實(shí)施方式,將CPU進(jìn)行復(fù)位之后,可以將CPU復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值增加1;將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位之后,可以將整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值增加1。
整機(jī)復(fù)位次數(shù)寄存器可以定義為網(wǎng)絡(luò)設(shè)備處于上電狀態(tài)下整機(jī)復(fù)位的次數(shù),該寄存器存儲(chǔ)的數(shù)值可讀寫(xiě),上電時(shí)是零,不受CPLD分發(fā)的復(fù)位信號(hào)影響,每次整機(jī)復(fù)位后,CPU可以將該寄存器存儲(chǔ)的數(shù)值增加1,當(dāng)CPLD掉電后再工作,該寄存器存儲(chǔ)的數(shù)值改為零。其中,該寄存器可以用rst_system_cnt來(lái)表示。
CPU復(fù)位次數(shù)寄存器可以定義為網(wǎng)絡(luò)設(shè)備處于上電狀態(tài)下CPU復(fù)位的次數(shù),該寄存器存儲(chǔ)的數(shù)值可讀寫(xiě),上電時(shí)是零,不受CPLD分發(fā)的復(fù)位信號(hào)影響,每次CPU復(fù)位后,CPU可以將該寄存器存儲(chǔ)的數(shù)值增加1,當(dāng)CPLD掉電后再工作,該寄存器存儲(chǔ)的數(shù)值改為零。其中,該寄存器可以用rst_cpu_cnt來(lái)表示。
可選的實(shí)施方式,CPLD可以檢測(cè)電源時(shí)鐘監(jiān)控器件的監(jiān)控結(jié)果,并根據(jù)該監(jiān)控結(jié)果修改電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控結(jié)果寄存器存儲(chǔ)的信息,具體為:若檢測(cè)到電源時(shí)鐘監(jiān)控器件監(jiān)控到異常的電源時(shí)鐘時(shí),則在電源時(shí)鐘監(jiān)控結(jié)果寄存器中與異常的電源時(shí)鐘對(duì)應(yīng)的位置寫(xiě)入異常標(biāo)識(shí);若異常標(biāo)識(shí)對(duì)應(yīng)的電源時(shí)鐘是CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘,則確定業(yè)務(wù)模塊異常;在電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入整機(jī)復(fù)位標(biāo)識(shí)。
電源時(shí)鐘監(jiān)控結(jié)果寄存器可以定義為電源時(shí)鐘監(jiān)控器件監(jiān)控到的異常的電源時(shí)鐘,該寄存器存儲(chǔ)的信息可讀寫(xiě),上電時(shí)是零,不受CPLD分發(fā)的復(fù)位信號(hào)影響,當(dāng)CPLD檢測(cè)到電源時(shí)鐘監(jiān)控器件監(jiān)控到異常的電源時(shí)鐘時(shí),將電源時(shí)鐘監(jiān)控結(jié)果寄存器中與異常的電源時(shí)鐘對(duì)應(yīng)的位置寫(xiě)入為異常標(biāo)識(shí),CPU初始化后會(huì)將其改為零。其中,異常標(biāo)識(shí)可以用“1”來(lái)表示,該寄存器可以用mon_result來(lái)表示。
若異常標(biāo)識(shí)對(duì)應(yīng)的電源時(shí)鐘是CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘時(shí),則認(rèn)為此時(shí)業(yè)務(wù)模塊異常,此時(shí)需要將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位,CPLD會(huì)將電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息改為整機(jī)復(fù)位標(biāo)識(shí)。
本發(fā)明實(shí)施例還提供另一種網(wǎng)絡(luò)設(shè)備的復(fù)位方法,該方法的流程如圖4所示,在圖1的基礎(chǔ)上還包括以下步驟。
S34:接收網(wǎng)絡(luò)設(shè)備初始化指令,網(wǎng)絡(luò)設(shè)備初始化指令是CPU進(jìn)入初始化、并確定整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值不是零后發(fā)出的,用于指示網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件執(zhí)行初始化。
無(wú)論是復(fù)位整機(jī)還是復(fù)位CPU,CPU都會(huì)進(jìn)入初始化,之后需要確定整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值是否是零,也就是確定網(wǎng)絡(luò)設(shè)備之前復(fù)位的是整機(jī)復(fù)位還是CPU復(fù)位。
若整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值是零,CPU可以確定網(wǎng)絡(luò)設(shè)備之前的復(fù)位是CPU復(fù)位,此時(shí),僅初始化CPU即可;若整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值不是零,CPU可以確定網(wǎng)絡(luò)設(shè)備之前的復(fù)位是整機(jī)復(fù)位,網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件都需要初始化,CPU需要發(fā)出網(wǎng)絡(luò)設(shè)備初始化指令,網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件接收到該指令后都會(huì)執(zhí)行初始化。
S35:執(zhí)行初始化。
S36:接收CPU在熱復(fù)位信號(hào)寄存器中寫(xiě)入的熱復(fù)位信號(hào)標(biāo)識(shí)、在軟件復(fù)位寄存器和電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入的CPU復(fù)位標(biāo)識(shí)、并將電源時(shí)鐘監(jiān)控結(jié)果寄存器、整機(jī)復(fù)位次數(shù)寄存器和CPU復(fù)位次數(shù)寄存器清零。
CPU初始化完成后,需要重新設(shè)置上述六個(gè)寄存器存儲(chǔ)的信息,以便于后續(xù)網(wǎng)絡(luò)設(shè)備復(fù)位時(shí)使用。
可選的實(shí)施方式,上述網(wǎng)絡(luò)設(shè)備的復(fù)位方法還包括:將熱復(fù)位信號(hào)寄存器、軟件復(fù)位寄存器、電源時(shí)鐘監(jiān)控復(fù)位寄存器、電源時(shí)鐘監(jiān)控結(jié)果寄存器、整機(jī)復(fù)位次數(shù)寄存器和CPU復(fù)位次數(shù)寄存器存儲(chǔ)的信息保存在日志文件中,日志文件用于網(wǎng)絡(luò)設(shè)備的故障定位分析。
可以但不限于在CPU初始化的引導(dǎo)程序階段(boot)在日志文件中保存上述六個(gè)寄存器存儲(chǔ)的信息,當(dāng)網(wǎng)絡(luò)設(shè)備出現(xiàn)故障時(shí),根據(jù)記錄在日志文件中的六個(gè)寄存器存儲(chǔ)的信息來(lái)定位故障。例如當(dāng)網(wǎng)絡(luò)設(shè)備某次運(yùn)行過(guò)程中出現(xiàn)復(fù)位,讀取到熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是0x00,電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息為0x00,整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值為0x01,則可判定是CPLD的電源電壓出現(xiàn)過(guò)掉電。
可選的實(shí)施方式,上述網(wǎng)絡(luò)設(shè)備的復(fù)位方法還包括:復(fù)位信號(hào)是復(fù)位信號(hào)發(fā)生器件檢測(cè)到CPU停止發(fā)出脈沖信號(hào)后發(fā)出的;其中,脈沖信號(hào)是CPU發(fā)出重啟CPU命令后停止發(fā)出的;或者,脈沖信號(hào)是CPU發(fā)出重啟整機(jī)命令、并在軟件復(fù)位寄存器中寫(xiě)入整機(jī)復(fù)位標(biāo)識(shí)后停止發(fā)出的。
重啟命令包括重啟CPU(reload cpu)和重啟整機(jī)(reload system)兩種:當(dāng)CPU發(fā)出reload system時(shí),首先通過(guò)CPU與CPLD之間的通信接口將CPLD的軟件復(fù)位寄存器中寫(xiě)入整機(jī)復(fù)位標(biāo)識(shí),然后停止向復(fù)位信號(hào)發(fā)生器件發(fā)送脈沖信號(hào)(即停止喂狗),此時(shí)復(fù)位信號(hào)發(fā)生器件會(huì)向CPLD發(fā)出復(fù)位信號(hào);當(dāng)CPU發(fā)出reload cpu時(shí),停止向復(fù)位信號(hào)發(fā)生器件發(fā)送脈沖信號(hào)(即停止喂狗),此時(shí)復(fù)位信號(hào)發(fā)生器件會(huì)向CPLD發(fā)出復(fù)位信號(hào)。需要說(shuō)明的是,當(dāng)CPU因?yàn)檐浖蛘哂布脑虍惓r(shí)停止喂狗,此時(shí)相當(dāng)于執(zhí)行發(fā)出reload cpu。
通過(guò)上述網(wǎng)絡(luò)設(shè)備的復(fù)位方法可以實(shí)現(xiàn)很多場(chǎng)景下的復(fù)位,下面列舉五種場(chǎng)景進(jìn)行說(shuō)明:
情形一:網(wǎng)絡(luò)設(shè)備冷復(fù)位。
情形二:配置完CPU的相關(guān)命令,需要復(fù)位CPU生效,此時(shí)可以發(fā)出reload cpu,僅復(fù)位CPU,從而可以減少了初始化配置業(yè)務(wù)模塊的時(shí)間。
情形三:配置完網(wǎng)絡(luò)設(shè)備的相關(guān)命令,需要復(fù)位網(wǎng)絡(luò)設(shè)備生效時(shí),可以發(fā)出reload system,復(fù)位整機(jī)。
情形四:當(dāng)CPU輪詢(xún)到網(wǎng)絡(luò)設(shè)備的軟件異常,或者網(wǎng)絡(luò)設(shè)備的軟件上報(bào)異常時(shí),通過(guò)發(fā)出reload system,復(fù)位整機(jī)。
情形五:當(dāng)CPU因異常而停止喂狗,若CPLD檢測(cè)到CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘異常,則會(huì)復(fù)位整機(jī);當(dāng)CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘之外的電源時(shí)鐘異常時(shí),只復(fù)位CPU。
由于根據(jù)各種場(chǎng)景來(lái)區(qū)分整機(jī)復(fù)位還是CPU復(fù)位,從而能夠確保在僅需要CPU復(fù)位而無(wú)需整機(jī)復(fù)位時(shí),網(wǎng)絡(luò)設(shè)備可以繼續(xù)正常業(yè)務(wù),保證網(wǎng)絡(luò)設(shè)備的可靠性。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備的復(fù)位裝置,網(wǎng)絡(luò)設(shè)備包括CPU、業(yè)務(wù)模塊、CPLD、復(fù)位信號(hào)發(fā)生器件和電源時(shí)鐘監(jiān)控器件,該裝置應(yīng)用在CPLD中,該裝置的結(jié)構(gòu)如圖5所示,包括:
第一接收單元51,用于接收復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào);
第一確定單元52,用于確定復(fù)位信號(hào)是否是熱復(fù)位信號(hào);
復(fù)位單元53,用于若確定復(fù)位信號(hào)是熱復(fù)位信號(hào),則根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位。
該方案中,CPLD確定復(fù)位信號(hào)發(fā)生器件發(fā)出的復(fù)位信號(hào)是熱復(fù)位信號(hào)后,根據(jù)軟件復(fù)位標(biāo)識(shí)寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器中存儲(chǔ)的信息可以準(zhǔn)確判斷出將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU復(fù)位,從而能夠確保在僅需要CPU復(fù)位而無(wú)需整機(jī)復(fù)位時(shí),網(wǎng)絡(luò)設(shè)備可以繼續(xù)正常業(yè)務(wù),保證網(wǎng)絡(luò)設(shè)備的可靠性。
具體的,第一確定單元52,用于確定復(fù)位信號(hào)是否是熱復(fù)位信號(hào),具體用于:
判斷熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是否是熱復(fù)位信號(hào)標(biāo)識(shí);
若熱復(fù)位信號(hào)寄存器存儲(chǔ)的信息是熱復(fù)位信號(hào)標(biāo)識(shí),則確定復(fù)位信號(hào)是熱復(fù)位信號(hào)。
具體的,復(fù)位單元53,用于根據(jù)軟件復(fù)位寄存器和/或電源時(shí)鐘監(jiān)控復(fù)位寄存器是否存儲(chǔ)整機(jī)復(fù)位標(biāo)識(shí)確定將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位還是將CPU進(jìn)行復(fù)位,具體用于:
獲取軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息;
若軟件復(fù)位寄存器存儲(chǔ)的信息或者電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是整機(jī)復(fù)位標(biāo)識(shí),則將網(wǎng)絡(luò)設(shè)備進(jìn)行整機(jī)復(fù)位;
若軟件復(fù)位寄存器存儲(chǔ)的信息和電源時(shí)鐘監(jiān)控復(fù)位寄存器存儲(chǔ)的信息是CPU復(fù)位標(biāo)識(shí),則將CPU進(jìn)行復(fù)位。
可選的,還包括:
第一寫(xiě)入單元,用于若檢測(cè)到電源時(shí)鐘監(jiān)控器件監(jiān)控到異常的電源時(shí)鐘時(shí),則在電源時(shí)鐘監(jiān)控結(jié)果寄存器中與異常的電源時(shí)鐘對(duì)應(yīng)的位置寫(xiě)入異常標(biāo)識(shí);
第二確定單元,用于若異常標(biāo)識(shí)對(duì)應(yīng)的電源時(shí)鐘是CPU與業(yè)務(wù)模塊共用的電源時(shí)鐘,則確定業(yè)務(wù)模塊異常;
第二寫(xiě)入單元,用于在電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入整機(jī)復(fù)位標(biāo)識(shí)。
可選的,上述裝置還包括:
第二接收單元,用于接收網(wǎng)絡(luò)設(shè)備初始化指令,網(wǎng)絡(luò)設(shè)備初始化指令是CPU進(jìn)入初始化、并確定整機(jī)復(fù)位次數(shù)寄存器存儲(chǔ)的數(shù)值不是零后發(fā)出的,用于指示網(wǎng)絡(luò)設(shè)備包括的各個(gè)器件執(zhí)行初始化;
執(zhí)行單元,用于執(zhí)行初始化;以及,
第三接收單元,用于接收CPU在熱復(fù)位信號(hào)寄存器中寫(xiě)入的熱復(fù)位信號(hào)標(biāo)識(shí)、在軟件復(fù)位寄存器和電源時(shí)鐘監(jiān)控復(fù)位寄存器中寫(xiě)入的CPU復(fù)位標(biāo)識(shí)、并將電源時(shí)鐘監(jiān)控結(jié)果寄存器、整機(jī)復(fù)位次數(shù)寄存器和CPU復(fù)位次數(shù)寄存器清零。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的可選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括可選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明實(shí)施例的精神和范圍。這樣,倘若本發(fā)明實(shí)施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。