[發明專利]一種控制流錯誤檢測方法在審
| 申請號: | 201410756465.X | 申請日: | 2014-12-10 |
| 公開(公告)號: | CN104461886A | 公開(公告)日: | 2015-03-25 |
| 發明(設計)人: | 寇義民;李春;劉寬俊;潘樂;尚華;于小龍;商明森 | 申請(專利權)人: | 深圳航天東方紅海特衛星有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F11/10 |
| 代理公司: | 深圳市科吉華烽知識產權事務所(普通合伙) 44248 | 代理人: | 張立娟 |
| 地址: | 518057 廣東省深圳市南山區科*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 控制 錯誤 檢測 方法 | ||
技術領域
本發明涉及檢測方法,尤其涉及一種航天軟件控制流異常檢測方法。
背景技術
航天軟件經常需要面對因單粒子等空間環境導致軟件代碼控制流執行錯亂的問題。宇航專用的CPU和內存普遍在硬件層面提供了針對單粒子事件的糾檢錯手段,但隨著民用貨架產品和器件在航天領域越來越廣泛地獲得應用,依靠純軟件手段來應對空間環境造成的軟件異常越發必要。
傳統上應對代碼控制流異常的辦法主要有硬件看門狗和EDAC(Error?Detection?And?Correction,錯誤檢測與糾正)技術等。
硬件看門狗是由計算機硬件提供的一種系統異常處理機制,通常包括一個看門狗計數器,該計數器在初始化之后其計數值會隨著時間不斷累加,一旦到達系統設定的最大值會導致計算機硬件復位(稱為“狗咬”),應用軟件代碼會周期性的對該計數器清零(稱為“喂狗”操作),來防止狗咬發生。一旦因某些軟硬件異常導致軟件無法按時喂狗,計算機將會復位重啟,從而來令整個系統恢復正常。
EDAC錯誤檢測與糾正技術是由航天專用星載計算機硬件提供的有效抵御單粒子的手段。計算機硬件會自動為存儲器中的數據生成校驗碼,當這些數據內容被改寫時其對應的校驗碼也會被計算機硬件自動改寫。當應用軟件從存儲器中讀取數據時,計算機硬件會自動地將讀取出來的數據與其校驗碼進行匹配,一旦檢測到少量比特錯誤(如1bit或2bit錯誤)則會自動對數據進行更正,若檢測到無法更正的多比特錯誤,則會令星載計算機復位。該方法可對存儲軟件代碼的存儲器進行保護,從而有效防止軟件代碼異常變化造成的軟件控制流異常。
此外,近年來也有學者提出了一些僅依靠純軟件方法來進行控制流異常檢測的方法,但普遍較為復雜,且需要對編譯器進行改造,在編譯期間在特定代碼段自動插入某些機器指令,其實現難度較大,一般企業很難具備改寫編譯器這樣的能力。
看門狗的本質作用是預防計算機死鎖或任務執行超時,能夠在指定時間內執行“喂狗”操作并不一定意味著軟件控制流未出現問題。EDAC內存校驗效果雖好,但需要硬件支持,民用芯片通常無此功能。為降低微小衛星研制成本和研制門檻,目前民用貨架器件已經被大量應用于衛星之上,在不具備硬件EDAC功能的條件下提高軟件任務的可靠性無疑具有重要意義。
發明內容
為了解決現有技術中問題,本發明提供了一種控制流錯誤檢測方法,步驟如下:
步驟1:列出所有軟件模塊之間的扇入、扇出關系,生成調用關系圖,其中F1為最頂層模塊,它代表軟件的程序入口,被上一級軟件模塊調用稱為扇入模塊,調用下一級軟件模塊稱為扇出模塊;
步驟2:對每個軟件模塊編制相應數字簽名,用S來表示,同一軟件內各模塊的數字簽名不可重復;
步驟3:對每個模塊自底向上遍歷所有扇入模塊,獲得由最頂層模塊到該模塊的所有可能的調用路徑,從而形成該模塊的調用路徑集合;
步驟4:利用最頂層模塊到本模塊調用路徑上各模塊的數字簽名,采用統一規則函數H生成各模塊校驗碼集合并進行預存儲,校驗碼集合中的每個校驗碼與之前形成的校驗路徑集合中的各路徑一一對應;規則函數H滿足如下性質:
性質1H(H(Si,Sj),Sk)=H(Si,Sj,Sk);
步驟5:編寫代碼時,需將本模塊當前校驗碼傳入下一級調用模塊,并在每個模塊頭部進行校驗碼計算和比對,如果當前校驗碼計算值不在預先存儲的本模塊校驗碼集合之內,則調用異常處理;一旦發生校驗碼計算值不在本模塊校驗碼集合之內的情況時,則發現軟件控制流異常,此時可執行異常處理程序。
作為本發明的進一步改進,步驟1采用軟件靜態分析工具對軟件源文件掃描分析生成調用關系圖。
作為本發明的進一步改進,步驟2中,數字簽名采用無符號數表示。
作為本發明的進一步改進,步驟4中,F1因沒有扇入,其校驗碼集合為{C1},且有C1=S1,即數字簽名與校驗碼等值。
作為本發明的進一步改進,規則函數H使用累加和、異或和、奇偶校驗或CRC校驗碼規則,只需滿足性質1即可。CRC(Cyclic?Redundancy?Check)為循環冗余校驗碼,是數據通信領域中最常用的一種差錯校驗碼
本發明的有益效果是:
本發明的軟件控制流異常檢測方法,可以有效檢測和處理航天軟件因軟件代碼區單粒子翻轉、指令計數器異常等造成的控制流異常問題。本發明實現方法簡單易行,幾乎不需要任何額外的軟硬件支持。可有效檢測軟件模塊一級的控制流異常。
附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳航天東方紅海特衛星有限公司,未經深圳航天東方紅海特衛星有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410756465.X/2.html,轉載請聲明來源鉆瓜專利網。





