專利名稱:一種降低嵌入式軟件死機(jī)概率的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式軟件,具體的說是涉及一種降低嵌入式軟件死機(jī)概率的方法。
背景技術(shù):
嵌入式產(chǎn)品在上電運(yùn)行過程中,其軟件是靠若干個(gè)中斷和進(jìn)程以及公共變量來運(yùn) 行的;如果能夠?qū)崟r(shí)檢測(cè)出哪個(gè)中斷和進(jìn)程出了問題,從而在開發(fā)和測(cè)試階段就完成對(duì)問 題軟件的修改,盡量降低軟件死機(jī)概率,即使是產(chǎn)品已經(jīng)交到用戶手里,也能對(duì)出現(xiàn)問題的 中斷和進(jìn)程以及公共變量通過修復(fù)程序進(jìn)行自我修復(fù),從而避免無故死機(jī)。在傳統(tǒng)技術(shù)中,為了降低嵌入式軟件死機(jī)概率,都是采取隨意創(chuàng)建一個(gè)線程或者 進(jìn)程監(jiān)視其他線程或者進(jìn)程的運(yùn)行,該方式的確可以有效降低嵌入式軟件死機(jī)概率,然而, 用于監(jiān)視其他線程或進(jìn)程而隨意創(chuàng)建的一個(gè)線程或進(jìn)程和其他線程或進(jìn)程的死機(jī)概率是 一樣的,換句話說,如果用于監(jiān)視其他線程或進(jìn)程而創(chuàng)建的線程或進(jìn)程死機(jī)的話,那么對(duì)其 他線程或進(jìn)程也起不到監(jiān)視作用,因此,傳統(tǒng)技術(shù)無法將嵌入式軟件死機(jī)概率降到最低。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提出一種降低嵌入式軟件死機(jī)概率的方法,在死 機(jī)概率最小的時(shí)鐘程序里對(duì)嵌入式軟件的運(yùn)行進(jìn)行監(jiān)控,從而將嵌入式軟件的死機(jī)概率降 到最低。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案是一種降低嵌入式軟件死機(jī)概率的 方法,包括以下步驟a.對(duì)各個(gè)中斷的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn) 行監(jiān)視,判斷各中斷是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì) 非正常進(jìn)出的中斷進(jìn)行恢復(fù)操作;b.對(duì)各個(gè)進(jìn)程的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn) 行監(jiān)視,判斷各進(jìn)程是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì) 非正常進(jìn)出的進(jìn)程進(jìn)行恢復(fù)操作;c.對(duì)各個(gè)公共變量的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志 位進(jìn)行監(jiān)視,判斷各公共變量是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果 不是,則對(duì)非正常進(jìn)出的公共變量進(jìn)行恢復(fù)操作。進(jìn)一步,還包括如果操作系統(tǒng)源代碼開放,則對(duì)內(nèi)存分配的各個(gè)函數(shù)以及內(nèi)存分 配函數(shù)設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān)視,判斷內(nèi)存分配的各個(gè) 函數(shù)及內(nèi)存分配函數(shù)是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則 對(duì)非正常進(jìn)出的內(nèi)存分配函數(shù)和內(nèi)存分配的各函數(shù)進(jìn)行恢復(fù)操作。本發(fā)明的有益效果是在死機(jī)概率最小的時(shí)鐘程序里對(duì)各中斷、進(jìn)程及公共變量 進(jìn)行監(jiān)視,將嵌入式軟件的死機(jī)概率降到最低。
圖1為本發(fā)明的方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。傳統(tǒng)技術(shù)中采取隨意創(chuàng)建一個(gè)線程或進(jìn)程去監(jiān)視其它線程或進(jìn)程的方式,由于隨 意創(chuàng)建的線程或進(jìn)程與被監(jiān)視的線程或進(jìn)程的死機(jī)概率是一樣的,因而并不能把嵌入式軟 件的死機(jī)概率降到最低;針對(duì)上述缺陷,本發(fā)明提出一種降低嵌入式軟件死機(jī)概率的方法, 在死機(jī)概率最小的時(shí)鐘程序里對(duì)嵌入式軟件的運(yùn)行進(jìn)行監(jiān)控,從而將嵌入式軟件的死機(jī)概 率降到最低。首先要從理論上確認(rèn)時(shí)鐘是死機(jī)的唯一標(biāo)志,由于系統(tǒng)CPU是按照時(shí)間片的方法 給各個(gè)進(jìn)(線)程、中斷分配任務(wù)的。如果時(shí)鐘出錯(cuò),必然造成CPU的混亂,整個(gè)系統(tǒng)也就 崩潰了。雖然一般的進(jìn)(線)程、中斷停止運(yùn)行了,但CPU是照常工作的,只不過有時(shí)候表 現(xiàn)為系統(tǒng)操作不反應(yīng);因此時(shí)鐘的死機(jī)概率比普通的進(jìn)程、中斷的死機(jī)概率小的多,在時(shí)鐘 代碼段中實(shí)現(xiàn)對(duì)各個(gè)任務(wù)的監(jiān)控程序是能大幅度降低嵌入式軟件死機(jī)概率的,而非創(chuàng)建普 通的線程或者進(jìn)程去監(jiān)視其他的線程或者進(jìn)程。如圖1所示,本發(fā)明中的降低嵌入式軟件死機(jī)概率的方法,采用以下措施實(shí)現(xiàn)1.對(duì)各個(gè)中斷的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn) 行監(jiān)視,判斷各中斷是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì) 非正常進(jìn)出的中斷進(jìn)行恢復(fù)操作;由于中斷是一次性執(zhí)行完畢的,因此從理論上來講,針對(duì) 中斷的標(biāo)志位是不需要設(shè)置信號(hào)鎖定的,但是為了保險(xiǎn)起見還是要設(shè)置信號(hào)鎖定操作的;2.對(duì)各個(gè)進(jìn)程的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn) 行監(jiān)視,判斷各進(jìn)程是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì) 非正常進(jìn)出的進(jìn)程進(jìn)行恢復(fù)操作;如果某個(gè)進(jìn)程的執(zhí)行統(tǒng)計(jì)代碼正常進(jìn)出是100句,而時(shí) 鐘監(jiān)視的只有80句,并且一段時(shí)間內(nèi)持續(xù)不變(需要統(tǒng)計(jì)CPU執(zhí)行完所有進(jìn)程的時(shí)間),則 可以認(rèn)為這個(gè)進(jìn)程是出問題了,當(dāng)然還要判斷這個(gè)進(jìn)程是不是主動(dòng)被掛起等狀態(tài);3.對(duì)各個(gè)公共變量的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志 位進(jìn)行監(jiān)視,判斷各公共變量是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果 不是,則對(duì)非正常進(jìn)出的公共變量進(jìn)行恢復(fù)操作;4.如果操作系統(tǒng)源代碼開放,則需要對(duì)內(nèi)存分配的各個(gè)函數(shù),尤其是對(duì)內(nèi)存分配 函數(shù)(諸如malloc和calloc以及free等)實(shí)現(xiàn)監(jiān)控;監(jiān)控方式同樣是對(duì)內(nèi)存分配的各個(gè) 函數(shù)以及內(nèi)存分配函數(shù)設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān)視,判斷 內(nèi)存分配的各個(gè)函數(shù)及內(nèi)存分配函數(shù)是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān) 視,如果不是,則對(duì)非正常進(jìn)出的內(nèi)存分配函數(shù)和內(nèi)存分配的各函數(shù)進(jìn)行恢復(fù)操作。除上述手段以外,我們也可以對(duì)各個(gè)被監(jiān)視的進(jìn)(線)程或者中斷代碼優(yōu)化,分析 具體的產(chǎn)品代碼,做出最優(yōu)化的設(shè)計(jì),從而降低死機(jī)概率。例如一種對(duì)視頻程序的監(jiān)視過 程中,除了正常的入口和出口設(shè)置監(jiān)視外,對(duì)于解碼出錯(cuò)我們?cè)O(shè)計(jì)了優(yōu)化程序采取了 5分 鐘內(nèi)出錯(cuò)10次視為解碼器寄存器出問題,需要對(duì)解碼器進(jìn)行復(fù)位。綜上,在被監(jiān)視的對(duì)象出現(xiàn)問題時(shí),可以在開發(fā)和測(cè)試階段盡量對(duì)出問題的對(duì)象進(jìn)行修改設(shè)計(jì),使其盡量完善,也可以設(shè)計(jì)修復(fù)程序,以便普通用戶也能對(duì)出問題的對(duì)象進(jìn) 行自我修復(fù)。
權(quán)利要求
1.一種降低嵌入式軟件死機(jī)概率的方法,其特征在于包括以下步驟a.對(duì)各個(gè)中斷的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān) 視,判斷各中斷是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì)非正 常進(jìn)出的中斷進(jìn)行恢復(fù)操作;b.對(duì)各個(gè)進(jìn)程的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān) 視,判斷各進(jìn)程是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì)非正 常進(jìn)出的進(jìn)程進(jìn)行恢復(fù)操作;c.對(duì)各個(gè)公共變量的入口和出口設(shè)立標(biāo)志位,在時(shí)鐘里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn) 行監(jiān)視,判斷各公共變量是否正常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是, 則對(duì)非正常進(jìn)出的公共變量進(jìn)行恢復(fù)操作。
2.如權(quán)利要求1所述的一種降低嵌入式軟件死機(jī)概率的方法,其特征在于還包括如 果操作系統(tǒng)源代碼開放,則對(duì)內(nèi)存分配的各個(gè)函數(shù)以及內(nèi)存分配函數(shù)設(shè)立標(biāo)志位,在時(shí)鐘 里設(shè)立監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān)視,判斷內(nèi)存分配的各個(gè)函數(shù)及內(nèi)存分配函數(shù)是否正 常進(jìn)出,如果是,則繼續(xù)對(duì)這些標(biāo)志位進(jìn)行監(jiān)視,如果不是,則對(duì)非正常進(jìn)出的內(nèi)存分配函 數(shù)和內(nèi)存分配的各函數(shù)進(jìn)行恢復(fù)操作。
全文摘要
本發(fā)明涉及嵌入式軟件,其公開了一種降低嵌入式軟件死機(jī)概率的方法,在死機(jī)概率最小的時(shí)鐘程序里對(duì)嵌入式軟件的運(yùn)行進(jìn)行監(jiān)控,從而將嵌入式軟件的死機(jī)概率降到最低。其技術(shù)方案的要點(diǎn)可概括為在各中斷、進(jìn)程、公共變量的進(jìn)出口設(shè)置標(biāo)志位,在時(shí)鐘里設(shè)置監(jiān)視程序?qū)@些標(biāo)志位進(jìn)行監(jiān)視,一旦有非正常進(jìn)出的中斷、進(jìn)程、公共變量,則對(duì)其進(jìn)行恢復(fù)操作。本發(fā)明的有益效果是在死機(jī)概率最小的時(shí)鐘程序里對(duì)各中斷、進(jìn)程及公共變量進(jìn)行監(jiān)視,將嵌入式軟件的死機(jī)概率降到最低,適用于嵌入式軟件。
文檔編號(hào)G06F11/00GK102063361SQ20101060976
公開日2011年5月18日 申請(qǐng)日期2010年12月28日 優(yōu)先權(quán)日2010年12月28日
發(fā)明者程智俊 申請(qǐng)人:四川長(zhǎng)虹電器股份有限公司