中文字幕无码日韩视频无码三区

一種實現flash芯片數據安全的方法

文檔序號:6554839閱讀:167來(lai)源:國知局(ju)
專利名稱:一種實現flash芯片數據安全的方法
技術領域
本發明涉及一種實現FLASH芯片數據安全的方法,特別是涉及一種在對物理扇區與邏輯扇區大小不一致的FLASH芯片進行寫操作時實現數據安全的方法。
背景技術
FLASH芯片是一種常用的在掉電情況下依然能夠保存數據的存儲芯片,在嵌入式系統中應用得非常廣泛。FLASH在物理介質上一般都是分扇區的,對FLASH的寫操作都是以扇區為單位并且需要先擦除整個扇區,然后才能進行寫操作,即,假設用戶只需要寫一個字節,也需要對整個扇區進行先擦后寫的操作。對FLASH的寫操作的步驟一般為首先獲得目的地址所在扇區的數據,然后把扇區中目的區域的數據用待寫的數據替代,這樣就整合了老的數據和待寫的數據,最后把整合后的數據再寫入到FLASH。
上層(指應用層)應用對FLASH操作的最小單位稱之為邏輯扇區,比如,邏輯扇區定為1K,那么即使你只需要存儲一個字節的數據,也需要占用1K的空間。由于FLASH的存儲容量一般較小,而物理扇區一般較大,如果邏輯扇區定義為和物理扇區一樣大,就將使得FLASH的利用率過低。比如,FLASH的容量為512K,物理扇區為8K,如果邏輯扇區也定義為8K,那么該FLASH最大只能存放512K/8K=64個信息塊,即,應用最多能夠操作64個信息塊,這很顯然浪費了許多FLASH的空間,為了解決這個問題,可以將邏輯扇區定義的小一點,比如1K,那么應用就能操作512個信息塊了,因此一般在應用中邏輯扇區都定義得比物理扇區小。
由于FLASH的讀寫數據較慢,而且是進行先擦后寫的操作,因此如果在寫的過程中發生掉電等異常,可能破壞了原來的數據,如果信息塊較大,跨越了幾個物理扇區時,可能部分丟失某個扇區的數據。

發明內容
本發明所要解決的技術問題在于提供一種實現FLASH芯片數據安全的方法,用于解決在系統出現掉電等異常情況時無法恢復物理扇區與邏輯扇區大小不一致的FLASH芯片數據的問題。
為了實現上述目的,本發明提供了一種實現FLASH芯片數據安全的方法,其特征在于,包括步驟一,將FLASH芯片劃分為用于存放有效標志結構的標志區、備用區和主用區,該有效標志結構包含主用區有效標志字段、主用區地址字段、數據長度字段和備用區有效標志字段;步驟二,將所述主用區當前的數據和待寫的數據整合后的數據寫入所述備用區,并改寫所述有效標志結構的字段設置;及步驟三,將所述備用區當前的數據和待寫的數據整合后的數據寫入所述主用區,并改寫所述有效標志結構的字段設置。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟一中,所述備用區有效標志字段為所述有效標志結構的最后一個字段。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟二中,還包括一備份所述主用區數據所在扇區數據的步驟,具體為備份從所述主用區扇區的開始到所述主用區扇區的結束區域內的數據。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟二中的改寫所述有效標志結構的字段設置步驟具體為將所述主用區有效標志字段填無效,所述主用區地址字段填主用區的數據所占的第一個扇區的起始地址,所述數據長度字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,所述備用區有效標志字段填有效。
所述的實現FLASH芯片數據安全的方法,其中,在所述步驟三之前還包括一判斷所述主用區有效標志字段是否為無效的步驟。
所述的實現FLASH芯片數據安全的方法,其中,當所述主用區有效標志字段為無效時,還包括一判斷所述備用區有效標志字段是否為有效的步驟,若為有效,則繼續所述步驟三。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟三中,還包括一對所述主用區進行先擦除后寫入的步驟。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟三中的將所述備用區當前的數據和待寫的數據整合后的數據寫入所述主用區的步驟又包括獲取要寫入數據至所述主用區的地址所在的扇區的數據;將該主用區的地址區域的數據替代為所述備用區中的數據,生成整合數據;寫入所述整合數據至所述主用區。
所述的實現FLASH芯片數據安全的方法,其中,所述步驟三中的改寫所述有效標志結構的字段設置步驟具體為將所述主用區有效標志字段填有效,所述主用區地址字段填主用區的數據所占的第一個扇區的起始地址,所述數據長度字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,所述備用區有效標志字段填無效。
所述的實現FLASH芯片數據安全的方法,其中,所述標志區為一個或多個物理扇區。
本發明是一種能夠有效保證FLASH芯片數據安全的方法,該方法克服了現有技術對FLASH寫操作存在的數據破壞的缺點,使得系統在出現掉電等異常情況時仍可恢復FLASH的數據。
以下結合附圖和具體實施例對本發明進行詳細描述,但不作為對本發明的限定。


