程序執(zhí)行監(jiān)控系統(tǒng)【技術領域】本發(fā)明屬于電子技術領域,特別是涉及嵌入式處理器軟件執(zhí)行可靠性的硬件保護電路,該電路監(jiān)控每一條代碼的執(zhí)行以判斷程序執(zhí)行是否異常。
背景技術:傳統(tǒng)的嵌入式軟件執(zhí)行的保護電路稱為看門狗電路。看門狗電路要求軟件在間隔一個預設好的時間之內對特定寄存器進行訪問(這個特定的操作稱為喂狗操作)。如在規(guī)定時間內軟件沒有發(fā)起喂狗操作,則認定軟件執(zhí)行進入某種異常狀態(tài),此時看門狗電路會提起硬件的警報,該警報可提起中斷或直接復位處理器。傳統(tǒng)看門狗電路的問題是只對喂狗操作敏感,如果軟件異常的類型不會導致喂狗操作異常時,該軟件異常不會被監(jiān)測到。
技術實現(xiàn)要素:本發(fā)明的目的在于提供一種更精確的程序執(zhí)行監(jiān)控系統(tǒng),可對每一條指令的執(zhí)行都敏感,從而實現(xiàn)更大范圍地監(jiān)測出軟件執(zhí)行的異常狀態(tài)。為實現(xiàn)上述目的,本發(fā)明提供一種程序執(zhí)行監(jiān)控系統(tǒng),該程序執(zhí)行監(jiān)控系統(tǒng)包括軟件模擬單元、精確看門狗電路及比較單元,其中軟件模擬單元執(zhí)行編譯完成之后的微代碼獲取軟件執(zhí)行的軌跡,利用此軌跡計算出執(zhí)行周期內出現(xiàn)的指令組合并用預定的運算方法獲得預計的運算碼,并輸出給比較單元,其中該預定的運算方法為累加和,并且該預計的運算碼是以寄存器的形式存在于程序執(zhí)行監(jiān)控系統(tǒng)中,在工作時該寄存器被寫成計算獲得的累加和;處理器核在實際工作時,精確看門狗電路在周期開始時獲取指令總線上的數(shù)值進行依次累加獲得動態(tài)運算碼,在周期結束時將計算獲得的動態(tài)運算碼輸出給比較單元,比較單元將動態(tài)運算碼和預計的運算碼進行對比判斷程序執(zhí)行是否異常。依據(jù)上述主要特征,該程序執(zhí)行監(jiān)控系統(tǒng)應用在一數(shù)字信號處理器核上,設定執(zhí)行的周期為1.28秒。與現(xiàn)有技術相比較,本發(fā)明可以很敏感的監(jiān)控到每一條指令的執(zhí)行狀況,通過比較單元比較動態(tài)運算碼和預計的運算碼而判斷程序執(zhí)行是否異常,從而實現(xiàn)更大范圍地監(jiān)測出軟件執(zhí)行的異常狀態(tài)。【附圖說明】圖1為一種實施本發(fā)明的應用舉例。圖2為圖1所示的實施本發(fā)明的程序執(zhí)行監(jiān)控系統(tǒng)的應用示意圖?!揪唧w實施方式】請參閱圖1所示,實施本發(fā)明的程序執(zhí)行監(jiān)控系統(tǒng)包括軟件模擬單元、精確看門狗電路及比較單元,其中軟件模擬單元執(zhí)行編譯完成之后的代碼獲取軟件執(zhí)行的軌跡,利用此軌跡計算出執(zhí)行周期內出現(xiàn)的指令組合并用預定的運算方法獲得預計的運算碼,并輸出給比較單元。而在代碼動態(tài)執(zhí)行過程中,精確看門狗電路在周期開始時開始記錄指令總線上出現(xiàn)的每一個指令,加入運算輸入,在周期結束時計算獲得動態(tài)運算碼也輸出給比較單元,比較單元將動態(tài)運算碼和預計的運算碼進行對比判斷程序執(zhí)行是否異常。在具體實施時,軟件模擬單元實際為一段軟件代碼,該軟件代碼模擬處理器的工作方式對編譯完成之后的代碼進行讀取,即軟件實現(xiàn)的虛擬處理器核執(zhí)行編譯之后的微代碼。在具體實施時,實施本發(fā)明的程序執(zhí)行監(jiān)控系統(tǒng)應用在一數(shù)字信號處理器核上,設定執(zhí)行的周期為1.28秒,即每隔1.28秒,該程序執(zhí)行監(jiān)控系統(tǒng)將會重新從起始位置(即對比點或周期起始點)開始執(zhí)行,由此設定精確看門狗電路的運算碼對比周期也為1.28秒。實施本發(fā)明的程序執(zhí)行監(jiān)控系統(tǒng)是通過軟件編程使得代碼的執(zhí)行完全不依賴于動態(tài)的數(shù)據(jù)改變,即代碼執(zhí)行順序可預期。在編譯完成后通過軟件模擬單元獲得程序執(zhí)行軌跡,該程序執(zhí)行軌跡即為程序執(zhí)行過程中所有執(zhí)行到的代碼按照執(zhí)行順序先后排列出來的組合,之后利用此軌跡計算出執(zhí)行周期內出現(xiàn)的指令組合并用預定的運算方法獲得預計的運算碼。該預定的運算方法可為通過不同的計算方法來獲得最終的運算碼,本實施例采用累加和方式,即設定該程序執(zhí)行監(jiān)控系統(tǒng)的預定的運算方法為累加和,由此計算出1.28秒周期內所有被執(zhí)行到的代碼的累加和。其他各種不同的算法可獲得不同的可靠性,如異或計算,CRC計算等。但會相應的增加硬件成本。按上述的方法,動態(tài)運算碼是通過處理器核在實際工作時,精確看門狗電路獲取指令總線上的數(shù)值進行依次累加獲得,而預計的運算碼是通過軟件實現(xiàn)的虛擬處理器核(即軟件模擬單元)對編譯之后的微代碼進行執(zhí)行得到,比較單元通過將動態(tài)運算碼與預計的運算碼進行比較而判斷代碼執(zhí)行是否異常。該預計的運算碼是以寄存器的形式存在于程序執(zhí)行監(jiān)控系統(tǒng)中,可動態(tài)配置。在工作時該寄存器被寫成計算獲得的累加和,即預計的運算碼。請參閱圖2所示,為圖1所示的實施本發(fā)明的程序執(zhí)行監(jiān)控系統(tǒng)的應用示意圖。為執(zhí)行函數(shù)A與函數(shù)B,代碼執(zhí)行的順序為AAB、AAB、AAB,所以周期內執(zhí)行的代碼為2次函數(shù)A的代碼與1次函數(shù)B的代碼。在實施時,軟件模擬單元執(zhí)行編譯完成之后的函數(shù)A與函數(shù)B的代碼獲取軟件執(zhí)行的軌跡,利用此軌跡計算出執(zhí)行周期內重復出現(xiàn)的指令組合(即AAB)并用累加和方式獲得預計的運算碼,并輸出給比較單元。而精確看門狗電路獲取周期內指令總線上的數(shù)值進行依次累加獲得動態(tài)運算碼也輸出給比較單元,比較單元通過將動態(tài)運算碼與預計的運算碼進行比較而判斷代碼執(zhí)行是否異常。從圖2可以看出,在每個周期開始之時便為對比點,此時比較單元通過比較動態(tài)運算碼與預計的運算碼判斷代碼執(zhí)行是否異常??梢岳斫獾氖牵瑢Ρ绢I域普通技術人員來說,可以根據(jù)本發(fā)明的技術方案及其發(fā)明構思加以等同替換或改變,而所有這些改變或替換都應屬于本發(fā)明所附的權利要求的保護范圍。