一種預(yù)測狗復(fù)位發(fā)生的方法、微控制器及嵌入式系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種預(yù)測狗復(fù)位發(fā)生的方法、微控制器及嵌入式系統(tǒng)。
【背景技術(shù)】
[0002]隨著嵌入式設(shè)備的迅猛發(fā)展,嵌入式軟件的復(fù)雜度也在不斷上升,看門狗和大容量的數(shù)據(jù)存儲器件被廣泛使用??撮T狗是用于監(jiān)視和管理單片機、數(shù)字信號處理器(DSP,Digital Signal Processor)等微控制器(MCU, Micro Control Unit)的復(fù)位電路,MCU 正常運行時,通過系統(tǒng)軟件隔一定時間給看門狗一個脈沖信號,俗稱“喂狗”。如果超過了規(guī)定時間看門狗沒有收到“喂狗”信號,看門狗輸出一個脈沖給MCU的復(fù)位引腳,使MCU復(fù)位。
[0003]雙倍速率同步動態(tài)隨機存儲器(DDR,Double Data Rate)存儲數(shù)據(jù)時,需要MCU對DDR實時提供時鐘進行數(shù)據(jù)刷新。但是在狗復(fù)位過程中,MCU不會提供時鐘給DDR,DDR存儲的數(shù)據(jù)在狗復(fù)位期間存在數(shù)據(jù)丟失的風(fēng)險,導(dǎo)致狗復(fù)位前后DDR數(shù)據(jù)可能會發(fā)生跳變,導(dǎo)致MCU運行的程序的異常行為。
【發(fā)明內(nèi)容】
[0004]鑒于現(xiàn)有技術(shù)的以上缺陷,本發(fā)明提供一種預(yù)測狗復(fù)位發(fā)生的方法、微控制器及嵌入式系統(tǒng),解決了現(xiàn)有技術(shù)中,由于狗復(fù)位期間MCU不會提供時鐘給DDR,導(dǎo)致的狗復(fù)位前后DDR數(shù)據(jù)可能會發(fā)生跳變的問題。
[0005]本發(fā)明實施例的第一方面提供了一種預(yù)測狗復(fù)位發(fā)生的方法,包括:
[0006]當(dāng)微控制器MCU運行程序時,MCU根據(jù)運行的所述程序進入中斷處理程序確定將要發(fā)生狗復(fù)位;
[0007]所述MCU將雙倍速率同步動態(tài)隨機存儲器DDR切換到自刷新模式,并等待發(fā)生所述狗復(fù)位。
[0008]結(jié)合本發(fā)明實施例的第一方面,在本發(fā)明實施例的第一方面的第一種實施方式中,所述中斷處理程序為定時器中斷處理程序,所述MCU根據(jù)運行的所述程序進入中斷處理程序確定將要發(fā)生狗復(fù)位包括:
[0009]所述MCU根據(jù)第一周期周期性進入定時器中斷處理程序,所述第一周期為定時器中斷的時間周期;
[0010]判斷所述定時器中斷處理程序中標(biāo)識的值,所述標(biāo)識用于指示是否將要發(fā)生狗復(fù)位,所述標(biāo)識的值包括第一數(shù)值,所述第一數(shù)值用于指示將要發(fā)生狗復(fù)位;
[0011]若所述標(biāo)識的值為所述第一數(shù)值,則所述MCU確定將要發(fā)生狗復(fù)位。
[0012]結(jié)合本發(fā)明實施例的第一方面的第一種實施方式,在本發(fā)明實施例的第一方面的第二種實施方式中,所述標(biāo)識的值還包括第二數(shù)值,所述第二數(shù)值用于指示計算不清狗時間;
[0013]判斷所述定時器中斷處理程序中的標(biāo)識的值之后還包括:
[0014]若所述標(biāo)識的值為所述第二數(shù)值,則所述MCU計算不清狗時間;
[0015]判斷所述不清狗時間是否大于或者等于預(yù)設(shè)值;其中,所述不清狗時間為從最近一次清狗的時刻到執(zhí)行計算不清狗時間的時刻,所述預(yù)設(shè)值為第二周期減去所述第一周期和閾值之和,所述第二周期為發(fā)生狗復(fù)位的時間周期;
[0016]若所述不清狗時間大于或者等于所述預(yù)設(shè)值,則設(shè)置所述標(biāo)識的值為所述第一數(shù)值,并確定再一次進入所述定時器中斷處理程序時將要發(fā)生狗復(fù)位;
[0017]若所述不清狗時間小于所述預(yù)設(shè)值,則確定不是將要發(fā)生狗復(fù)位,并將所述不清狗時間進行累計。
[0018]本發(fā)明實施例的第二方面提供了一種微控制器MCU,所述MCU包括:
[0019]運行單元,用于運行程序;
[0020]確定單元,用于根據(jù)運行的所述程序進入中斷處理程序確定將要發(fā)生狗復(fù)位;
[0021]切換單元,用于將雙倍速率同步動態(tài)隨機存儲器DDR切換到自刷新模式,并等待發(fā)生所述狗復(fù)位。
[0022]結(jié)合本發(fā)明實施例的第二方面,在本發(fā)明實施例的第二方面的第一種實施方式中,包括:所述中斷處理程序為定時器中斷處理程序,所述運行單元,還用于根據(jù)第一周期周期性進入定時器中斷處理程序,其中,所述第一周期為定時器中斷的時間周期;
[0023]所述確定單元包括:
[0024]第一判斷子單元,用于判斷所述定時器中斷處理程序中標(biāo)識的值,所述標(biāo)識用于指示是否將要發(fā)生狗復(fù)位,所述標(biāo)識的值包括第一數(shù)值,所述第一數(shù)值用于指示將要發(fā)生狗復(fù)位;
[0025]第一確定子單元,用于在所述標(biāo)識的值為第一數(shù)值時,確定將要發(fā)生狗復(fù)位。
[0026]結(jié)合本發(fā)明實施例的第二方面的第一種實施方式,在本發(fā)明實施例的第二方面的第二種實施方式中,包括:所述標(biāo)識的值還包括第二數(shù)值,所述第二數(shù)值用于指示計算不清狗時間;
[0027]所述確定單元還包括:
[0028]計算子單元,用于在所述標(biāo)識的值為所述第二數(shù)值時,計算不清狗時間;
[0029]第二判斷子單元,用于判斷所述不清狗時間是否大于或者等于預(yù)設(shè)值;其中,所述不清狗時間為從最近一次清狗的時刻到執(zhí)行計算不清狗時間的時刻,所述預(yù)設(shè)值為第二周期減去所述第一周期和閾值之和,所述第二周期為發(fā)生狗復(fù)位的時間周期;
[0030]設(shè)置確定子單元,用于在所述不清狗時間大于或者等于所述預(yù)設(shè)值時,設(shè)置所述標(biāo)識的值為所述第一數(shù)值,并確定再一次進入所述定時器中斷處理程序時將要發(fā)生狗復(fù)位;
[0031]累計確定子單元,用于在所述不清狗時間小于所述預(yù)設(shè)值時,確定不是將要發(fā)生狗復(fù)位,并將所述不清狗時間進行累計。
[0032]本發(fā)明實施例的第三方面提供了一種嵌入式系統(tǒng),所述系統(tǒng)包括:
[0033]微控制器MCU、雙倍速率同步動態(tài)隨機存儲器DDR和看門狗;
[0034]所述MCU分別與所述看門狗和所述DDR相連;
[0035]所述MCU包括:運行單元、確定單元和切換單元;
[0036]所述運行單元,用于運行程序;
[0037]所述確定單元,用于根據(jù)運行的所述程序進入中斷處理程序確定將要發(fā)生狗復(fù)位;
[0038]所述切換單元,用于將雙倍速率同步動態(tài)隨機存儲器DDR切換到自刷新模式,并等待發(fā)生所述狗復(fù)位。
[0039]結(jié)合本發(fā)明實施例的第三方面,在本發(fā)明實施例的第三方面的第一種實施方式中,包括:所述中斷處理程序為定時器中斷處理程序,所述運行單元,還用于根據(jù)第一周期周期性進入定時器中斷處理程序,其中,所述第一周期為定時器中斷的時間周期;
[0040]所述MCU中所述確定單元包括:第一判斷子單元和第一確定子單元;
[0041]所述第一判斷子單元,用于判斷所述定時器中斷處理程序中標(biāo)識的值,所述標(biāo)識用于指示是否將要發(fā)生狗復(fù)位,所述標(biāo)識的值包括第一數(shù)值,所述第一數(shù)值用于指示將要發(fā)生狗復(fù)位;
[0042]所述第一確定子單元,用于在所述標(biāo)識的值為第一數(shù)值時,確定將要發(fā)生狗復(fù)位。
[0043]結(jié)合本發(fā)明實施例的第三方面的第一種實施方式,在本發(fā)明實施例的第三方面的第二種實施方式中,包括:所述標(biāo)識的值還包括第二數(shù)值,所述第二數(shù)值用于指示計算不清狗時間;
[0044]所述MCU中所述確定單元還包括:計算子單元、第二判斷子單元、設(shè)置確定子單元和累計確定子單元;
[0045]所述計算子單元,用于在所述標(biāo)識的值為所述第二數(shù)值時,計算不清狗時間;
[0046]所述第二判斷子單元,用于判斷所述不清狗時間是否大于或者等于預(yù)設(shè)值;其中,所述不清狗時間為從最近一次清狗的時刻到執(zhí)行計算不清狗時間的時刻,所述預(yù)設(shè)值為第二周期減去所述第一周期和閾值之和,所述第二周期為發(fā)生狗復(fù)位的時間周期;
[0047]所述設(shè)置確定子單元,用于在所述不清狗時間大于或者等于所述預(yù)設(shè)值時,設(shè)置所述標(biāo)識的值為所述第一數(shù)值,并確定再一次進入所述定時器中斷處理程序時將要發(fā)生狗復(fù)位;
[0048]所述累計確定子單元,用于在所述不清狗時間小于所述預(yù)設(shè)值時,確定不是將要發(fā)生狗復(fù)位,并將所述不清狗時間進行累計。
[0049]從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
[0050]本發(fā)明提供一種預(yù)測狗復(fù)位發(fā)生的方法、微控制器及嵌入式系統(tǒng),MCU根據(jù)運行的程序進入中斷處理程序確定將要發(fā)生狗復(fù)位,然后將DDR切換到自刷新模式,并等待發(fā)生狗復(fù)位,這樣可以預(yù)測到將要發(fā)生狗復(fù)位,然后在發(fā)生狗復(fù)位之前將DDR切換到自刷新模式,能夠保證在狗復(fù)位期間DDR數(shù)據(jù)不會出現(xiàn)跳變,進而減少程序在運行時因數(shù)據(jù)變化而發(fā)生的異常行為。
【附圖說明】
[0051]圖1為本發(fā)明實施例中預(yù)測狗復(fù)位發(fā)生的方法一個實施例示意圖;
[0052]圖2為本發(fā)明實施例中預(yù)測狗復(fù)位發(fā)生的方法另一實施例示意圖;
[0053]圖3為本發(fā)明實施例中預(yù)測狗復(fù)位發(fā)生的方法另一實施例示意圖;
[0054]圖4為本發(fā)明實施例中MCU —個實施例示意圖;
[0055]圖5為本發(fā)明實施例中MCU另一實施例示意圖;
[0056]圖6為本發(fā)明實施例中嵌入式系統(tǒng)一個實施例示意圖。
【具體實施方式】
[0057]本發(fā)明實施例提供了一種預(yù)測狗復(fù)位發(fā)生的方法、微控制器及嵌入式系統(tǒng),能夠保證狗復(fù)位期間DDR數(shù)據(jù)不會出現(xiàn)跳變,進而減少程序在運行時因數(shù)據(jù)變化而發(fā)生的異常行為。
[0058]為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施