專利名稱:非線性閃存的壞塊管理方法及裝置的制作方法
技術領域:
本發明涉及存儲空間的壞塊管理技術,尤其涉及 一 種一 'f線性閃存
(NandFlash)的壞塊管理方法及裝置。
背景技術:
隨著現代信息社會的飛速發展,手機等終端設備逐漸成為人們工作、生活 中必不可少的通信工具。隨著終端對信息的存儲要求越來越高,非線性閃存 (NandFlash)以大容量、低成本等優勢,在終端中的應用越來越廣泛,NandFlash 可以存儲數據,也可以存儲代碼。由于NandFlash在出廠時,就會有一定的壞 塊存在,這些出廠時就存在的壞塊被稱之為出廠壞塊,而NandFlash在使用的 過程中,也容易產生壞塊。 一旦產生壞塊,就會對NandFlash的讀寫等操作造 成影響,因此,對NandFlash的壞塊管理就顯得非常必要。
現有技術中對NandFlash進行壞塊管理,是采用遇到壞塊就跳過的方式來 處理的。但是這種管理方法,在用于終端的固件升級過程中,由于無法對產生 的壞塊進行正常的數據或代碼更新操作,從而也就無法避免壞塊的產生對固件 升級所造成的影響,導致終端的固件升級效率較低,甚至容易造成終端的固件 升級失敗。
發明內容
有鑒于此,本發明的主要目的在于提供一種非線性閃存的壞塊管理方法及 為達到上述目的,本發明的技術方案是這樣實現的
本發明提供了一種非線性閃存的壞塊管理方法,將非線性閃存的存儲空間 劃分為數據區和預留區,該方法包括對所述非線性閃存的數據區進行數據擦除或寫入搮:作時,獲取所產生的壞
塊信息;
根據所述壞塊信息,在所述非線性閃存的預留區中選取與所述壞塊相對應
的可用的替代塊;
對所選取的替代塊進行所述數據擦除或寫入操作。
所述獲取數據區中的壞塊信息,具體包括在進行所述數據擦除或寫入操 作時,如果所述操作至少兩次失敗,則確定所操作的數據塊為壞塊。
所述獲取數據區中的壞塊信息,進一步包括在所述壞塊對應的冗余區中 設置壞塊標識。
所述在非線性閃存的預留區中選取與壞塊相對應的可用的替代塊,具體包
括
在所述預留區中選取當前狀態為可用的替代塊; 將所選取的替代塊的物理地址記錄在所述壞塊對應的冗余區中。 所述對所選取的替代塊進行數據擦除或寫入操作,進一步包括在所述替
代塊對應的冗余區中將所述替代塊的當前狀態更新為已使用。
所述對所選取的替代塊進行數據擦除或寫入操作之后,該方法還包括在
對所述壞塊進行讀取操作時,根據所述壞塊對應的冗余區中所記錄的物理地址,
從所述物理地址對應的替代塊中讀取數據。
本發明還提供了一種非線性閃存的壞塊管理裝置,包括區域劃分模塊、
壞塊信息獲取模塊、替代塊選取模塊和替代塊操作模塊;其中,
所述區域劃分模塊,用于將非線性閃存的存儲空間劃分為數據區和預留區; 所述壞塊信息獲取模塊,用于在對非線性閃存的數據區進行數據擦除或寫
入操作時,獲取所產生的壞塊信息;
所述替代塊選取^t塊,用于根據所述壞塊信息,在所述非線性閃存的預留
區中選取與所述壞塊相對應的可用的替代塊;
所述替代塊操作模塊,用于對所選取的替代塊進行所述數據擦除或寫入操
作所述替代塊選取模塊還包括
替代塊選取子才莫塊,用于在所述預留區中選^^當前狀態為可用的替代塊; 物理地址記錄子模塊,用于將所選取的替代塊的物理地址記錄在所述壞塊 對應的冗余區中。 所述裝置還包括
數據讀取模塊,用于在對所述壞塊進行讀取操作時,根據所述壞塊對應的 冗余區中所記錄的物理地址,從所述物理地址對應的替代塊中讀耳又數據。
本發明所提供的非線性閃存的壞塊管理方法及裝置,對擦除和寫入操作造 成的壞塊進行替代,并在壞塊對應的冗余區記錄替代塊的物理地址,由替代塊 實現壞塊的^^除和寫入等操作。本發明中只需建立壞塊和替代塊的映射關系, 對替代塊的查找速度快;本發明的替代操作不會影響其他正常塊;且本發明應 用于終端的固件升級中,避免了壞塊的產生對固件升級所造成的影響,提高了 固件升級的效率。
圖1為本發明一種非線性閃存的壞塊管理方法的流程圖2為本發明實施例中對NandFlash進行壞塊4企測的流程圖3為本發明實施例中對NandFlash進刊3察除操:作的流程圖4為本發明實施例中對NandFlash進行寫操作的流程圖5為本發明一種非線性閃存的壞塊管理裝置的組成結構示意圖。
具體實施例方式
下面結合附圖和具體實施例對本發明的技術方案進一步詳細闡述。 本發明一種NandFlash的壞塊管理方法,將NandFlash的存儲空間劃分為 數據區和預留區,數據區用來存放數據,而預留區用來作為數據區中壞塊的替 代區域,代替數據區中的壞塊進行數據的存放。如圖l所示,該方法主要包括 以下步驟步驟IOI,終端對NandFlash的數據區進行數據擦除或寫入操作時,獲取所 產生的壞塊信息。
終端在對NandFlash的數據區進行數據擦除或寫入操作時,對于出廠壞塊 是采取直接跳過的方式,不對出廠壞塊進行數據的擦除和寫入操作。而在終端 對NandFlash的數據區進行數據擦除或寫入操作時,容易產生壞塊,通常在對 數據區中的某個數據塊進行至少兩次擦除操作失敗時,判定該數據塊為壞塊; 在對數據區中的某個數據塊進行至少兩次寫入才喿作失敗時,判定該數據塊為壞 塊。發現壞塊時,終端在壞塊對應的冗余區中設置壞塊標識,以標識對應的數 據塊為壞塊。
步驟102,終端根據所產生的壞塊信息,在NandFlash的預留區中選取與壞 塊相對應的可用的替代塊。
終端發現壞塊時,根據步驟101所獲取的壞塊信息,在NandFlash的預留 區中選取當前狀態為可用的替代塊,并將所選取的替代塊的物理地址記錄在壞 塊的冗余區中,從而形成了一個壞塊與對應替代塊的映射關系,此后對該壞塊 的數據擦除、寫入和讀取等操作都可以在壞塊對應的替代塊中實現。
本領域技術人員應當理解,數據區中塊與預留區中的塊存儲結構相同,所 選用替代塊的存儲容量不小于其所替代的壞塊。
另外,終端在所選取的替代塊對應的冗余區中,將替代塊的當前狀態更新 為已使用,從而在此后進行選取替代塊的操作時,不會再選取到這個當前狀態 為已使用的替代塊。
步驟103,終端對所選取的替代塊進行數據擦除或寫入操作。
在選取了與數據區中的壞塊所對應的替代塊后,終端可以對所選的替代塊 進行數據的擦除或寫入操作。
另外,在對替代塊進行數據的擦除或寫入操作之后,如果需要對壞塊進行 數據讀取操作,則終端可以根據壞塊對應的冗余區中所記錄的物理地址,查找 到與記錄的物理地址所對應的替代塊,并從對應的替代塊中讀取所需數據。
本發明中NandFlash的數據區在實際應用中也可以用來存放代碼,本發明中將用于存放代碼的數據區稱為代碼區。實際應用中,終端在進行固件升級的 過程中,要求對代碼區中所存儲的代碼進行更新,也就需要對代碼區進行塊的 擦除或寫入操作,操作過程容易產生壞塊,而將上述圖1所示的壞塊管理方法 應用于終端的固件升級過程中時,可以優化終端的固件升級過程,消除壞塊對 代碼區所造成的影響,提高固件升級的效率。下面對本發明終端固件升級的實 施例中的壞塊管理方法進行詳細闡述。
終端在固件升級的過程中,首先需要對NandFlash進行校驗,確定需要升 級的塊,并對需要升級的塊進行壞塊檢測。本發明實施例中對NandFlash進行 壞塊檢測的流程圖,如圖2所示,主要包括以下步驟
步驟201,對NandFlash的代碼區通過應用軟件進行塊的比較和校驗,確定 需要升級的代碼塊。
步驟202,對需要升級的代碼塊進行壞塊檢測,通過讀取代碼塊所對應冗 余區中的壞塊標識,判斷需要升級的代碼塊中是否存在壞塊,如果存在,則轉 到步驟203;否則,轉到步驟204。
步驟203,檢測并判斷壞塊是出廠壞塊還是非出廠壞塊,具體是根據壞塊 所對應冗余區中是否記錄有替代塊的物理地址來判定壞塊是否為出廠壞塊的。 如果冗余區中記錄有替代塊的物理地址,則判定壞塊不是出廠壞塊;如果冗余 區中沒有記錄替代塊的物理地址,則判定壞塊為出廠壞塊。
步驟204,將需要升級的代碼塊是否為壞塊、是否為出廠壞塊的檢測結果 上報給終端。對于出廠壞塊,終端在后續的升級過程中采取直接跳過的方式進 行處理;對于正常塊,終端在后續的升級過程中直接對代碼塊進行代碼擦除或 寫入操作;對于非出廠壞塊的壞塊,終端在后續的升級過程中對壞塊所對應的 替代塊進行代碼擦除或寫入操作。
在終端固件升級過程中,進行NandFlash的擦除或寫入操作時容易產生壞 塊,因此可以通過上述圖1所示的壞塊管理方法實現升級過程中的壞塊管理。 NandFlash擦除過程中的壞塊管理操作,如圖3所示,主要包括以下步驟
步驟301,在進行擦除操作時,通常在對某個代碼塊的擦除操作至少兩次失敗時,認定該代碼塊為壞塊;并在在壞塊對應的冗余區中設置壞塊標識,標 志為壞塊。
步驟302,在預留區中選取當前狀態為可用的替代塊。
終端讀取預留區中的替代塊狀態信息,從中選取當前狀態為可用的替代塊,
并將所選替代塊的物理地址記錄在壞塊對應的冗余區中。 步驟303,對所選替代塊進行擦除操作。
步驟304,在所選替代塊對應的冗余區中將替代塊的當前狀態更新為已使用。
NandFlash寫入過程中的壞塊管理操作,如圖4所示,主要包括以下步驟 步驟401,在進行寫入操作時,通常在對某個代碼塊的寫入操作至少兩次
失敗時,認定該代碼塊為壞塊;并在在壞塊對應的冗余區中設置壞塊標識,標
志為壞塊。
步驟402,在預留區中選取當前狀態為可用的替代塊。 終端讀取預留區中的替代塊狀態信息,從中選取當前狀態為可用的替代塊, 并將所選替代塊的物理地址記錄在壞塊對應的冗余區中。 步驟403,將更新后的代碼寫入替代塊中。
步驟404,在所選替代塊對應的冗余區中將替代塊的當前狀態更新為已使用。
由于實際應用中,NandFlash不具備片上執行(XIP, Execute In Place )能 力,因此在終端開機或者其他需要執行代碼的情況下,需要將NandFlash存放 的代碼搬移到RAM上執行。在代碼搬移的過程中,對代碼塊進行壞塊檢測, 遇到正常塊時,直接將代碼讀取到RAM中;遇到壞塊時,根據壞塊所對應冗 余區中是否記錄有替代塊的物理地址,判定壞塊是否為出廠壞塊,對于出廠壞 塊,直接跳過;對于非出廠壞塊的壞塊,則根據壞塊對應冗余區中所記錄的物 理地址,查找到與記錄的物理地址所對應的替代塊,并將替代塊中的代碼讀取 到RAM中。
為實現上述NandFlash的壞塊管理方法,本發明還提供了一種NandFlash
9的壞塊管理裝置,如圖5所示,該裝置包括區域劃分模塊IO、壞塊信息獲取 模塊20、替代塊選取模塊30和替代塊操作模塊40。其中,用于對NandFlash 的存儲空間進行數據區和預留區的劃分。壞塊信息獲取模塊20,連接區域劃分 模塊IO,用于在對NandFlash的數據區進行數據擦除或寫入操作時,獲取所產 生的壞塊信息。替代塊選取模塊30,連接區域劃分模塊10和壞塊信息獲耳^莫 塊20,用于根據壞塊信息,在NandFlash的預留區中選取與壞塊相對應的可用 的替代塊。替代塊操作模塊40,連接區域劃分模塊10和替代塊選取模塊30, 用于對所選取的替代塊進行數據擦除或寫入操作。
其中,替代塊選取模塊30包括相互連接的替代塊選取子模塊31和物理 地址記錄子模塊32。替代塊選取子模塊31,用于在預留區中選取當前狀態為可 用的替代塊。物理地址記錄子模塊32,用于將所選取的替代塊的物理地址記錄 在壞塊對應的冗余區中。
本發明的另一實施例所提供的NandFlash的壞塊管理裝置,在上述模塊的 基礎上還包括數據獲取模塊50,連接替代塊選取模塊30和替代塊操作模塊40, 用于在對壞塊進行讀取操作時,根據替代塊選取模塊30在壞塊對應的冗余區中 所記錄的物理地址,從物理地址所對應的替代塊中讀取替代塊操作模塊40所寫 入的數據。
本領域技術人員應當理解,圖5所示壞塊管理裝置是實現前述壞塊管理方 法的虛擬裝置,上述各^^莫塊的功能可參照圖1、圖2、圖3及圖4的相關描述來 理解,各模塊可通過相應的軟件及電路來實現。
以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
權利要求
1、一種非線性閃存的壞塊管理方法,其特征在于,將非線性閃存的存儲空間劃分為數據區和預留區,該方法包括對所述非線性閃存的數據區進行數據擦除或寫入操作時,獲取所產生的壞塊信息;根據所述壞塊信息,在所述非線性閃存的預留區中選取與所述壞塊相對應的可用的替代塊;對所選取的替代塊進行所述數據擦除或寫入操作。
2、 根據權利要求1所述非線性閃存的壞塊管理方法,其特征在于,所述獲 取數據區中的壞塊信息,具體包括在進行所述數據擦除或寫入操作時,如果 所述操作至少兩次失敗,則確定所操作的數據塊為壞塊。
3、 根據權利要求1或2所述非線性閃存的壞塊管理方法,其特征在于,所 述獲耳又數據區中的壞塊信息,進一步包括在所述壞塊對應的冗余區中設置壞 塊標識。
4、 根據權利要求1所述非線性閃存的壞塊管理方法,其特征在于,所述在 非線性閃存的預留區中選取與壞塊相對應的可用的替代塊,具體包括在所述預留區中選取當前狀態為可用的替代塊; 將所選取的替代塊的物理地址記錄在所述壞塊對應的冗余區中。
5、 根據權利要求1所述非線性閃存的壞塊管理方法,其特征在于,所述對 所選取的替代塊進行數據擦除或寫入操作,進一步包括在所述替代塊對應的 冗余區中將所述替代塊的當前狀態更新為已使用。
6、 根據權利要求1或5所述非線性閃存的壞塊管理方法,其特征在于,所 述對所選取的替代塊進行數據擦除或寫入操作之后,該方法還包括在對所述 壞塊進行讀取操作時,根據所述壞塊對應的冗余區中所記錄的物理地址,從所 述物理地址對應的替代塊中讀:f又數據。
7、 一種非線性閃存的壞塊管理裝置,其特征在于,包括區域劃分模塊、壞塊信息獲取模塊、替代塊選取模塊和替代塊操作模塊;其中,所述區域劃分模塊,用于將非線性閃存的存儲空間劃分為數據區和預留區; 所述壞塊信息獲取才莫塊,用于在對非線性閃存的數據區進行數據擦除或寫入操作時,獲取所產生的壞塊信息;所述替代塊選取模塊,用于根據所述壞塊信息,在所述非線性閃存的預留區中選取與所述壞塊相對應的可用的替代塊;所述替代塊操作模塊,用于對所選取的替代塊進行所述數據擦除或寫入操作。
8、 根據權利要求7所述非線性閃存的壞塊管理裝置,其特征在于,所述替 代塊選取模塊還包括替代塊選取子模塊,用于在所述預留區中選取當前狀態為可用的替代塊; 物理地址記錄子模塊,用于將所選取的替代塊的物理地址記錄在所述壞塊 對應的冗余區中。
9、 根據權利要求7或8所述非線性閃存的壞塊管理裝置,其特征在于,所 述裝置還包括數據讀取模塊,用于在對所述壞塊進行讀取操作時,根據所述壞塊對應的 冗余區中所記錄的物理地址,從所述物理地址對應的替代塊中讀取數據。
全文摘要
本發明公開了一種非線性閃存(NandFlash)的壞塊管理方法,將非線性閃存的存儲空間劃分為數據區和預留區,該方法包括對NandFlash的數據區進行數據擦除或寫入操作時,獲取所產生的壞塊信息;在NandFlash的預留區中選取與壞塊相對應的可用的替代塊;對所選取的替代塊進行數據擦除或寫入操作。本發明還公開了一種NandFlash的壞塊管理裝置,由替代塊實現壞塊的擦除和寫入等操作,只需建立壞塊和替代塊的映射關系,對替代塊的查找速度快;替代操作不會影響其他正常塊;且本發明應用于終端的固件升級中,避免了壞塊的產生對固件升級所造成的影響,提高了固件升級的效率。
文檔編號G06F12/06GK101593157SQ200810111330
公開日2009年12月2日 申請日期2008年5月27日 優先權日2008年5月27日
發明者徐金祿, 段紅樂, 王志慧, 謝仁艿 申請人:中興通訊股份有限公司