欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種校驗內(nèi)存中應(yīng)用程序的方法和裝置的制作方法

文檔序號:6375889閱讀:211來源:國知局
專利名稱:一種校驗內(nèi)存中應(yīng)用程序的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于軟件領(lǐng)域,尤其涉及一種校驗內(nèi)存中應(yīng)用程序的方法和裝置。
背景技術(shù)
嵌入式處理器是嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。嵌入式軟件是嵌入式處理器中的操作系統(tǒng)和開發(fā)工具軟件,由應(yīng)用程序和文檔組成。應(yīng)用程序保存在FLASH或ROM等存儲器中,當(dāng)應(yīng)用程序在內(nèi)存中運(yùn)行時,應(yīng)用程序緩存在RAM等內(nèi)存中。當(dāng)應(yīng)用程序首次運(yùn)行時,應(yīng)用程序從FLASH中讀取出,并緩存在RAM中,后續(xù)運(yùn)行該應(yīng)用程序的過程中都是直接從RAM中讀取,直至處理器斷電RAM中緩存的應(yīng) 用程序消失。當(dāng)應(yīng)用程序在內(nèi)存中運(yùn)行時,由于硬件某些偶然性錯誤、用戶的一些非法操作等因素,會導(dǎo)致存儲在RAM中一些不允許更改的數(shù)據(jù)如應(yīng)用程序代碼被改變。所以當(dāng)RAM中的應(yīng)用程序出現(xiàn)錯誤的時候,會對應(yīng)用程序的運(yùn)行產(chǎn)生影響,使得應(yīng)用程序完整性或正確性受到損壞。而在很多應(yīng)用場合中,在嵌入式處理器中只采用一些簡單的操作系統(tǒng),如ucosll等,這些操作系統(tǒng)主要用于完成任務(wù)調(diào)度功能,在這些簡單的操作系統(tǒng)中沒有嚴(yán)格安全防護(hù)機(jī)制,所以無法保證RAM中的應(yīng)用程序代碼的完整性或正確性,進(jìn)而對嵌入式系統(tǒng)的整體可靠性造成影響。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種校驗內(nèi)存中應(yīng)用程序的方法,對嵌入式系統(tǒng)緩存在內(nèi)存中的應(yīng)用程序進(jìn)行檢驗并校正,提高應(yīng)用程序運(yùn)行的正確性和完整性。為保證本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法在實際中的實施,本發(fā)明還提供了一種校驗內(nèi)存中應(yīng)用程序的裝置。一種校驗內(nèi)存中應(yīng)用程序的方法,所述方法應(yīng)用于嵌入式系統(tǒng)中,包括當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。上述的方法,優(yōu)選的,還包括當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。上述的方法,優(yōu)選的,所述存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序中預(yù)設(shè)有管理信息,所述管理信息包括所述初始應(yīng)用程序在存儲器中的起始地址、所述初始應(yīng)用程序的大小、和所述初始應(yīng)用程序的校驗和。上述的方法,優(yōu)選的,所述當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對包括依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序;依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段;依次對所述原代碼段和所述比較代碼段進(jìn)行 比較。上述的方法,優(yōu)選的,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對之前還包括當(dāng)所述嵌入式系統(tǒng)中沒有應(yīng)用程序正在運(yùn)行時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取所述存儲器中存儲的初始應(yīng)用程序;計算獲取的存儲器中所述初始應(yīng)用程序的校驗和;判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,獲取存儲器中存儲的初始應(yīng)用程序,并且和在內(nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行比較;如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。上述的方法,優(yōu)選的,還包括當(dāng)所述嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序;計算獲取的存儲器中所述初始應(yīng)用程序的校驗和;判斷存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,啟動運(yùn)行任務(wù);如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。一種校驗內(nèi)存中應(yīng)用程序的裝置,所述裝置應(yīng)用于嵌入式系統(tǒng)中,包括第一判斷器,用于判斷所述嵌入式軟件是否空閑;比較器,用于當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;第二判斷器,用于當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。上述的裝置,優(yōu)選的,還包括刷新器,用于當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。上述的裝置,優(yōu)選的,所述比較器包括獲取模塊,用于依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序;劃分模塊,用于依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段;比較模塊,用于依次對所述原代碼段和所述比較代碼段進(jìn)行比較。上述的裝置,優(yōu)選的,還包括
校驗器,用于當(dāng)所述嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時和/或當(dāng)判定所述嵌入式系統(tǒng)中沒有應(yīng)用程序正在運(yùn)行時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序,計算獲取的存儲器中所述初始應(yīng)用程序的校驗和,并判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同;發(fā)送器,用于當(dāng)檢驗器判定存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和不同時,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號。本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法,所述方法應(yīng)用于嵌入式系統(tǒng)中,包括當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。采用本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法,能夠在軟件系統(tǒng)中沒有應(yīng)用程序正在運(yùn)行的時候,對內(nèi)存中存儲的應(yīng)用程序進(jìn)行檢驗,保證了內(nèi)存中存儲的應(yīng)用程序與存儲器 中的應(yīng)用程序一致,系統(tǒng)運(yùn)行該應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序的運(yùn)行目的,提高應(yīng)用程序運(yùn)行的正確性和完整性。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例I的流程圖;圖2是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例I的一具體流程圖;圖3是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例I的另一種流程圖;圖4是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例2的流程圖;圖5是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例3的流程圖;圖6是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例I的結(jié)構(gòu)示意圖;圖7是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例I的一具體結(jié)構(gòu)示意圖;圖8是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例I的另一種結(jié)構(gòu)示意圖;圖9是本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例2的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。在嵌入式系統(tǒng)中采用“引導(dǎo)程序”+ “應(yīng)用程序”的方式,引導(dǎo)程序完成系統(tǒng)的啟動與初始化,系統(tǒng)的具體工作由應(yīng)用程序完成。引導(dǎo)程序負(fù)責(zé)啟動應(yīng)用程序,并且負(fù)責(zé)檢查應(yīng)用程序的完整性,即本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法是引導(dǎo)程序的工作。參見圖I示出了 本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例I的流程圖,包括步驟SlOl :當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;為了不影響嵌入式軟件的運(yùn)行,不阻礙應(yīng)用程序的正常運(yùn)行,本發(fā)明提供的校驗內(nèi)存中應(yīng)用程序的方法是在嵌入式系統(tǒng)中應(yīng)用程序沒有運(yùn)行時,即利用系統(tǒng)中的空閑時間段進(jìn)行的。因此需要首先判斷嵌入式系統(tǒng)中是不是有應(yīng)用程序任務(wù)正在運(yùn)行,如果有,繼續(xù)進(jìn)行應(yīng)用程序任務(wù)的運(yùn)行,如果沒有,進(jìn)行后續(xù)的校驗步驟。所述存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序中預(yù)設(shè)有管理信息,所述管理信息包括所述初始應(yīng)用程序在存儲器中的起始地址、所述初始應(yīng)用程序的大小、所述初始應(yīng)用程序的校驗和。在將該應(yīng)用程序?qū)懭氪鎯ζ髦袝r,將該應(yīng)用程序在存儲器中的起始地址、大小及其校驗和存儲到管理信息中,即管理信息中有存儲到存儲器中的所述初始應(yīng)用程序最初的屬性信息。參見圖2示出的一具體流程圖,步驟SlOl包括步驟SlOll :依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序;在管理信息中預(yù)設(shè)存儲有所述初始應(yīng)用程序的起始地址,該起始地址表示了應(yīng)用程序在存儲器中的起始位置,通過該預(yù)設(shè)的起始地址,就能在存儲器中準(zhǔn)確定位該應(yīng)用程序的起始位置。管理信息中還預(yù)設(shè)有該初始應(yīng)用程序的大小,在存儲器中定位了該初始應(yīng)用程序的起始位置后,只要再依據(jù)該應(yīng)用程序的大小就能準(zhǔn)確在存儲器得到該初始應(yīng)用程序。步驟S1012 :依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段;依據(jù)預(yù)設(shè)的比較長度,將存儲器中的初始應(yīng)用程序代碼劃分為多個原代碼段。當(dāng)初始應(yīng)用程序較短時,可直接進(jìn)行比較,將所述存儲器中的初始應(yīng)用程序代碼視為一個原代碼段;當(dāng)應(yīng)用程序較長時,需要將存儲器中的初始應(yīng)用程序代碼劃分為多個原代碼段。同理,依據(jù)預(yù)設(shè)的比較長度,也將內(nèi)存中的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段。步驟S1013 :依次對所述原代碼段和所述比較代碼段進(jìn)行比較。分別獲取存儲器中的第一個原代碼段和內(nèi)存中對應(yīng)的比較代碼段,并進(jìn)行比較,當(dāng)二者完全相同時,依次分別獲取下一個原代碼段和比較代碼段進(jìn)行比較,當(dāng)二者完全相同時,繼續(xù)獲取下一個原代碼段和比較代碼段進(jìn)行比較,以此類推,直至所有的原代碼段和比較代碼段比較完成。
步驟S102 :當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。理論上,內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼應(yīng)該與存儲器中的初始應(yīng)用程序代碼完全相同,這樣,系統(tǒng)中每次運(yùn)行的該應(yīng)用程序是內(nèi)存中的目標(biāo)應(yīng)用程序,而當(dāng)內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼和存儲器中的初始應(yīng)用程序代碼不相同時,系統(tǒng)在運(yùn)行該應(yīng)用程序時,可能會導(dǎo)致各種問題,不能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。當(dāng)比較過程中出現(xiàn)任一原代碼段和與之相對應(yīng)的比較代碼段不同的時候,說明與存儲器中存儲的應(yīng)用程序相比,比較代碼段代表的內(nèi)存中存儲的應(yīng)用程序代碼被更改過,出現(xiàn)了錯誤。
由于嵌入式系統(tǒng)中可能存在多個應(yīng)用程序,需要對每個存儲在內(nèi)存中目標(biāo)應(yīng)用程序分別進(jìn)行校驗,所以可對各個目標(biāo)應(yīng)用程序進(jìn)行排序,使用頻率較高的排在前面,優(yōu)先進(jìn)行校驗,比如當(dāng)系統(tǒng)中存在應(yīng)用程序I、應(yīng)用程序2和應(yīng)用程序3,使用頻率由高到低為應(yīng)用程序3、應(yīng)用程序I和應(yīng)用程序2,當(dāng)系統(tǒng)中出現(xiàn)空閑時間段時,首先對應(yīng)用程序3對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序3進(jìn)行校驗,然后是校驗應(yīng)用程序I對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序1,最后校驗應(yīng)用程序2對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序2 ;也可優(yōu)先對即將運(yùn)行的應(yīng)用程序排在前面,優(yōu)先進(jìn)行校驗,比如當(dāng)系統(tǒng)中存在應(yīng)用程序4、應(yīng)用程序5和應(yīng)用程序6,當(dāng)系統(tǒng)運(yùn)行完應(yīng)用程序4之后,一段空閑時間段后再運(yùn)行應(yīng)用程序5,在這段空閑時間段中可對應(yīng)用程序進(jìn)行校驗,此時即將運(yùn)行的應(yīng)用程序為應(yīng)用程序5,首先對應(yīng)用程序5對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序5進(jìn)行校驗,時間充裕的話,繼續(xù)對應(yīng)用程序6對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序6進(jìn)行校驗,以此類推;對多個應(yīng)用程序校驗的先后順序的設(shè)置條件可視具體情況設(shè)定。參見圖3示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例I的另一種流程圖,本流程圖是在圖I的步驟S102之后還包括步驟S103 :當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。當(dāng)內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼和存儲器中的初始應(yīng)用程序代碼不相同時,SP內(nèi)存中存儲的目標(biāo)應(yīng)用程序錯誤時,系統(tǒng)在運(yùn)行該目標(biāo)應(yīng)用程序時,可能會導(dǎo)致各種問題,不能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。因此,需要依據(jù)所述存儲器中存儲的初始應(yīng)用程序代碼將內(nèi)存中的目標(biāo)應(yīng)用程序代碼刷新,使內(nèi)存中的目標(biāo)應(yīng)用程序代碼再次與存儲器中存儲的初始應(yīng)用程序代碼相同,系統(tǒng)運(yùn)行該目標(biāo)應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。由上述可知,本發(fā)明實施例I提供的一種校驗內(nèi)存中應(yīng)用程序的方法,包括當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤;當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。采用本實施例的方法,能夠在軟件系統(tǒng)空閑的時候,對內(nèi)存中存儲的應(yīng)用程序進(jìn)行檢驗刷新,保證了內(nèi)存中存儲的應(yīng)用程序與存儲器中的應(yīng)用程序一致,系統(tǒng)運(yùn)行該應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序時的運(yùn)行目的,提高應(yīng)用程序運(yùn)行的正確性和完整性。參見圖4示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例2的流程圖,本流程圖是在圖I的步驟SlOl和步驟S102之間還包括步驟S104 :當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取所述存儲器中存儲的初始應(yīng)用程序;當(dāng)軟件系統(tǒng)中沒有應(yīng)用程序任務(wù)正在運(yùn)行,即軟件系統(tǒng)在運(yùn)行過程中空閑時,此時開始對內(nèi)存中的目標(biāo)應(yīng)用程序進(jìn)行校驗,為保證存儲器中存儲的初始應(yīng)用程序與設(shè)定的
應(yīng)用程序一致,進(jìn)而保證內(nèi)存中的目標(biāo)應(yīng)用程序校驗的準(zhǔn)確性,需要先對存儲器中的初始應(yīng)用程序進(jìn)行檢驗。在管理信息中預(yù)設(shè)存儲有初始應(yīng)用程序的起始地址,該起始地址表示了初始應(yīng)用程序在存儲器中的起始位置,通過該預(yù)設(shè)的起始地址,就能在存儲器中準(zhǔn)確定位該初始應(yīng)用程序的起始位置。管理信息中還預(yù)設(shè)有該初始應(yīng)用程序的大小,在存儲器中定位了該初始應(yīng)用程序的起始位置后,再依據(jù)該初始應(yīng)用程序的大小就能在存儲器得到該初始應(yīng)用程序。步驟S105 :計算獲取的存儲器中所述初始應(yīng)用程序代碼的校驗和;校驗和(checksum),在數(shù)據(jù)處理和數(shù)據(jù)通信領(lǐng)域中,用于校驗?zāi)康牡囊唤M數(shù)據(jù)項的和。這些數(shù)據(jù)項可以是數(shù)值或在計算檢驗的過程中看作數(shù)字的其它字符串。得到存儲器中的初始應(yīng)用程序之后,依據(jù)組成初始應(yīng)用程序的數(shù)據(jù)項進(jìn)行校驗和的計算,計算得到存儲器中初始應(yīng)用程序的校驗和。步驟S106 :判斷所述存儲器中初始應(yīng)用程序代碼的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,獲取存儲器中存儲的初始應(yīng)用程序代碼和在內(nèi)存中緩存的目標(biāo)應(yīng)用程序代碼進(jìn)行比較;如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。在管理信息中還預(yù)設(shè)有該初始應(yīng)用程序的校驗和,該預(yù)設(shè)的校驗和是在該初始應(yīng)用程序編輯過程中就計算得出的,而且將該初始應(yīng)用程序加載入軟件系統(tǒng)中后,對軟件系統(tǒng)進(jìn)行更新過程中校驗和可能會有變化,但是,軟件系統(tǒng)在線更新完成后,校驗和與最初的校驗和即管理信息中的校驗和一致,不會變化。計算得到存儲器中初始應(yīng)用程序的校驗和后,和管理信息中預(yù)設(shè)的校驗和進(jìn)行比較當(dāng)兩個校驗和相同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序一致,后續(xù)的對內(nèi)存中的目標(biāo)應(yīng)用程序進(jìn)行校驗就可實現(xiàn)內(nèi)存中的目標(biāo)應(yīng)用程序與加載到存儲器中的初始應(yīng)用程序一致;當(dāng)兩個校驗和不同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序不一致,即存儲器中的初始應(yīng)用程序已出現(xiàn)錯誤,不能再以存儲器中的初始應(yīng)用程序為依據(jù)校驗內(nèi)存中的目標(biāo)應(yīng)用程序,而此時內(nèi)存中的目標(biāo)應(yīng)用程序可靠性不能確定,所以需要停止所述嵌入式系統(tǒng)的運(yùn)行。當(dāng)對軟件系統(tǒng)進(jìn)行在線更新時計算初始應(yīng)用程序的校驗和可能會與管理信息中的校驗和不一致,但是,軟件系統(tǒng)在線更新完成后,初始應(yīng)用程序的校驗和與管理信息中的校驗和一致,不會變化。實際實施中,計算初始應(yīng)用程序的校驗和的時間可能會與軟件系統(tǒng)的在線更新的時間相沖突,所以可以設(shè)置當(dāng)某次計算校驗和與管理信息中的不一致時,可多次計算校驗和,次數(shù)可根據(jù)實際情況進(jìn)行設(shè)定,若達(dá)到設(shè)定的次數(shù)仍不相同時,就判定存儲器中的初始應(yīng)用程序錯誤;若最后幾次計算都相同,就能說明此時系統(tǒng)正在更新,更新完成后,計算初始應(yīng)用程序的檢驗和與管理信息中的相同,則說明初始應(yīng)用程序正確,可以進(jìn)行后續(xù)的對內(nèi)存中的目標(biāo)應(yīng)用程序的校驗步驟。由上述可知,本發(fā)明實施例2提供的一種校驗內(nèi)存中應(yīng)用程序的方法,還包括當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取所述存儲器中存儲的初始應(yīng)用程序;計算獲取的存儲器中所述初始應(yīng)用程序的校驗和;判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,獲取存儲器中存儲的初始應(yīng)用程序,并且和在內(nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行比較;如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。采用本實施例的方法在對內(nèi)存中的目標(biāo)應(yīng)用程序進(jìn)行檢驗之前,對存儲器中的初始應(yīng)用程序進(jìn)行校驗,保證了存儲器中初始應(yīng)用程序的正確性和完整 性,進(jìn)而保證了內(nèi)存中目標(biāo)應(yīng)用程序的正確性和完整性。參見圖5示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法實施例3的流程圖,本流程圖是在圖I的步驟SlOl之前還包括步驟S107 :當(dāng)所述嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序;為保證存儲器中存儲的初始應(yīng)用程序與設(shè)定的應(yīng)用程序一致,進(jìn)而保證內(nèi)存中的目標(biāo)應(yīng)用程序校驗的準(zhǔn)確性,需要先對存儲器中的初始應(yīng)用程序進(jìn)行檢驗。當(dāng)軟件系統(tǒng)開始運(yùn)行,但引導(dǎo)程序還未啟動運(yùn)行任務(wù)時,此時系統(tǒng)中有一段空閑時間段,利用這段空閑的時間段對存儲器中的初始應(yīng)用程序進(jìn)行校驗。 在管理信息中預(yù)設(shè)存儲有初始應(yīng)用程序的起始地址,該起始地址表示了初始應(yīng)用程序在存儲器中的起始位置,通過該預(yù)設(shè)的起始地址,就能在存儲器中準(zhǔn)確定位該初始應(yīng)用程序的起始位置。管理信息中還預(yù)設(shè)有該初始應(yīng)用程序的大小,在存儲器中定位了該初始應(yīng)用程序的起始位置后,再依據(jù)該初始應(yīng)用程序的大小就能在存儲器得到該初始應(yīng)用程序。步驟S108 :計算獲取的存儲器中所述初始應(yīng)用程序代碼的校驗和;得到存儲器中的初始應(yīng)用程序之后,依據(jù)組成初始應(yīng)用程序的數(shù)據(jù)項進(jìn)行校驗和的計算,計算得到存儲器中初始應(yīng)用程序的校驗和。步驟S109 :判斷存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,啟動運(yùn)行任務(wù);如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。計算得到存儲器中初始應(yīng)用程序的校驗和后,和管理信息中預(yù)設(shè)的校驗和進(jìn)行比較當(dāng)兩個校驗和相同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序一致,后續(xù)的對內(nèi)存中的目標(biāo)應(yīng)用程序進(jìn)行校驗就可實現(xiàn)內(nèi)存中的目標(biāo)應(yīng)用程序與加載到存儲器中的初始應(yīng)用程序一致;當(dāng)兩個校驗和不同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序不一致,即存儲器中的初始應(yīng)用程序已出現(xiàn)錯誤,不能再以存儲器中的初始應(yīng)用程序為依據(jù)校驗內(nèi)存中的目標(biāo)應(yīng)用程序,而此時內(nèi)存中的目標(biāo)應(yīng)用程序可靠性不能確認(rèn),所以需要停止所述嵌入式系統(tǒng)的運(yùn)行。當(dāng)對軟件系統(tǒng)進(jìn)行在線更新時計算初始應(yīng)用程序的校驗和可能會與管理信息中的校驗和不一致,但是,軟件系統(tǒng)在線更新完成后,初始應(yīng)用程序的校驗和與管理信息中的校驗和一致,不會變化。實際實施中,計算初始應(yīng)用程序的校驗和的時間可能會與軟件系統(tǒng)的在線更新的時間相沖突,所以可以設(shè)置當(dāng)某次計算校驗和與管理信息中的不一致時,可多次計算校驗和,次數(shù)可根據(jù)實際情況進(jìn)行設(shè)定,若達(dá)到設(shè)定的次數(shù)仍不相同時,就判定存儲器中的初始應(yīng)用程序錯誤;若最后幾次計算都相同,就能說明此時系統(tǒng)正在更新,更新完成后,計算初始應(yīng)用程序的檢驗和與管理信息中的相同,則說明初始應(yīng)用程序正確,可以進(jìn)行后續(xù)的對內(nèi)存中的目標(biāo)應(yīng)用程序的校驗步驟。 由上述可知,本發(fā)明實施例3提供的一種校驗內(nèi)存中應(yīng)用程序的方法,還包括當(dāng)所述嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序;計算獲取的存儲器中所述初始應(yīng)用程序的校驗和;判斷存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,啟動運(yùn)行任務(wù);如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。采用本實施例的方法在嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時,對存儲器中的初始應(yīng)用程序進(jìn)行校驗,保證了存儲器中初始應(yīng)用程序的正確性和完整性,在后續(xù)的應(yīng)用程序運(yùn)行過程中,進(jìn)而保證了內(nèi)存中目標(biāo)應(yīng)用程序的正確性和完整性。與上述的一種校驗內(nèi)存中應(yīng)用程序的方法實施例相對應(yīng)的,本發(fā)明還提供了一種校驗內(nèi)存中應(yīng)用程序的裝置實施例。參見圖6示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例I的結(jié)構(gòu)示意圖,包括第一判斷器101、比較器102和第二判斷器103。其中,所述第一判斷器101用于判斷所述嵌入式軟件是否空閑;為了不影響嵌入式軟件的運(yùn)行,不阻礙應(yīng)用程序的正常運(yùn)行,本發(fā)明提供的校驗內(nèi)存中應(yīng)用程序的方法是在嵌入式軟件中沒有應(yīng)用程序任務(wù)運(yùn)行時,即利用系統(tǒng)中的空閑時間段進(jìn)行的。因此需要首先第一判斷器101判斷嵌入式系統(tǒng)中是不是有應(yīng)用程序任務(wù)正在運(yùn)行,如果有,繼續(xù)進(jìn)行應(yīng)用程序任務(wù)的運(yùn)行,如果沒有,比較器102進(jìn)行后續(xù)的校驗步驟。其中,所述比較器102用于當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;比較器102獲取存儲器中存儲的初始應(yīng)用程序代碼,對內(nèi)存中的應(yīng)用程序代碼進(jìn)行校驗。所述存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序中預(yù)設(shè)有管理信息,所述管理信息包括所述初始應(yīng)用程序在存儲器中的起始地址、所述初始應(yīng)用程序的大小、所述初始應(yīng)用程序的校驗和。在將該應(yīng)用程序?qū)懭氪鎯ζ髦袝r,將該應(yīng)用程序在存儲器中的起始地址、大小及其校驗和存儲到管理信息中,即管理信息中有存儲到存儲器中的所述初始應(yīng)用程序最初的屬性信息。
比較器102依據(jù)管理信息的內(nèi)容獲取存儲器中存儲的初始應(yīng)用程序代碼,對內(nèi)存中的應(yīng)用程序代碼進(jìn)行校驗。參見圖7所示的一具體結(jié)構(gòu)示意圖,所述比較器102包括獲取模塊1021、劃分模塊1022和比較模塊1023。所述獲取模塊1021用于依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始·應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序;再依據(jù)該應(yīng)用程序的大小就能準(zhǔn)確在存儲器得到該應(yīng)用程序。獲取模塊1021首先依據(jù)所述管理信息中預(yù)設(shè)的應(yīng)用程序的起始地址在所述存儲器中定位所述應(yīng)用程序的起始位置;在管理信息中預(yù)設(shè)存儲有應(yīng)用程序的起始地址,該起始地址表示了應(yīng)用程序在存儲器中的起始位置,通過該預(yù)設(shè)的起始地址,獲取模塊1021首先能在存儲器中準(zhǔn)確定位該應(yīng)用程序的起始位置;管理信息中還預(yù)設(shè)有該應(yīng)用程序的大小,在存儲器中定位了該應(yīng)用程序的起始位置后,獲取模塊1021進(jìn)而依據(jù)該應(yīng)用程序的大小就能準(zhǔn)確在存儲器得到該應(yīng)用程序。其中,所述劃分模塊1022用于依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段;所述劃分模塊1022用于依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序代碼劃分為至少一個原代碼段;當(dāng)初始應(yīng)用程序較短時,可直接進(jìn)行比較,將所述存儲器中的初始應(yīng)用程序代碼視為一個原代碼段;當(dāng)初始應(yīng)用程序較長時,需要劃分模塊1022將存儲器中的初始應(yīng)用程序代碼劃分為多個原代碼段。同理,依據(jù)預(yù)設(shè)的比較長度,劃分模塊1022將內(nèi)存中的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段。所述比較模塊1023用于依次對所述原代碼段和所述比較代碼段進(jìn)行比較。所述比較模塊1023依次對所述原代碼段和比較代碼段進(jìn)行比較,當(dāng)任一原代碼段和與所述原代碼段對應(yīng)的比較代碼段不相同時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序代碼錯誤。比較模塊1023分別對獲取的存儲器中的第一個原代碼段和內(nèi)存中對應(yīng)的比較代碼段進(jìn)行比較,當(dāng)二者完全相同時,比較模塊1023依次分別獲取下一個原代碼段和比較代碼段進(jìn)行比較,當(dāng)二者完全相同時,比較模塊1023繼續(xù)獲取下一個原代碼段和比較代碼段進(jìn)行比較,以此類推,直至所有的原代碼段和比較代碼段比較完成。其中,所述第二判斷器103用于當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。預(yù)設(shè)的比對條件是目標(biāo)應(yīng)用程序和初始應(yīng)用程序相同。理論上,內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼應(yīng)該與存儲器中的初始應(yīng)用程序代碼完全相同,這樣,系統(tǒng)中每次運(yùn)行的該應(yīng)用程序是存儲器中的目標(biāo)應(yīng)用程序,而當(dāng)內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼和存儲器中的初始應(yīng)用程序代碼不相同時,系統(tǒng)在運(yùn)行該目標(biāo)應(yīng)用程序時,可能會導(dǎo)致各種問題,不能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。
當(dāng)比較過程中出現(xiàn)原代碼段和與之相對應(yīng)的比較代碼段不同的時候,說明與存儲器中存儲的初始應(yīng)用程序相比,比較代碼段代表的內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼被更改過,出現(xiàn)了錯誤。所以當(dāng)目標(biāo)應(yīng)用程序和初始應(yīng)用程序不同時,所述第二判斷器103判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。由于嵌入式系統(tǒng)中可能存在多個應(yīng)用程序,需要對每個存儲在內(nèi)存中目標(biāo)應(yīng)用程序分別進(jìn)行校驗,所以可對各個目標(biāo)應(yīng)用程序進(jìn)行排序,使用頻率較高的排在前面,優(yōu)先進(jìn)行校驗,比如當(dāng)系統(tǒng)中存在應(yīng)用程序I、應(yīng)用程序2和應(yīng)用程序3,使用頻率由高到低為應(yīng)用程序3、應(yīng)用程序I和應(yīng)用程序2,當(dāng)系統(tǒng)中出現(xiàn)空閑時間段時,首先對應(yīng)用程序3對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序3進(jìn)行校驗,然后是校驗應(yīng)用程序I對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序1,最后校驗應(yīng)用程序2對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序2 ;
也可優(yōu)先對即將運(yùn)行的應(yīng)用程序排在前面,優(yōu)先進(jìn)行校驗,比如當(dāng)系統(tǒng)中存在應(yīng)用程序4、應(yīng)用程序5和應(yīng)用程序6,當(dāng)系統(tǒng)運(yùn)行完應(yīng)用程序4之后,一段空閑時間段后再運(yùn)行應(yīng)用程序5,在這段空閑時間段中可對應(yīng)用程序進(jìn)行校驗,此時即將運(yùn)行的應(yīng)用程序為應(yīng)用程序5,首先對應(yīng)用程序5對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序5進(jìn)行校驗,時間充裕的話,繼續(xù)對應(yīng)用程序6對應(yīng)的存儲內(nèi)存中的目標(biāo)應(yīng)用程序6進(jìn)行校驗,以此類推;對多個應(yīng)用程序校驗的先后順序的設(shè)置條件可視具體情況設(shè)定。參見圖8示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例I的另一種結(jié)構(gòu)示意圖,本結(jié)構(gòu)是在圖5的結(jié)構(gòu)中還包括刷新器104。其中,所述刷新器104用于當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。當(dāng)內(nèi)存中存儲的目標(biāo)應(yīng)用程序代碼和存儲器中的初始應(yīng)用程序代碼不相同時,即內(nèi)存中存儲的目標(biāo)應(yīng)用程序錯誤時,系統(tǒng)在運(yùn)行該目標(biāo)應(yīng)用程序時,可能會導(dǎo)致各種問題,不能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。因此,需要刷新器104依據(jù)所述存儲器中存儲的初始應(yīng)用程序代碼將內(nèi)存中的目標(biāo)應(yīng)用程序代碼刷新,使內(nèi)存中的目標(biāo)應(yīng)用程序代碼再次與存儲器中存儲的初始應(yīng)用程序代碼相同,系統(tǒng)運(yùn)行該目標(biāo)應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的。由上述可知,本發(fā)明實施例I提供的一種校驗內(nèi)存中應(yīng)用程序的裝置,包括第一判斷器,用于判斷所述嵌入式軟件是否空閑;比較器,用于當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;第二判斷器,用于當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。刷新器,用于當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。采用本實施例的裝置,能夠在軟件系統(tǒng)空閑的時候,對內(nèi)存中存儲的應(yīng)用程序進(jìn)行檢驗刷新,保證了內(nèi)存中存儲的應(yīng)用程序與存儲器中的應(yīng)用程序一致,系統(tǒng)運(yùn)行該應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序時想要達(dá)到的運(yùn)行目的,提高應(yīng)用程序運(yùn)行的正確性和完整性。參見圖9示出了本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的裝置實施例2的結(jié)構(gòu)示意圖,本裝置在圖I的基礎(chǔ)上還包括校驗器105和發(fā)送器106。
其中,所述校驗器105用于當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序,計算獲取的存儲器中所述初始應(yīng)用程序的校驗和,并判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同;當(dāng)軟件系統(tǒng)運(yùn)行過程中有空閑時,此時校驗器105開始對存儲器中的初始應(yīng)用程序進(jìn)行校驗,為保證存儲器中存儲的初始應(yīng)用程序與設(shè)定的應(yīng)用程序一致,進(jìn)而保證內(nèi)存中的目標(biāo)應(yīng)用程序校驗的準(zhǔn)確性,需要先對存儲器中的初始應(yīng)用程序進(jìn)行檢驗。同理,當(dāng)軟件系統(tǒng)開始運(yùn)行,但還未啟動運(yùn)行任務(wù)時,此時系統(tǒng)中有一段空閑時間段,校驗器105也可以利用這段空閑的時間段對存儲器中的初始應(yīng)用程序進(jìn)行校驗。在管理信息中預(yù)設(shè)存儲有初始應(yīng)用程序的起始地址,該起始地址表示了初始應(yīng)用程序在存儲器中的起始位置,通過該預(yù)設(shè)的起始地址,校驗器105就能在存儲器中準(zhǔn)確定位該初始應(yīng)用程序的起始位置。管理信息中還預(yù)設(shè)有該初始應(yīng)用程序的大小,在存儲器中定位了該初始應(yīng)用程序的起始位置后,再依據(jù)該初始應(yīng)用程序的大小,校驗器105在存儲器得到該初始應(yīng)用程序。校驗和在數(shù)據(jù)處理和數(shù)據(jù)通信領(lǐng)域中,用于校驗?zāi)康牡囊唤M數(shù)據(jù)項的和。這些數(shù)據(jù)項可以是數(shù)值或在計算檢驗的過程中看作數(shù)字的其它字符串。
校驗器105得到存儲器中的初始應(yīng)用程序之后,依據(jù)組成初始應(yīng)用程序的數(shù)據(jù)項進(jìn)行校驗和的計算,計算得到存儲器中初始應(yīng)用程序的校驗和。在管理信息中還預(yù)設(shè)有該應(yīng)用程序的校驗和,該預(yù)設(shè)的校驗和是在該初始應(yīng)用程序編輯過程中就計算得出的,而且將該初始應(yīng)用程序加載入軟件系統(tǒng)中后,對軟件系統(tǒng)進(jìn)行更新過程中校驗和可能會有變化,但是,軟件系統(tǒng)在線更新完成后,校驗和與最初的校驗和即管理信息中的校驗和一致,不會變化。校驗器105計算得到存儲器中初始應(yīng)用程序的校驗和后,和管理信息中預(yù)設(shè)的校驗和進(jìn)行比較當(dāng)兩個校驗和相同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序一致,后續(xù)的對內(nèi)存中的目標(biāo)應(yīng)用程序進(jìn)行校驗就可實現(xiàn)內(nèi)存中的目標(biāo)應(yīng)用程序與加載到存儲器中的初始應(yīng)用程序一致;當(dāng)兩個校驗和不同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序不一致,即存儲器中的初始應(yīng)用程序已出現(xiàn)錯誤,不能再以存儲器中的初始應(yīng)用程序為依據(jù)校驗內(nèi)存中的目標(biāo)應(yīng)用程序,而此時內(nèi)存中的目標(biāo)應(yīng)用程序可靠性不能確認(rèn),所以需要停止所述嵌入式系統(tǒng)的運(yùn)行。實際實施中,校驗器105計算初始應(yīng)用程序的校驗和的時間可能會與軟件系統(tǒng)的在線更新的時間相沖突,所以可以在校驗器105設(shè)置當(dāng)某次計算校驗和與管理信息中的不一致時,可多次計算校驗和,次數(shù)可根據(jù)實際情況進(jìn)行設(shè)定,若達(dá)到設(shè)定的次數(shù)仍不相同時,就判定存儲器中的初始應(yīng)用程序錯誤;若最后幾次計算都相同,就能說明此時系統(tǒng)正在更新,更新完成后,計算初始應(yīng)用程序的檢驗和與管理信息中的相同,則說明初始應(yīng)用程序正確,可以進(jìn)行后續(xù)比較器102的對內(nèi)存中的目標(biāo)應(yīng)用程序的校驗步驟。其中,所述發(fā)送器106用于當(dāng)校驗器判定存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和不同時,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號。校驗器105計算得到存儲器中初始應(yīng)用程序的校驗和后,和管理信息中預(yù)設(shè)的校驗和進(jìn)行比較,當(dāng)兩個校驗和不同時,則表示存儲器中的初始應(yīng)用程序和預(yù)設(shè)的應(yīng)用程序不一致,即存儲器中的初始應(yīng)用程序已出現(xiàn)錯誤,不能再以存儲器中的初始應(yīng)用程序為依據(jù)校驗內(nèi)存中的目標(biāo)應(yīng)用程序,而此時內(nèi)存中的目標(biāo)應(yīng)用程序可靠性不能確認(rèn),所以需要停止所述嵌入式系統(tǒng)的運(yùn)行,發(fā)送器106發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號,使得該嵌入式軟件停止運(yùn)行。由上述可知,本發(fā)明實施例2提供的一種校驗內(nèi)存中應(yīng)用程序的裝置,還包括校驗器,用于當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序,計算獲取的存儲器中所述初始應(yīng)用程序的校驗和,并判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同;發(fā)送器,用于當(dāng)校驗器判定存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和不同時,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號。采用本實施例的裝置在對內(nèi)存中的應(yīng)用程序進(jìn)行檢驗之前和/或當(dāng)軟件系統(tǒng)開始運(yùn)行,但還未啟動運(yùn)行任務(wù)時,對存儲器中的應(yīng)用程序進(jìn)行校驗,保證了存儲器中應(yīng)用程序的正確,進(jìn)而保證了內(nèi)存中應(yīng)用程序的正確。
實際實施中,本發(fā)明提供的方法也可視為一個運(yùn)行任務(wù),在應(yīng)用到的嵌入式軟件中使用優(yōu)先級最低的任務(wù)。一般情況下,在初始任務(wù)完成常規(guī)處理后,本方法也可視為一個運(yùn)行任務(wù),該運(yùn)行任務(wù)就處于最低優(yōu)先級,只有當(dāng)系統(tǒng)空閑時,才會運(yùn)行該運(yùn)行任務(wù)。本發(fā)明追加一個死循環(huán),在循環(huán)中執(zhí)行該運(yùn)行任務(wù)。一旦有運(yùn)行任務(wù),跳出該死循環(huán),進(jìn)行任務(wù)運(yùn)行。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種校驗內(nèi)存中應(yīng)用程序的方法,其特征在于,所述方法應(yīng)用于嵌入式系統(tǒng)中,包括 當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對; 當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括 當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序中預(yù)設(shè)有管理信息,所述管理信息包括所述初始應(yīng)用程序在存儲器中的起始地址、所述初始應(yīng)用程序的大小、和所述初始應(yīng)用程序的校驗和。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對包括 依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序; 依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段; 依次對所述原代碼段和所述比較代碼段進(jìn)行比較。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對之前還包括 當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取所述存儲器中存儲的初始應(yīng)用程序; 計算獲取的存儲器中所述初始應(yīng)用程序的校驗和; 判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,獲取存儲器中存儲的初始應(yīng)用程序,并且和在內(nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行比較;如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括 當(dāng)所述嵌入式系統(tǒng)開始運(yùn)行,未啟動運(yùn)行任務(wù)時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序; 計算獲取的存儲器中所述初始應(yīng)用程序的校驗和; 判斷存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同,如果相同,啟動運(yùn)行任務(wù);如果不同,判定存儲器中的初始應(yīng)用程序錯誤,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號停止所述嵌入式系統(tǒng)運(yùn)行。
7.一種校驗內(nèi)存中應(yīng)用程序的裝置,其特征在于,所述裝置應(yīng)用于嵌入式系統(tǒng)中,包括 第一判斷器,用于判斷所述嵌入式軟件是否空閑;比較器,用于當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對; 第二判斷器,用于當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括 刷新器,用于當(dāng)判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤時,依據(jù)所述存儲器中的初始應(yīng)用程序?qū)λ鰞?nèi)存中緩存的目標(biāo)應(yīng)用程序進(jìn)行刷新。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述比較器包括 獲取模塊,用于依據(jù)所述管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和所述初始應(yīng)用程序的大小,在所述存儲器中獲取所述初始應(yīng)用程序; 劃分模塊,用于依據(jù)預(yù)設(shè)的比較長度,將所述存儲器中的初始應(yīng)用程序劃分為至少一個原代碼段,將所述內(nèi)存中對應(yīng)的目標(biāo)應(yīng)用程序劃分為與所述原代碼段對應(yīng)的比較代碼段; 比較模塊,用于依次對所述原代碼段和所述比較代碼段進(jìn)行比較。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括 校驗器,用于當(dāng)所述嵌入式系統(tǒng)空閑時,依據(jù)管理信息中預(yù)設(shè)的所述存儲器中的初始應(yīng)用程序的起始地址和大小獲取存儲器中存儲的初始應(yīng)用程序,計算獲取的存儲器中所述初始應(yīng)用程序的校驗和,并判斷所述存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和是否相同; 發(fā)送器,用于當(dāng)檢驗器判定存儲器中初始應(yīng)用程序的校驗和與管理信息中預(yù)設(shè)的校驗和不同時,發(fā)送停止所述嵌入式系統(tǒng)運(yùn)行的信號。
全文摘要
本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法,所述方法應(yīng)用于嵌入式系統(tǒng)中,包括當(dāng)所述嵌入式系統(tǒng)空閑時,將內(nèi)存中緩存的目標(biāo)應(yīng)用程序與存儲器中存儲的與所述目標(biāo)應(yīng)用程序相對應(yīng)的初始應(yīng)用程序進(jìn)行比對;當(dāng)所述內(nèi)存中緩存的目標(biāo)應(yīng)用程序與所述存儲器中的初始應(yīng)用程序不滿足預(yù)設(shè)比對條件時,判定所述內(nèi)存中的目標(biāo)應(yīng)用程序錯誤。采用本發(fā)明提供的一種校驗內(nèi)存中應(yīng)用程序的方法,能夠在軟件系統(tǒng)空閑的時候,對內(nèi)存中存儲的應(yīng)用程序進(jìn)行檢驗,保證了內(nèi)存中存儲的應(yīng)用程序與存儲器中的應(yīng)用程序一致,系統(tǒng)運(yùn)行該應(yīng)用程序時,就能達(dá)到設(shè)置該應(yīng)用程序的運(yùn)行目的,提高應(yīng)用程序運(yùn)行的正確性和完整性。
文檔編號G06F11/07GK102799494SQ20121031317
公開日2012年11月28日 申請日期2012年8月29日 優(yōu)先權(quán)日2012年8月29日
發(fā)明者劉群欣, 陳小玄, 華斌, 顧廣娟 申請人:南車株洲電力機(jī)車研究所有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
博客| 漯河市| 西青区| 黔东| 喜德县| 从化市| 海盐县| 东乡族自治县| 牙克石市| 洛宁县| 乐清市| 二手房| 华蓥市| 景东| 齐齐哈尔市| 通化县| 池州市| 石阡县| 锡林郭勒盟| 尤溪县| 龙江县| 林口县| 安义县| 敖汉旗| 黄大仙区| 隆德县| 岑巩县| 通辽市| 湘潭县| 页游| 洞头县| 鲁山县| 惠东县| 荔波县| 夹江县| 山丹县| 宁乡县| 明水县| 日土县| 明星| 竹北市|