專利名稱:一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性和完整性的方法
技術領域:
本發(fā)明屬于嵌入式系統(tǒng)中的閃存數(shù)據(jù)保護技術領域,涉及到一種閃存 中數(shù)據(jù)的保護方法,特別是在系統(tǒng)上電或掉電期間保護閃存數(shù)據(jù)安全性和 完整性的方法。
背景技術:
隨著社會的進步,科技的發(fā)展,多元的化設備也是日新月異,用戶的 對嵌入式的設備也提出了更高的要求,需要能夠提供完備的功能,安全, 快捷,穩(wěn)定,易操作等優(yōu)點的嵌入式設備,其中的系統(tǒng)簡稱為嵌入式系統(tǒng), 用來管理嵌入式設備的系統(tǒng),對整個系統(tǒng)中存在的用戶接口和內部接口之 間協(xié)調和操作,為用戶提供更加人性化的操作。統(tǒng)一對系統(tǒng)中資源分配調
度,為了保存嵌入式系統(tǒng)(Embedded Operating System)中的數(shù)據(jù)和代碼, 必須有一種非易失性存儲器,即Flash閃存存儲器。同時對用戶提供存儲私 人數(shù)據(jù),也是多功能,低能耗,高可靠的嵌入式系統(tǒng)設備(Embedded Operating System unit)必不可少的器件。今后的社會發(fā)展過程中這種嵌入 式系統(tǒng)設備會越來越多,嵌入式系統(tǒng)中Flash閃存數(shù)據(jù)的完整性和安全性越 來越需要得到保證。
目前比較常見的嵌入式系統(tǒng)有Linux, WinCE, VxWorks, UC/OS, Nucleus,其中Lhiux的特點是開源,免費,并且存在一個龐大的開源組織 不管在實際開發(fā)過程遇到什么問題都可以通過開源論壇,或者是其它途徑找解決方案,該系統(tǒng)為嵌入式系統(tǒng)(Embedded Operating System)注入了活 力,使今后嵌入式系統(tǒng)的發(fā)展歷上添加了重重的一筆。
如上所述,由于嵌入式設備的需求量大加速了嵌入式系統(tǒng)(Embedded Operating System)的發(fā)展,對嵌入式系統(tǒng)的發(fā)展也是個契機,其中Flash 閃存數(shù)據(jù)的安全性和完整性就顯得尤其的重要。系統(tǒng)在加電后所有的程序 都開始加載,程序加載結束后程序的運行所有的這些一切的操作都依靠著 Flash閃存中存儲的數(shù)據(jù)和代碼,所以嵌入式系統(tǒng)中flash數(shù)據(jù)的安全性和完 整性是必須的性能指標。
閃存數(shù)據(jù)容易丟失的原因有以下幾種
1、 Flash數(shù)據(jù)丟失的硬件原因
Flash操作由硬件控制,所以硬件上的不穩(wěn)定可能造成Flash操作錯誤。 硬件原因主要是能影響CPU正常運行的因素,以及能影響Flash操作環(huán)境的 因素。這些因素包括操作電壓、溫度以及外部干擾脈沖等,具體如下
① 能影響CPU運行可靠性的參數(shù)有系統(tǒng)時鐘源。如果系統(tǒng)時鐘由外部 晶振提供,外部的電磁干擾引起尖脈沖,并耦合到系統(tǒng)時鐘上,則會導致 不可預知的操作。
② 系統(tǒng)在CPU的工作電壓沒有穩(wěn)定(VDD上升時間低于規(guī)定的1 ms) 時就已經(jīng)完成復位,由于系統(tǒng)復位時需要從Flash讀出代碼數(shù)據(jù),F(xiàn)lash電壓 不穩(wěn)定會出現(xiàn)不可預測的錯誤。
③ 在對Flash的操作過程中,如果溫度、電壓不穩(wěn)定,也可能造成Flash 數(shù)據(jù)錯誤。
2、 Flash數(shù)據(jù)丟失的軟件原因代碼設計的缺陷是程序丟失的原因之一,因為Flash是由硬件來控制 的,不能由軟件來控制操作的細節(jié),所以程序的不完善可能造成Flash的訪 問出錯,從而使Flash數(shù)據(jù)出現(xiàn)錯誤。這些操作包括在使能flash寫之后, 由于軟件設計的缺陷導致錯誤的將數(shù)據(jù)寫到Flash中了,從而出現(xiàn)問題。另 外,如果使用外部晶振作系統(tǒng)時鐘,在時鐘沒有穩(wěn)定時就對Flash進行寫操 作,也可能造成程序丟失。
以上問題單純從硬件或軟件角度并不能很好地解決閃存數(shù)據(jù)完整性的 問題,但是我們發(fā)現(xiàn)它們的共同特點是都無法防止系統(tǒng)在上電、掉電過程 丟失資料的技術缺陷,因此,雖然不能使上述問題逐一解決,但是只要解 決了系統(tǒng)在上電、掉電過程丟失資料的技術缺陷,就可以避免上述的所有 問題的發(fā)生?,F(xiàn)有技術并不能很好的解決,給本領域帶來了不便。
發(fā)明內容
本發(fā)明的目的是為了解決嵌入式系統(tǒng)中防止系統(tǒng)在上電、掉電過程中 閃存數(shù)據(jù)丟失的技術問題,設計了一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安 全性和完整性的方法,使系統(tǒng)在上電或掉電時將閃存單元中的非易失性字 段完全鎖住,在此期間不可以對閃存單元中的數(shù)據(jù)進行寫操作,保證了閃 存數(shù)據(jù)的完整性。
本發(fā)明為實現(xiàn)發(fā)明目的采用的技術方案是, 一種基于嵌入式系統(tǒng)的保 護閃存數(shù)據(jù)安全性和完整性的方法,該方法借助閃存芯片單元中的非易失 性字段以及Linux系統(tǒng)和配套管理軟件實現(xiàn),在Linux系統(tǒng)的內核層設置與 非易失性字段配套的鎖寫保護驅動接口電路,CPU借助信號采集單元采集 系統(tǒng)運行狀態(tài)后,向鎖寫保護驅動接口發(fā)送鎖或解鎖控制命令,實現(xiàn)對閃存芯片單元中的非易失性字段的鎖或解鎖。
本發(fā)明利用了 flash閃存芯片自帶的鎖寫保護的一個非易失性字段,通 過設置鎖寫保護驅動接口來控制閃存的鎖和解鎖。即當該字段被關閉(鎖) 時,任何的數(shù)據(jù)修改都無法操作,只有當它為打開(解鎖)狀態(tài)才可以寫 flash閃存數(shù)據(jù)。重要的是, 一旦設置了該字段,即使系統(tǒng)掉電,同樣保留 了該字段值,通過本方法,設備在上電和掉電的期間同樣受此字段的限制, 因此有效的防止了閃存單元中數(shù)據(jù)的丟失可能,在保證閃存單元中數(shù)據(jù)完 整性的同時很好地避開了由于硬件或軟件的原因丟失閃存數(shù)據(jù)的可能性, 具有很好的社會效益和經(jīng)濟效益。
下面結合附圖對本發(fā)明進行詳細說明。
圖1是本發(fā)明在系統(tǒng)啟動前引導加載程序中應用的步驟流程圖。 圖2是本發(fā)明在系統(tǒng)啟動后應用的步驟流程圖。 圖3是本發(fā)明在系統(tǒng)異常掉電時的步驟流程圖。
具體實施例方式
參看附圖, 一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性和完整性的方 法,該方法借助閃存芯片單元中的非易失性字段以及Linux系統(tǒng)和配套管理 軟件實現(xiàn),在Linux系統(tǒng)的內核層設置與非易失性字段配套的鎖寫保護驅動 接口電路,CPU借助信號采集單元采集系統(tǒng)運行狀態(tài)后,向鎖寫保護驅動 接口發(fā)送鎖或解鎖控制命令,實現(xiàn)對閃存芯片單元中的非易失性字段的鎖 或解鎖。本發(fā)明利用了 flash閃存芯片自帶的鎖寫保護的一個非易失性字段, 通過設置鎖寫保護驅動接口來控制閃存的鎖和解鎖。即當該字段被關閉(鎖)時,任何的數(shù)據(jù)修改都無法操作,只有當它為打開(解鎖)狀態(tài)才
可以寫flash閃存數(shù)據(jù)。重要的是, 一旦設置了該字段,即使系統(tǒng)掉電,同 樣保留了該字段值。
為了便于系統(tǒng)控制,設置非易失性字段的二進制數(shù)據(jù)狀態(tài)參數(shù),在CPU 發(fā)送鎖或解鎖控制命令之前,首先借助驅動接口電路讀取二進制數(shù)據(jù)狀態(tài) 參數(shù),根據(jù)狀態(tài)參數(shù)決定CPU進行、或不進行發(fā)送鎖或解鎖的控制命令。 若要進行鎖命令,當閃存已是鎖狀態(tài),無需動作;當內存是解鎖狀態(tài),則 進行鎖動作。若要進行解鎖命令,當內存是鎖狀態(tài),則進行解鎖動作,當 內存已是解鎖狀態(tài),則無需動作。
為方便隨時鎖定、解鎖或者讀取內存狀態(tài),上述的方法借助計算機在 CPU的輸入端設置命令行輸入接口電路,通過命令行輸入接口實現(xiàn)人為對 閃存芯片單元中的非易失性字段的鎖或解鎖。
上述的方法在引導加載程序中或系統(tǒng)啟動后實現(xiàn)。
下面舉出具體實施例來解釋本方法在引導加載程序以及系統(tǒng)啟動后中
應用的流程。
參看圖l,當系統(tǒng)上電后、引導加載程序啟動,為防止此階段閃存單元 中數(shù)據(jù)丟失,要進行鎖程序。首先CPU借助鎖寫保護驅動接口讀取當前閃 存的狀態(tài),如果此時已為鎖狀態(tài),那么直接結束鎖程序;如果是解鎖狀態(tài), CPU則執(zhí)行鎖命令,發(fā)送鎖定編碼信號至鎖寫保護驅動接口,使閃存變?yōu)?鎖狀態(tài),此后系統(tǒng)啟動。
參看圖2,當系統(tǒng)啟動后,系統(tǒng)會執(zhí)行啟動腳本文件,在此期間,閃存 同樣容易出現(xiàn)丟失數(shù)據(jù),此時也需要對閃存進行鎖命令,CPU借助鎖寫保護驅動接口讀取當前閃存的狀態(tài),如果為鎖狀態(tài),那么直接結束鎖程序; 如果為解鎖狀態(tài),CPU則執(zhí)行鎖命令,發(fā)送鎖定編碼信號至鎖寫保護驅動 接口,使閃存變?yōu)殒i狀態(tài),啟動結束。
參看圖3,當系統(tǒng)異常掉電時,根據(jù)公知的延時電路,CPU可以在延 時期間(一般在毫秒或微秒級)進行低電壓檢測功能,當電壓有下降時(例 如從5V下降到3V),馬上執(zhí)行鎖命令,發(fā)送鎖定編碼信號至鎖寫保護驅動 接口,使閃存變?yōu)殒i狀態(tài),避免由于異常掉電而使閃存中存儲的數(shù)據(jù)丟失。
本方法就是針對系統(tǒng)在上電和掉電時避免出現(xiàn)閃存數(shù)據(jù)丟失的現(xiàn)象, 通過CPU對鎖寫保護驅動接口的控制來實現(xiàn)閃存中非易失性字段的完全鎖 定,在鎖定期間閃存數(shù)據(jù)不可寫、不可刪除,保證了閃存數(shù)據(jù)的安全性和 完整性。
權利要求
1、一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性和完整性的方法,該方法借助閃存芯片單元中的非易失性字段以及Linux系統(tǒng)和配套管理軟件實現(xiàn),其特征在于在Linux系統(tǒng)的內核層設置與非易失性字段配套的鎖寫保護驅動接口電路,CPU借助信號采集單元采集系統(tǒng)運行狀態(tài)后,向鎖寫保護驅動接口發(fā)送鎖或解鎖控制命令,實現(xiàn)對閃存芯片單元中的非易失性字段的鎖或解鎖。
2、 根據(jù)權利要求1所述的一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性 和完整性的方法,其特征在于設置非易失性字段的二進制數(shù)據(jù)狀態(tài)參數(shù), 在CPU發(fā)送鎖或解鎖控制命令之前,首先借助驅動接口電路讀取二進制數(shù) 據(jù)狀態(tài)參數(shù),根據(jù)狀態(tài)參數(shù)決定CPU進行、或不進行發(fā)送鎖或解鎖的控制 命令。
3、 根據(jù)權利要求1所述的一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性 和完整性的方法,其特征在于所述的方法借助計算機在CPU的輸入端設 置命令行輸入接口電路,通過命令行輸入接口實現(xiàn)人為對閃存芯片單元中 的非易失性字段的鎖或解鎖。
4、 根據(jù)權利要求1或3所述的一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性和完整性的方法,其特征在于所述的方法在引導加載程序中或系統(tǒng)啟動后實現(xiàn)。
全文摘要
一種基于嵌入式系統(tǒng)的保護閃存數(shù)據(jù)安全性和完整性的方法,解決嵌入式系統(tǒng)中防止系統(tǒng)在上電、掉電過程中閃存數(shù)據(jù)丟失的技術問題,采用的技術方案是,借助閃存芯片單元中的非易失性字段以及Linux系統(tǒng)和配套管理軟件實現(xiàn),在Linux系統(tǒng)的內核層設置與非易失性字段配套的鎖寫保護驅動接口電路,CPU借助信號采集單元采集系統(tǒng)運行狀態(tài)后,向鎖寫保護驅動接口發(fā)送鎖或解鎖控制命令,實現(xiàn)對閃存芯片單元中的非易失性字段的鎖或解鎖。本發(fā)明的優(yōu)點是設備在上電和掉電的期間同樣受此字段的限制,因此有效的防止了閃存單元中數(shù)據(jù)的丟失可能,在保證閃存單元中數(shù)據(jù)完整性的同時很好地避開了由于硬件或軟件的原因丟失閃存數(shù)據(jù)的可能性,具有很好的社會效益和經(jīng)濟效益。
文檔編號G06F12/14GK101645047SQ20091018986
公開日2010年2月10日 申請日期2009年9月2日 優(yōu)先權日2009年9月2日
發(fā)明者張錫健, 瀾 汪, 王志波, 鄧永堅, 校 雷 申請人:深圳市共進電子有限公司