中斷異常監(jiān)控方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及嵌入式軟件領(lǐng)域,尤其涉及一種中斷異常監(jiān)控方法和裝置。
【背景技術(shù)】
[0002]嵌入式軟件中的中斷,是指在嵌入式系統(tǒng)運(yùn)行過程中,系統(tǒng)出現(xiàn)了必須由中央處理器立即處理的情況時,中央處理器(英文全稱:Central Processing Unit,英文簡稱:CPU)會暫時停止當(dāng)前程序的執(zhí)行轉(zhuǎn)而執(zhí)行處理新情況的程序和執(zhí)行過程。中斷是嵌入式系統(tǒng)的基礎(chǔ),系統(tǒng)時鐘、任務(wù)切換等都依賴于中斷,一旦中斷出現(xiàn)問題將會導(dǎo)致整個系統(tǒng)崩潰。
[0003]然而,目前的嵌入式系統(tǒng)中沒有一種有效的手段來監(jiān)控和定位中斷異常的方法,例如中斷過于頻繁或者中斷死轉(zhuǎn),而一旦出現(xiàn)中斷異常問題,會導(dǎo)致系統(tǒng)異常并且定位問題困難。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種中斷異常監(jiān)控方法和裝置,用于解決由于過于頻繁中斷或中斷死轉(zhuǎn)所導(dǎo)致的系統(tǒng)異常和定位問題困難的問題。
[0005]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006]第一方面,提供了一種中斷異常監(jiān)控方法,包括:
[0007]在中斷發(fā)生時,獲取單位時間內(nèi)中斷發(fā)生的頻率;
[0008]根據(jù)所述中斷發(fā)生的頻率判斷是否發(fā)生中斷異常;
[0009]在發(fā)生中斷異常時輸出異常中斷信息。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述中斷發(fā)生的頻率判斷是否發(fā)生中斷異常,包括:
[0011 ]判斷所述單位時間內(nèi)中斷發(fā)生的次數(shù);
[0012]當(dāng)所述單位時間內(nèi)中斷發(fā)生的次數(shù)超過中斷次數(shù)閾值時,確定發(fā)生中斷異常。
[0013]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述獲取單位時間內(nèi)中斷發(fā)生的頻率之前,還包括:
[0014]記錄發(fā)生中斷的中斷類型,以及所述中斷類型的中斷發(fā)生的CPU周期數(shù),以便依據(jù)所述CPU周期數(shù)確定相應(yīng)中斷類型的中斷發(fā)生的頻率。
[0015]結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,在發(fā)生中斷異常時輸出異常中斷信息之前,還包括:
[0016]禁止所述異常中斷,配置所述異常中斷的中斷狀態(tài)。
[0017]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0018]判斷所述異常中斷的所述中斷狀態(tài);
[0019]若所述中斷狀態(tài)為異常禁止?fàn)顟B(tài),則不使能所述異常中斷;
[0020]若所述中斷狀態(tài)非異常禁止?fàn)顟B(tài),則使能所述異常中斷。
[0021 ]第二方面,提供了一種中斷異常監(jiān)控裝置,包括:
[0022]獲取單元,用于在中斷發(fā)生時獲取單位時間內(nèi)中斷發(fā)生的頻率;
[0023]判斷單元,用于根據(jù)所述中斷發(fā)生的頻率判斷是否發(fā)生中斷異常;
[0024]輸出單元,用于在發(fā)生中斷異常時輸出異常中斷信息。
[0025]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述判斷單元具體用于判斷所述單位時間內(nèi)中斷發(fā)生的次數(shù);當(dāng)所述單位時間內(nèi)中斷發(fā)生的次數(shù)超過中斷次數(shù)閾值時,確定發(fā)生中斷異常。
[0026]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述獲取單元,還用于在獲取單位時間內(nèi)中斷發(fā)生的頻率之前,記錄發(fā)生中斷的中斷類型,以及所述中斷類型的中斷發(fā)生的CPU周期數(shù),以便依據(jù)所述CHJ周期數(shù)確定相應(yīng)中斷類型的中斷發(fā)生的頻率。
[0027]結(jié)合第二方面,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0028]中斷使能單元,用于在所述輸出單元輸出異常中斷信息之前,禁止所述異常中斷,配置所述異常中斷的中斷狀態(tài)。
[0029]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述中斷使能單元還用于判斷所述異常中斷的所述中斷狀態(tài);若所述中斷狀態(tài)為異常禁止,則不使能所述異常中斷;若所述中斷狀態(tài)非異常禁止,則使能所述異常中斷。
[0030]本發(fā)明的實(shí)施例提供的中斷異常監(jiān)控方法和裝置,通過單位時間內(nèi)中斷發(fā)生的頻率來判斷是否發(fā)生中斷異常,并且輸出異常中斷信息的方式,解決了現(xiàn)有技術(shù)中由于過于頻繁中斷或中斷死轉(zhuǎn)所導(dǎo)致的系統(tǒng)異常和定位問題困難的問題。
【附圖說明】
[0031]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1為本發(fā)明的實(shí)施例提供的一種中斷系統(tǒng)的結(jié)構(gòu)示意圖;
[0033]圖2為本發(fā)明的實(shí)施例提供的一種中斷異常監(jiān)控方法的流程示意圖;
[0034]圖3為本發(fā)明的實(shí)施例提供的另一種中斷異常監(jiān)控方法的流程示意圖;
[0035]圖4為本發(fā)明的實(shí)施例提供的一種中斷使能判斷的流程示意圖;
[0036]圖5為本發(fā)明的實(shí)施例提供的一種中斷異常監(jiān)控裝置的結(jié)構(gòu)示意圖;
[0037]圖6為本發(fā)明的實(shí)施例提供的另一種中斷異常監(jiān)控裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0038]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]參照圖1所示為本發(fā)明的實(shí)施例所應(yīng)用的中斷系統(tǒng)的示意圖。示例性的:CPU可響應(yīng)的中斷類型包括:軟中斷、故障強(qiáng)迫中斷、定時器中斷、數(shù)據(jù)通道中斷、外設(shè)請求中斷等。但是這些中斷類型均可能出現(xiàn)頻繁中斷或中斷死轉(zhuǎn)等中斷異常。
[0040]為解決上述問題,本發(fā)明的實(shí)施例提供了一種中斷異常監(jiān)控方法,應(yīng)用于圖1中所示的中斷系統(tǒng),參照圖2所示,包括:
[0041]201、在中斷發(fā)生時,獲取單位時間內(nèi)中斷發(fā)生的頻率。
[0042]202、根據(jù)所述中斷發(fā)生的頻率判斷是否發(fā)生中斷異常。
[0043]203、在發(fā)生中斷異常時輸出異常中斷信息。
[0044]本發(fā)明的實(shí)施例提供的中斷異常監(jiān)控方法,通過單位時間內(nèi)中斷發(fā)生的頻率來判斷是否發(fā)生中斷異常,并且輸出異常中斷信息的方式,解決了現(xiàn)有技術(shù)中由于過于頻繁中斷或中斷死轉(zhuǎn)所導(dǎo)致的系統(tǒng)異常和定位問題困難的問題。
[0045]本發(fā)明的實(shí)施例提供了另一種中斷異常監(jiān)控方法,應(yīng)用于圖1中所示的中斷系統(tǒng),參照圖3所示,包括:
[0046]301、預(yù)設(shè)中斷的單位時間中斷次數(shù)閾值。
[0047]在中斷發(fā)生前首先預(yù)先設(shè)置中斷的單位時間中斷次數(shù)閾值,作為用于判斷是否發(fā)生中斷異常的門限,在本實(shí)施例中示例性地,將單位時間中斷次數(shù)閾值設(shè)置為103次/秒。
[0048]302、在中斷發(fā)生后,記錄發(fā)生中斷的中斷類型,以及該中斷類型的中斷發(fā)生的CPU周期數(shù),以便依據(jù)該CPU周期數(shù)確定相應(yīng)中斷類型的中斷發(fā)生的頻率,即單位時間中斷次數(shù)。
[0049]可選的,中斷發(fā)生的CPU周期數(shù)可以配置,在本實(shí)施例中示例性地,可以配置只記錄發(fā)生100次中斷時所經(jīng)過的CPU周期數(shù)。
[0050]303、根據(jù)該中斷類型的中斷發(fā)生的CPU周期數(shù)計(jì)算該中斷類型的單位時間中斷次數(shù)。
[0051]在本實(shí)施例中示例性地,上述100次中斷所經(jīng)過的CPU周期數(shù)為10000,其中,每CPU周期為1 X 10—6秒,則該中斷類型的單位時間中斷次數(shù)為1 / (1 X 10—6 X 10000/100) = 104次/秒。
[0052]304、判斷單位時間中斷次數(shù)是否超過中斷次數(shù)閾值。
[0053]當(dāng)該中斷類型在單位時間內(nèi)中斷發(fā)生的次數(shù)超過中斷次數(shù)閾值時,確定發(fā)生中斷異常;此時,該中斷類型的中斷為異常中斷,執(zhí)行步驟306;
[0054]否則,執(zhí)行執(zhí)行步驟305然后跳轉(zhuǎn)至步驟302重新執(zhí)行。
[0055]在本實(shí)施例中示例性地,單位時間中斷次數(shù)104>中斷次數(shù)閾值103,因此執(zhí)行步驟306。
[0056]305、執(zhí)行正常中斷處理。
[0057]306、禁止該中斷類型的異常中斷。
[0058]其中,在步驟306中,在禁止該中斷類型的異常中斷之后,參照圖4所示,還包括:
[0059]S1、禁止該中斷類型的異常中斷。