1.一種NAND FLASH數(shù)據(jù)存儲方法,首先根據(jù)NAND FLASH的最小擦除單位為塊,塊由頁組成的特征,采用順序存儲的方式進(jìn)行數(shù)據(jù)存儲,當(dāng)存儲容量達(dá)到數(shù)據(jù)容量的最后一塊時,自動擦除第一塊存儲的數(shù)據(jù),同時在進(jìn)行數(shù)據(jù)存儲時,每個數(shù)據(jù)由若干個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊均包括數(shù)據(jù)索引區(qū)和有效數(shù)據(jù)區(qū),數(shù)據(jù)索引信息包括偏移地址、數(shù)據(jù)類型、數(shù)據(jù)塊類型、履歷信息和數(shù)據(jù)記錄狀態(tài),其特征在于,方法包括以下步驟:
1)獲取最新的記錄位置的步驟:
1.1)按順序讀取每一個塊的數(shù)據(jù)索引信息;
1.2)當(dāng)數(shù)據(jù)塊的數(shù)據(jù)索引區(qū)指示當(dāng)前塊為空塊時,停止搜索;記錄當(dāng)前地址,即為最新的記錄位置;
2)存儲的步驟:
2.1)每個數(shù)據(jù)塊的第0頁固定寫入數(shù)據(jù)索引信息,第1頁開始為有效數(shù)據(jù)區(qū);
2.2)首先在當(dāng)前塊的第0頁寫入數(shù)據(jù)索引信息,說明當(dāng)前數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型為文件起始塊,同時擦除下一數(shù)據(jù)塊,如果當(dāng)前塊為當(dāng)前存儲空間的最后一個塊,則下一數(shù)據(jù)塊為當(dāng)前存儲空間的第0塊;
2.3)當(dāng)數(shù)據(jù)超過一個塊時,在下一個數(shù)據(jù)塊的第0頁繼續(xù)寫入數(shù)據(jù)索引信息,并標(biāo)明當(dāng)前數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型為有效數(shù)據(jù)塊;
2.4)當(dāng)在寫入過程中發(fā)現(xiàn)寫入不正確時,自動將數(shù)據(jù)搬移到下一塊,同時將數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型標(biāo)識標(biāo)為壞塊;
3)數(shù)據(jù)循環(huán)存儲的步驟:當(dāng)數(shù)據(jù)寫入存儲空間的最后一個數(shù)據(jù)塊時,自動擦除存儲空間的第0個數(shù)據(jù)塊,同時標(biāo)注該數(shù)據(jù)塊的數(shù)據(jù)索引信息;
4)按履歷信息搜索并下載的步驟:
4.1)根據(jù)步驟2)所存儲的數(shù)據(jù)索引信息,得到當(dāng)前存儲數(shù)據(jù)的數(shù)據(jù)類型、數(shù)據(jù)塊類型、履歷信息,進(jìn)入步驟4.2);
4.2)如果數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型是文件起始塊,則進(jìn)入步驟4.3),否則繼續(xù)搜索下一個數(shù)據(jù)塊是否為文件起始塊;
4.3)判斷當(dāng)前塊存儲的數(shù)據(jù)索引信息中的履歷信息是否與要搜索并下載的履歷信息一致,如果一致則從當(dāng)前塊的第1頁開始下載當(dāng)前存儲的數(shù)據(jù),當(dāng)下載到下一個數(shù)據(jù)塊時,進(jìn)入步驟4.4);如果不一致,繼續(xù)在數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型為數(shù)據(jù)起始塊的數(shù)據(jù)塊中查找與下載的履歷信息一致的數(shù)據(jù)塊位置,直到找到位置,找到后從當(dāng)前塊的第1頁開始下載當(dāng)前存儲的數(shù)據(jù),當(dāng)下載到下一個數(shù)據(jù)塊時,進(jìn)入步驟4.4);如果當(dāng)前存儲空間的所有文件起始塊中的數(shù)據(jù)索引信息中的履歷信息均與下載的不一致,則進(jìn)行步驟4.5);
4.4)判斷下一個數(shù)據(jù)塊據(jù)索引信息的數(shù)據(jù)塊類型是否為有效數(shù)據(jù)塊,如果為有效數(shù)據(jù)塊,則重復(fù)4.3);
4.5)從第0塊開始判斷當(dāng)前塊存儲的數(shù)據(jù)索引信息中的履歷信息是否與要搜索并下載的履歷信息一致,并且數(shù)據(jù)索引信息中的數(shù)據(jù)塊類型為有效數(shù)據(jù)塊,直到找到一個有效數(shù)據(jù)塊并且履歷信息與需下載的履歷信息一致的數(shù)據(jù)塊,找到該數(shù)據(jù)塊塊后,則從當(dāng)前塊的第1頁開始下載當(dāng)前存儲的數(shù)據(jù),當(dāng)下載到下一個數(shù)據(jù)塊時,進(jìn)入步驟4.4);
5)NAND FLASH掉電時存儲的步驟:掉電時,在當(dāng)前數(shù)據(jù)塊的數(shù)據(jù)索引信息中的數(shù)據(jù)記錄狀態(tài)位置寫入掉電狀態(tài)信息,便于數(shù)據(jù)恢復(fù);
6)循環(huán)存儲后數(shù)據(jù)塊中剩余數(shù)據(jù)的恢復(fù)步驟:通過讀取每個數(shù)據(jù)塊的數(shù)據(jù)索引信息,雖然部分?jǐn)?shù)據(jù)因為循環(huán)存儲被覆蓋,但是由于每個數(shù)據(jù)塊均有履歷 信息,按步驟4.1)、4.3)和4.5)恢復(fù)一部分未被覆蓋的剩余的數(shù)據(jù)。