圖1為寫FLASH芯片前的主用區的數據示意圖;圖2為寫主用區扇區掉電時的主用區的數據示意圖;圖3為寫主用區扇區掉電時的備用區的數據示意圖;圖4為寫主用區扇區掉電恢復后的主用區的數據示意圖;圖5為本發明操作FLASH芯片前備份主用區所有數據后的備用區的數據示意圖;圖6為本發明實現FLASH芯片數據安全的方法流程示意圖;圖7為本發明實現數據安全性算法的流程示意圖;
圖8為本發明當發生異常時實現數據恢復的流程示意圖。
具體實施例方式
請參閱圖6所示,為本發明實現FLASH芯片數據安全的方法流程示意圖,并結合圖1-圖5。圖1描述了寫FLASH芯片前的主用區的數據;圖2描述了寫主用區扇區掉電時的主用區的數據;圖3描述了寫主用區扇區掉電時的備用區的數據;圖4描述了寫主用區扇區掉電恢復后的主用區的數據;圖5描述了本發明操作FLASH芯片前備份主用區所有數據后的備用區的數據。本發明的方法流程具體包括如下步驟步驟601,將FLASH劃分為標志區、備用區和主用區;具體地,在FLASH中留出一個或多個物理扇區來存放有效標志結構,該物理扇區可稱為標志區;留出一個足夠大的區域作為備用區;剩下的區域作為主用區。
劃出一個或多個扇區來保存有效標志結構的原因在于如果將有效標志和數據放在同一個物理扇區中,當發生掉電等異常時候為剛寫完有效標志結構時,將會導致數據不能恢復或恢復錯誤。因為此時有效標志是正常的,而數據是破壞的,這樣在恢復數據時將導致恢復錯誤的數據。
有效標志結構包含主用區有效標志、主用區地址、數據長度和備用區有效標志等幾個字段。
其中“備用區有效標志”字段是有效標志結構的最后一個字段,這樣設置避免了當在寫備用區的有效標志結構時發生掉電等異常時導致數據恢復的錯誤。如果“備用區有效標志”字段不是有效標志結構的最后一個字段,假如最后一個字段是“數據長度”字段,那么當掉電發生在剛剛寫完“備用區有效標志”字段時,此時“備用區有效標志”字段有效,但“數據長度”字段是非法值,這將導致數據恢復錯誤。
其中,當主用區的數據出現異常時,此時就需要通過備用區的數據來恢復主用區的數據,通過字段主用區地址可確定主用區的地址;字段數據長度則用于確定主用區需要恢復的數據的長度。
步驟602,將數據寫入備用區,即,將主用區當前的數據和待寫的數據整合后的數據寫入備用區;備用區的數據是主用區數據所在扇區的所有數據,而不僅僅是備份待寫入的數據,從而避免掉電時數據不能完全恢復。
備用區的數據為備份主用區數據所在扇區的所有數據。假設主用區扇區的當前的數據如圖1所示,若要改寫的數據是數據1,如果僅僅是備份了數據1,而數據2沒有備份,如果剛好擦除了主用區扇區時就發生了掉電,此時主用區的數據為全無效,主用區的數據如圖2所示,但因只備份了數據1,而沒有備份數據2,備用區的數據如圖3所示,如果需要數據恢復就只能恢復數據1,恢復后的主用區的數據如圖4所示,丟失了數據2,而這是不允許的。如果在備用區備份了主用區扇區的所有數據就可以避免上述問題。
備份主用區扇區的所有數據后的備用區如圖5所示,如果發生掉電能夠恢復所有的數據。備份主用區所在扇區的所有數據的方法是備份從主用區扇區的開始到主用區扇區的結束的區域內的所有數據。
步驟603,改寫有效標志結構,將“主用區有效標志”字段填無效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填有效。
在每次對FLASH進行操作或系統復位的時候都要判斷該有效標志結構,如果備用區有效,則把備用區的數據恢復到主用區。
a)在系統重啟初始化時要檢測所有的備用區是否有效,如果有效,就把備用區的數據回寫到主用區,同時把備用區置為無效。
b)在每次寫FLASH的時候都要檢測備用區是否有效,如果有效,就把備用區的數據回寫到主用區。
經過上面的操作能夠保證每次在對FLASH操作前,FLASH的數據都是有效的。
步驟604,將數據寫入主用區,即,將備用區當前的數據和待寫的數據整合后的數據寫入主用區;該步驟具體為首先獲得目的地址所在的扇區的數據,該目的地址為要寫入數據的主用區的地址;然后把主用區扇區中待寫入的目的地址區域的數據用待寫的數據替代,這樣就整合了老的數據和待寫的數據,生成整合數據,最后把整合數據再寫入到FLASH的主用區。
步驟605,改寫有效標志結構,將“主用區有效標志”字段填有效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填無效。
如果步驟605成功完成,那么就結束了FLASH芯片的本次寫操作。
采用以上步驟,有效保證了FLASH芯片的數據安全性,使得在出現掉電等異常時FLASH的數據仍是有效的或者數據可恢復的;在上述任一步驟發生掉電等異常情況時,數據都是可恢復的。若掉電等異常情況發生在步驟602,那么這時備用區的數據是無效的,有效標志結構的“主用區有效標志”字段仍然是有效,即以主用區的數據為準,主用區的數據是有效的;若掉電等異常情況發生在步驟603,那么這時備用區的數據是有效的,有效標志結構的“主用區有效標志”字段仍然是有效,主用區的數據是有效的;若掉電等異常情況發生在步驟604,那么這時備用區的數據是有效的,有效標志結構的“主用區有效標志”字段為無效,“備用區有效標志”字段置為有效,即以備用區的數據為準,數據恢復后主用區的數據是有效的。
請參閱圖7所示,為本發明實現數據安全性算法的流程示意圖;結合圖6,該算法流程具體包括如下步驟步驟701,開始;步驟702,把數據寫入備用區,即,將主用區當前的數據和待寫的數據整合后的數據寫入備用區;步驟703,改寫有效標志結構,“主用區有效標志”字段填無效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填有效;步驟704,把數據寫入主用區,即,將備用區當前的數據和待寫的數據整合后的數據寫入主用區;步驟705,改寫有效標志結構,“主用區有效標志”字段填有效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填無效;步驟706,結束。
請參閱圖8所示,為本發明當發生異常時實現數據恢復的流程示意圖。結合圖6,該流程具體包括如下步驟步驟801,開始;步驟802,判斷“主用區有效標志”字段是否為無效,若無效,繼續步驟803,若有效,轉至步驟806;步驟803,判斷“備用區有效標志”字段是否為有效,若有效,繼續步驟804,若無效,轉至步驟806;步驟804,把數據回寫到主用區,即,將備用區當前的數據和待寫的數據整合后的數據寫入主用區;步驟805,修改有效標志結構,“主用區有效標志”字段填有效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填無效;步驟806,結束。
下面以傳輸設備中系統應用部分對FLASH芯片的寫操作來對本發明作進一步的詳細說明。
從網管上對傳輸設備的一些設置參數一般保存在FLASH芯片中,假設保存這些設置參數的FLASH芯片為512K,物理扇區為4K,邏輯扇區為256個字節。在一個物理扇區內存在2種設置參數的信息,分別分布在不同的邏輯扇區內。假設這2個設置參數分別是“設置同步定時源”和“設置外時鐘位置”。并假設當前進行的是“設置同步定時源”操作。對FLASH芯片的寫操作實現的過程具體如下(1),先將數據寫到備用區(即將主用區當前的數據和待寫的數據整合后的數據寫入備用區),備用區的數據是主用區數據所在扇區的所有數據。
當系統收到網管的“設置同步定時源”命令時,需要把設置的數據保存到FLASH。這時備用區備份了“設置同步定時源”和“設置外時鐘位置”兩個命令的設置參數,如果這時發生異常,異常恢復后數據以主用區的數據為準,不會發生數據異常。
(2),改寫有效標志結構,將“主用區有效標志”字段填無效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填有效。
這時備用區已經成功的備份了主用區的“設置同步定時源”和“設置外時鐘位置”兩個命令的設置參數,如果這時發生異常,異常恢復后數據以主用區的數據為準,因為還沒有對主用區數據進行操作,所以不會發生數據異常。
(3),將數據寫入到主用區(即將備用區當前的數據和待寫的數據整合后的數據寫入主用區)。
這時對主用區進行操作先擦除后寫入。如果這時發生異常,主用區的“設置同步定時源”和“設置外時鐘位置”兩個命令的設置參數可能都是錯誤的數據,有效標志結構中的“備用區有效標志”字段已經設置為有效,所以異常恢復后數據以備用區的數據為準,并把備用區數據恢復到主用區,因為備用區把主用區的所有數據都進行了備份,所以不會發生數據異常。
(4),改寫有效標志結構,將“主用區有效標志”字段填有效,“主用區地址”字段填主用區的數據所占的第一個扇區的起始地址,“數據長度”字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,“備用區有效標志”字段填無效。
如果這時發生異常,主用區的“設置同步定時源”和“設置外時鐘位置”兩個命令的設置參數已經是正常的數據,不會發生數據異常。
完成上述過程后,在上述任何一步中系統發生異常,數據都是可以恢復的,從而實現了當FLASH的物理扇區和邏輯扇區不一致時也能保證數據是安全的目的。
當然,本發明還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。
權利要求
1.一種實現FLASH芯片數據安全的方法,其特征在于,包括步驟一,將FLASH芯片劃分為用于存放有效標志結構的標志區、備用區和主用區,該有效標志結構包含主用區有效標志字段、主用區地址字段、數據長度字段和備用區有效標志字段;步驟二,將所述主用區當前的數據和待寫的數據整合后的數據寫入所述備用區,并改寫所述有效標志結構的字段設置;及步驟三,將所述備用區當前的數據和待寫的數據整合后的數據寫入所述主用區,并改寫所述有效標志結構的字段設置。
2.根據權利要求1所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟一中,所述備用區有效標志字段為所述有效標志結構的最后一個字段。
3.根據權利要求1所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟二中,還包括一備份所述主用區數據所在扇區數據的步驟,具體為備份從所述主用區扇區的開始到所述主用區扇區的結束區域內的數據。
4.根據權利要求1所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟二中的改寫所述有效標志結構的字段設置步驟具體為將所述主用區有效標志字段填無效,所述主用區地址字段填主用區的數據所占的第一個扇區的起始地址,所述數據長度字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,所述備用區有效標志字段填有效。
5.根據權利要求1、2、3或4所述的實現FLASH芯片數據安全的方法,其特征在于,在所述步驟三之前還包括一判斷所述主用區有效標志字段是否為無效的步驟。
6.根據權利要求5所述的實現FLASH芯片數據安全的方法,其特征在于,當所述主用區有效標志字段為無效時,還包括一判斷所述備用區有效標志字段是否為有效的步驟,若為有效,則繼續所述步驟三。
7.根據權利要求1、2、3或4所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟三中,還包括一對所述主用區進行先擦除后寫入的步驟。
8.根據權利要求1、2、3或4所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟三中的將所述備用區當前的數據和待寫的數據整合后的數據寫入所述主用區的步驟又包括獲取要寫入數據至所述主用區的地址所在的扇區的數據;將該主用區的地址區域的數據替代為所述備用區中的數據,生成整合數據;及寫入所述整合數據至所述主用區。
9.根據權利要求1、2、3或4所述的實現FLASH芯片數據安全的方法,其特征在于,所述步驟三中的改寫所述有效標志結構的字段設置步驟具體為將所述主用區有效標志字段填有效,所述主用區地址字段填主用區的數據所占的第一個扇區的起始地址,所述數據長度字段填主用區的數據所占的最后一個扇區的下一個扇區的起始地址減去主用區的數據所占的第一個扇區的起始地址,所述備用區有效標志字段填無效。
10.根據權利要求1、2、3或4所述的實現FLASH芯片數據安全的方法,其特征在于,所述標志區為一個或多個物理扇區。
全文摘要
本發明公開了一種實現FLASH芯片數據安全的方法,其特征在于,包括步驟一,將FLASH芯片劃分為用于存放有效標志結構的標志區、備用區和主用區,該有效標志結構包含主用區有效標志字段、主用區地址字段、數據長度字段和備用區有效標志字段;步驟二,將主用區當前的數據和待寫的數據整合后的數據寫入備用區,并改寫有效標志結構的字段設置;及步驟三,將所述備用區當前的數據和待寫的數據整合后的數據寫入所述主用區,并改寫所述有效標志結構的字段設置。本發明是一種能夠有效保證FLASH芯片數據安全的方法,該方法克服了現有技術對FLASH寫操作存在的數據破壞的缺點,使得系統在出現掉電等異常情況時仍可恢復FLASH的數據。
文檔編號G06F11/14GK101079010SQ200610011998
公開日2007年11月28日 申請日期2006年5月25日 優先權日2006年5月25日
發明者管冬根, 李小偉 申請人:中興通訊股份有限公司
網(wang)友詢(xun)問(wen)留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1