專利名稱:一種基于嵌入式設(shè)備閃存的參數(shù)管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式設(shè)備的參數(shù)記錄技術(shù),特別是指一種基于嵌入式設(shè)備閃 存的參數(shù)管理方法和系統(tǒng)。
背景技術(shù):
嵌入式電子設(shè)備一般沒有硬盤這樣的存儲(chǔ)設(shè)備,而是使用Flash閃存芯片、 小型閃存卡等專為嵌入式系統(tǒng)設(shè)計(jì)的存儲(chǔ)裝置。Flash閃存是目前嵌入式系統(tǒng)中 廣泛采用的主流存儲(chǔ)器,它的主要特點(diǎn)是按整體或塊單元4察除和按字節(jié)編程, 具有低功耗、高密度、小體積等優(yōu)點(diǎn)。
目前,F(xiàn)lash閃存分為或非(NOR)和與非(NAND)兩種類型。NOR型 Flash閃存可以直接讀取閃存芯片內(nèi)存儲(chǔ)的數(shù)據(jù),因而運(yùn)行速度比較快;NOR 型Flash閃存芯片的地址線與數(shù)據(jù)線是分開的,所以它可以像靜態(tài)隨機(jī)存儲(chǔ)器 (SRAM, Static Random Access Memory) —樣連在數(shù)據(jù)線上,以字為基本單位 進(jìn)行操作,因此傳輸效率很高;應(yīng)用程序可以直接在NOR型Flash閃存內(nèi)運(yùn)行, 不必再把代碼讀取到系統(tǒng)P遺機(jī)存儲(chǔ)器(RAM, Random Access Memory )中運(yùn)行。 NOR型Flash閃存芯片與SRAM的最大不同在于NOR型Flash閃存芯片重復(fù) 寫入時(shí)需要經(jīng)過擦除和寫入兩個(gè)過程,其中擦除以Flash塊為單位進(jìn)行,即擦 除操作至少需要擦除一個(gè)Flash塊的區(qū)域, 一個(gè)NOR型Flash塊區(qū)尺寸通常是 64K或128K,其中Flash塊區(qū)的大小是由Flash閃存的物理特性決定的。
嵌入式系統(tǒng)中的參數(shù)是要求非易失性的、可修改和可刪除的, 一般可以借 助通用的Flash文件系統(tǒng)的管理將參數(shù)以文件的形式存儲(chǔ)在Flash閃存上,以此 來實(shí)現(xiàn)參數(shù)的安全讀、寫、修改和刪除操作。通用的Flash文件系統(tǒng)如jffs2, 要求一個(gè)Flash分區(qū)至少包含五個(gè)Flash塊區(qū),以保證閃存的正常運(yùn)行,但實(shí)際上嵌入式系統(tǒng)的參數(shù)所占用的空間 一般只有幾十K,不需要用 一個(gè)專門的Flash 分區(qū)如此大的空間來存儲(chǔ)參數(shù),這樣,對(duì)于低成本的嵌入式電子設(shè)備,不利于 控制產(chǎn)品的價(jià)格。
另一種折中的做法是不使用通用的Flash文件系統(tǒng)管理參數(shù),而是在每 次參數(shù)變更時(shí)將Flash閃存中的所有參數(shù)備份到RAM中,然后擦除相應(yīng)的Flash 塊區(qū),最后將在RAM中更新了的參數(shù)和未改變的參數(shù)再寫入Flash塊區(qū),但這 種做法的問題在于即使僅改變一個(gè)參數(shù),也必須將整個(gè)Flash塊區(qū)擦除再重 新寫入,若擦除或?qū)懭脒^程中設(shè)備掉電,那么會(huì)因?yàn)闆]有通用Flash文件系統(tǒng) 的數(shù)據(jù)保護(hù)功能而導(dǎo)致參數(shù)的丟失;另外,NOR型Flash閃存的每個(gè)Flash塊 區(qū)的壽命大約為IO萬次擦寫,因此,這種方式會(huì)導(dǎo)致產(chǎn)品的使用年限縮短。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種記錄參數(shù)的方法和系統(tǒng),可以
明顯減少對(duì)Flash塊區(qū)的擦除次數(shù),減少參數(shù)所占用的Flash塊區(qū),增加閃存的
空間利用率,提高寫入或修改參數(shù)時(shí)的安全性。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
本發(fā)明提供了 一種基于嵌入式設(shè)備閃存的參數(shù)管理方法,該方法包括
將參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、參數(shù)長度字段和參數(shù)內(nèi)容
字段的格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將所述參數(shù)數(shù)據(jù)塊依次存入?yún)?shù)存
儲(chǔ)區(qū)中;
依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在所述參數(shù)存儲(chǔ)區(qū)中是否存在含有 相同參數(shù)ID的參數(shù),如果存在,則將所述檢索到的參數(shù)標(biāo)記為垃圾數(shù)據(jù),然后 判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);如果不存在,則判斷參數(shù)存 儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);
當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余空間能夠容納新參數(shù)時(shí),在所述參數(shù)存儲(chǔ)區(qū)中最后一 個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。
其中,所述參數(shù)存儲(chǔ)區(qū)位于閃存中一段連續(xù)的Flash區(qū)域,所述一段連續(xù)的Flash區(qū)域至少包含閃存的一個(gè)Flash塊區(qū)。
所述檢索在所述參數(shù)存儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù)為 從參數(shù)存儲(chǔ)區(qū)中的第 一個(gè)參數(shù)開始依據(jù)所述參數(shù)的存儲(chǔ)格式讀取參數(shù); 依據(jù)所述讀取的參數(shù)ID字段、參數(shù)長度字段、參數(shù)內(nèi)容字段和校驗(yàn)字段對(duì) 參數(shù)進(jìn)行校驗(yàn);如果校驗(yàn)錯(cuò)誤,則從當(dāng)前參數(shù)的參數(shù)ID字段結(jié)束處繼續(xù)讀取參 數(shù);如果校驗(yàn)正確,則判斷當(dāng)前參數(shù)和新參數(shù)的參數(shù)ID是否相同;如果相同, 則將該參數(shù)標(biāo)記為垃圾數(shù)據(jù);如果不同,則繼續(xù)讀取下一個(gè)參數(shù)。 當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余空間不能夠容納新參數(shù)時(shí),該方法還包括 將參數(shù)存儲(chǔ)區(qū)的參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài);
判斷整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù),如果能夠容納, 則在所述參數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù);如果不能夠 容納,則寫入4喿作失敗。
需要徹底刪除參數(shù)、或所述將參數(shù)存儲(chǔ)區(qū)的參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài) 時(shí),具體操作包括
將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到隨機(jī)存儲(chǔ)器RAM中,在 RAM中將所述垃圾數(shù)據(jù)刪除;
將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;
將所述RAM中刪除了垃圾數(shù)據(jù)的備份數(shù)據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在 的Flash塊區(qū)。
需要對(duì)參數(shù)進(jìn)行格式化時(shí),該方法還包括
將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到RAM中,在RAM中將 參數(shù)存儲(chǔ)區(qū)全部填充為OxFF;
將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;
將所述RAM中參數(shù)存儲(chǔ)區(qū)全部填充為OxFF的備份數(shù)據(jù)寫回到閃存中參數(shù) 存儲(chǔ)區(qū)所在的Flash塊區(qū)。
本發(fā)明還提供了 一種基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),該系統(tǒng)包括 參數(shù)處理模塊,用于將參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將所述參數(shù)數(shù) 據(jù)塊依次存入?yún)?shù)存儲(chǔ)區(qū)中;
參數(shù)ID判斷模塊,用于依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在所述參數(shù) 存儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù),并得到判斷結(jié)果;
第一判斷模塊,用于依據(jù)所述參數(shù)ID判斷模塊的判斷結(jié)果,將與新參數(shù)的 參數(shù)ID相同的參數(shù)標(biāo)記為垃圾數(shù)據(jù),還用于判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能 夠容納新參數(shù),并得到判斷結(jié)果;
參數(shù)寫入模塊,用于依據(jù)所述第一判斷模塊的判斷結(jié)果,在所述參數(shù)存儲(chǔ) 區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。
其中,所述參數(shù)ID判斷模塊包括
參數(shù)讀取子模塊,用于從參數(shù)存儲(chǔ)區(qū)中的第 一個(gè)參數(shù)開始依據(jù)所述參數(shù)的 存儲(chǔ)格式讀取參數(shù);
參數(shù)校驗(yàn)子模塊,用于依據(jù)所述讀取的參數(shù)ID字段、參數(shù)長度字段、參數(shù) 內(nèi)容字段和校驗(yàn)字段對(duì)參數(shù)進(jìn)行校驗(yàn),并得到校驗(yàn)結(jié)果;
參數(shù)ID比較子模塊,用于依據(jù)所述參數(shù)校驗(yàn)子模塊的校驗(yàn)結(jié)果,判斷當(dāng)前 參數(shù)和新參數(shù)的參數(shù)ID是否相同,得到判斷結(jié)果;并在當(dāng)前參數(shù)和新參數(shù)的參 數(shù)ID相同時(shí),將所述當(dāng)前參數(shù)標(biāo)記為垃圾數(shù)據(jù)。
該系統(tǒng)還包4舌
參數(shù)整理模塊,用于依據(jù)所述第一判斷模塊的判斷結(jié)果,將參數(shù)存儲(chǔ)區(qū)的 參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài);
第二判斷模塊,用于判斷整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新
參數(shù),并得到判斷結(jié)果。
其中,所述參數(shù)讀取子模塊,還用于依據(jù)所述參數(shù)校驗(yàn)子模塊的校驗(yàn)結(jié)果, 從當(dāng)前參數(shù)的參數(shù)ID字段結(jié)束處繼續(xù)讀取參數(shù);還用于依據(jù)所述參數(shù)ID比較 子模塊的判斷結(jié)果,繼續(xù)讀取下一個(gè)參數(shù);
所述參數(shù)寫入模塊,還用于依據(jù)所述第二判斷模塊的判斷結(jié)果,在所述參 數(shù)存儲(chǔ)區(qū)中最后 一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。該系統(tǒng)還包4舌
操作反饋模塊,用于在所述參數(shù)寫入模塊寫入?yún)?shù)之后,或者依據(jù)所述第 二判斷模塊的判斷結(jié)果,反饋對(duì)參數(shù)的操作結(jié)果。
所述參數(shù)整理模塊包括
數(shù)據(jù)刪除子模塊,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到 RAM中,在RAM中將所述垃圾數(shù)據(jù)刪除;
第一擦除子模塊,用于將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;
第一寫入數(shù)據(jù)子模塊,用于將所述RAM中刪除了垃圾數(shù)據(jù)的備份數(shù)據(jù)寫 回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
該系統(tǒng)還包括
數(shù)據(jù)格式化模塊,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到 RAM中,在RAM中將參數(shù)存儲(chǔ)區(qū)全部填充為OxFF;
數(shù)據(jù)擦除模塊,用于將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;
寫入數(shù)據(jù)模塊,用于將所述RAM中參數(shù)存儲(chǔ)區(qū)全部填充為OxFF的備份數(shù) 據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
本發(fā)明對(duì)于嵌入式設(shè)備閃存中參數(shù)的管理,不使用通用的Flash文件系統(tǒng), 而是通過專門的Flash閃存驅(qū)動(dòng)將NOR型Flash閃存驅(qū)動(dòng)起來,然后將參數(shù)分 類,按照固定的格式儲(chǔ)存于閃存中,對(duì)參數(shù)進(jìn)行管理,如此,本發(fā)明的參數(shù)可 以存儲(chǔ)于閃存中任何一段連續(xù)的Flash塊區(qū),且參數(shù)存儲(chǔ)區(qū)的大小可以根據(jù)需 要設(shè)置,這樣,就節(jié)省了閃存空間,提高了閃存空間的利用率。
另外,通過本發(fā)明的方法,對(duì)參數(shù)進(jìn)行操作時(shí),不需要每次都對(duì)參數(shù)存儲(chǔ)
區(qū)所在的Flash塊區(qū)進(jìn)行擦除再重寫的操作,而是當(dāng)需要單獨(dú)地徹底刪除某個(gè)
參數(shù),或者在寫入?yún)?shù)、修改參數(shù)的過程中,當(dāng)前參數(shù)存儲(chǔ)區(qū)的剩余空間不夠
容納新參數(shù),需要將垃圾數(shù)據(jù)徹底刪除或需要格式化參數(shù)時(shí),才需要通過對(duì)
Flash塊區(qū)進(jìn)行擦除再重寫的方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)的徹底刪除或者格式化,如此就
可以減少對(duì)NOR型Flash閃存的擦除次數(shù),不僅可以延長閃存的使用壽命,而
且由于擦除、重寫次數(shù)的減少,可以降低擦除、重寫過程中因?yàn)榈綦姸鴮?dǎo)致參數(shù)丟失的風(fēng)險(xiǎn)。
本發(fā)明還提供了參數(shù)格式化的功能,使NOR型Flash閃存更具實(shí)用性。
圖1為本發(fā)明參數(shù)存儲(chǔ)區(qū)實(shí)施例一的結(jié)構(gòu)示意圖; 圖2為本發(fā)明參數(shù)存儲(chǔ)格式實(shí)施例一的結(jié)構(gòu)示意圖; 圖3為本發(fā)明寫入、修改參數(shù)的方法流程示意圖; 圖4為本發(fā)明刪除參^:的方法流程示意圖; 圖5為本發(fā)明格式化參數(shù)的方法流程示意圖6為本發(fā)明基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng)的結(jié)構(gòu)關(guān)系示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。
在通過專門Flash驅(qū)動(dòng)使Flash閃存能正常工作,并能為閃存提供寫入接口 , 使數(shù)據(jù)可以直接寫入閃存的條件下,本發(fā)明將參數(shù)進(jìn)行分類,并按照固定的格 式存入閃存中,對(duì)參數(shù)進(jìn)行管理。
本發(fā)明中,可以選擇NOR型Flash閃存中任意一段連續(xù)的Flash區(qū)域作為 參數(shù)存儲(chǔ)區(qū),參數(shù)存儲(chǔ)區(qū)相對(duì)于其所處的Flash塊起始位置的偏移地址為SA, 參數(shù)存儲(chǔ)區(qū)的大小可以根據(jù)實(shí)際情況設(shè)置,如可以設(shè)置為L,其中,參數(shù)依次 存放在參數(shù)存儲(chǔ)區(qū)中。圖1所示為本發(fā)明參數(shù)存儲(chǔ)區(qū)實(shí)施例一的結(jié)構(gòu)示意圖, 圖1中,SA是一個(gè)地址偏移,用來表示參數(shù)存儲(chǔ)區(qū)的開始地址;參數(shù)存儲(chǔ)區(qū)根 據(jù)其占用的空間大小,可以存在于一個(gè)Flash塊中,也可以跨越兩個(gè)或多個(gè)連 續(xù)的Flash塊,但是實(shí)際上,需要管理的全部參數(shù)一般只有幾十K,而一個(gè)NOR 型Flash塊的大d、一般為64K或128K,所以, 一般情況下一個(gè)參數(shù)存儲(chǔ)區(qū)最多 能跨越兩個(gè)連續(xù)的Flash塊。
圖2所示為本發(fā)明參數(shù)存儲(chǔ)格式實(shí)施例一的結(jié)構(gòu)示意圖,如圖2所示,將 每個(gè)參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、參數(shù)長度字段、參數(shù)內(nèi)容字段的格式封裝成一個(gè)數(shù)據(jù)塊,存儲(chǔ)到參數(shù)存儲(chǔ)區(qū)中。
其中,參數(shù)ID字段用來存儲(chǔ)參數(shù)ID,參數(shù)ID根據(jù)參數(shù)的分類來定義,參 數(shù)的分類可以根據(jù)需要設(shè)定。如,根據(jù)需要可以用十六進(jìn)制來設(shè)置參數(shù)ID, IP 地址類的參數(shù)對(duì)應(yīng)的參數(shù)ID可以定義為0x000A;子網(wǎng)掩碼類的參數(shù)對(duì)應(yīng)的參 數(shù)ID可以定義為0x000B;默認(rèn)網(wǎng)關(guān)類的參數(shù)對(duì)應(yīng)的參數(shù)ID可以定義為 0x000C。其中,對(duì)于IP地址類的參數(shù)還可以繼續(xù)分類,例如局域網(wǎng)1的IP地 址的參數(shù)ID可以定義為OxOOOAOOOl ,局域網(wǎng)2的I的IP地址可以定義為 0x000A0002等。
控制字段用來表示該參數(shù)的狀態(tài),當(dāng)控制字段為1時(shí),表明該參數(shù)為有效 數(shù)據(jù);控制字段為0時(shí),表明該參數(shù)為垃圾數(shù)據(jù)。
校驗(yàn)字段表示參數(shù)ID字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的校驗(yàn)和。
參數(shù)長度字段可以表示該參數(shù)所占用的空間大小,通過參數(shù)長度字段和SA 可以得到參數(shù)的結(jié)束位置,從而可以讀取參數(shù)內(nèi)容字段。參數(shù)的結(jié)束位置就是 參數(shù)內(nèi)容字段的結(jié)束位置,也是下一個(gè)參數(shù)的開始位置。
參數(shù)內(nèi)容字段包含了該參數(shù)的具體的內(nèi)容。
下面通過具體的實(shí)施例來說明本發(fā)明參數(shù)管理的方法。
本發(fā)明基于嵌入式設(shè)備的NOR型Flash閃存的參數(shù)管理可以分為寫入?yún)?數(shù)、修改參數(shù)、刪除參數(shù)和參數(shù)存儲(chǔ)區(qū)的格式化。
當(dāng)需要寫入新參數(shù)時(shí),首先要檢索閃存中是否存在與新參數(shù)的參數(shù)ID相同 的參數(shù)。圖3所示為本發(fā)明寫入、修改參數(shù)的方法流程示意圖,如圖3所示, 具體處理流程為
步驟301,按照參數(shù)的存儲(chǔ)位置讀取參數(shù),校驗(yàn)當(dāng)前讀取的參數(shù)。
從偏移地址SA開始,讀取參數(shù)存儲(chǔ)區(qū)中第一個(gè)參數(shù)的參數(shù)ID字段、控制字 段、校驗(yàn)字段和參數(shù)長度字段,并根據(jù)參數(shù)長度字段讀取參數(shù)內(nèi)容字段;然后 計(jì)算參數(shù)ID字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的校驗(yàn)和。校驗(yàn)和的計(jì)算為現(xiàn) 有技術(shù),此處不再贅述。
步驟302,判斷參數(shù)校驗(yàn)是否正確,如果錯(cuò)誤,執(zhí)行步驟303;如果正確,執(zhí)行步驟304。
將通過計(jì)算得到的參數(shù)ID字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的校驗(yàn)和與
讀取到的校驗(yàn)字段的校驗(yàn)和相比較,如果一致,說明該參數(shù)校驗(yàn)正確,執(zhí)行步
驟304;如果不一致,說明該參數(shù)校驗(yàn)錯(cuò)誤,則執(zhí)行步驟303,從當(dāng)前參數(shù)的參 數(shù)ID字段結(jié)束處繼續(xù)讀取參數(shù)。
如果校驗(yàn)錯(cuò)誤,說明該參數(shù)是無效的,即該參數(shù)是垃圾數(shù)據(jù),其控制字段 為O,如果校驗(yàn)正確,那么控制字段為l。當(dāng)參數(shù)校驗(yàn)錯(cuò)誤時(shí),無法確認(rèn)該參數(shù) 的參數(shù)長度字段是否有效,從而就無法確認(rèn)該參數(shù)的結(jié)束位置,無法從該參數(shù) 的結(jié)束處直接讀取下一個(gè)參數(shù)。此時(shí),需要從該參數(shù)的參數(shù)ID字段結(jié)束處繼續(xù) 讀取參數(shù),在該參數(shù)的參數(shù)內(nèi)容字段結(jié)束處,可以開始讀取下一個(gè)參數(shù),返回 步驟301。
需要指出的是,參數(shù)存儲(chǔ)區(qū)中可能存儲(chǔ)有參數(shù)ID相同的幾個(gè)參數(shù),這個(gè)幾 個(gè)參數(shù)中只有 一個(gè)參數(shù)是有效數(shù)據(jù),其他的都是垃圾數(shù)據(jù)。
步驟304 ~ 305,判斷當(dāng)前參數(shù)的參數(shù)ID與準(zhǔn)備寫入的新參數(shù)的參數(shù)ID是否 相同,如果相同,則將當(dāng)前參數(shù)標(biāo)記為垃圾數(shù)據(jù);如果不同,則執(zhí)行步驟306。
如果校驗(yàn)正確,那么要將當(dāng)前參數(shù)的參數(shù)ID與準(zhǔn)備寫入的新參數(shù)的參數(shù)ID 比較,判斷兩者是否相同,如果相同,說明新參數(shù)與當(dāng)前參數(shù)是同一類參數(shù), 只是參數(shù)內(nèi)容不同,執(zhí)行步驟305,將當(dāng)前參數(shù)的控制字段置為O,即將該參數(shù) 標(biāo)記為垃圾數(shù)據(jù),說明該參數(shù)已經(jīng)被視為無效,表明該垃圾數(shù)據(jù)被刪除,然后 執(zhí)行步驟306。需要指出的是,此處的刪除不是徹底刪除,當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余 空間不夠容納新參數(shù)時(shí),才需要將垃圾數(shù)據(jù)徹底刪除。
如果不同,則需要從當(dāng)前參數(shù)的參數(shù)內(nèi)容字段結(jié)束處開始讀取下一個(gè)參數(shù), 直到檢索到與新參數(shù)的參數(shù)ID相同的參數(shù),執(zhí)行步驟305 306;或者直到參數(shù)存 儲(chǔ)區(qū)結(jié)束處都沒有檢索到與新參數(shù)的參數(shù)ID相同的參數(shù),執(zhí)行步驟306。
步驟306,判斷參數(shù)存儲(chǔ)區(qū)剩余空間是否大于等于準(zhǔn)備寫入的新參數(shù)占用的 空間,如果小于,執(zhí)行步驟307;如果大于等于,執(zhí)行步驟310。
在當(dāng)前參數(shù)存儲(chǔ)區(qū)中如果沒有與新參數(shù)的參數(shù)ID相同的參數(shù),或者已經(jīng)將與新參數(shù)的參數(shù)ID相同的參數(shù)標(biāo)記為垃圾數(shù)據(jù),那么需要將新參數(shù)寫入?yún)?shù)存 儲(chǔ)區(qū)。但是,之前要先判斷目前參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù), 即判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否大于或等于新參數(shù)所占用的空間,如果小于,
則說明參數(shù)存儲(chǔ)區(qū)的剩余空間不能容納新參數(shù),執(zhí)行步驟3 07;如果大于或等于, 則說明參數(shù)存儲(chǔ)區(qū)的剩余空間可以容納新參數(shù),執(zhí)行步驟310。 步驟307,整理參數(shù)存儲(chǔ)區(qū),將垃圾數(shù)據(jù)刪除。
參數(shù)存儲(chǔ)區(qū)的剩余空間不能容納新參數(shù)時(shí),需要將參數(shù)存儲(chǔ)區(qū)進(jìn)行整理, 將垃圾數(shù)據(jù)徹底刪除,即將控制字段為O的無效參數(shù)徹底刪除。具體刪除參數(shù)的 流程將通過下面的實(shí)施例進(jìn)行說明。
步驟308~309,判斷參數(shù)存儲(chǔ)區(qū)剩余空間是否大于準(zhǔn)備寫入的新參數(shù)占用 的空間,如果小于,則提示寫入?yún)?shù)的操作失??;如果大于等于,執(zhí)行步驟310。
將垃圾數(shù)據(jù)徹底刪除后,再次判斷參數(shù)剩余空間是否能容納新參數(shù),如果 不能,則執(zhí)行步驟309,提示寫入?yún)?shù)的操作失敗,并結(jié)束整個(gè)流程;如果可以 容納,則執(zhí)行步驟310。
步驟310,在參數(shù)存儲(chǔ)區(qū)的最后一個(gè)參數(shù)結(jié)束處寫入新參數(shù)。
將垃圾數(shù)據(jù)徹底刪除后,且參數(shù)存儲(chǔ)區(qū)的剩余空間可以容納新參數(shù)時(shí),將 新參數(shù)寫入?yún)?shù)存儲(chǔ)區(qū)最后一個(gè)參數(shù)的參數(shù)內(nèi)容字段之后。本發(fā)明通過專門的
Flash閃存驅(qū)動(dòng)提供寫入接口 ,將參數(shù)寫入?yún)?shù)存儲(chǔ)區(qū)。 步驟311,提示操作成功。
寫入新參數(shù)成功后,提示寫入操作成功,并結(jié)束整個(gè)流程。
其中,在檢索到與新參數(shù)的參數(shù)ID相同的參數(shù)的情況下,將該參數(shù)標(biāo)記為
垃圾數(shù)據(jù),再將新參數(shù)寫入?yún)?shù)存儲(chǔ)區(qū)的操作也是修改參數(shù)的操作流程;在未
檢索到與新參數(shù)的參數(shù)ID相同的參數(shù)的情況下,將新參數(shù)寫入?yún)?shù)存儲(chǔ)區(qū)的操
作,是寫入?yún)?shù)的操作流程。
圖4所示為本發(fā)明刪除參數(shù)的方法流程示意圖,如圖4所示,具體的處理流
程為
步驟401,在參數(shù)存儲(chǔ)區(qū)檢索與準(zhǔn)備刪除的參數(shù)的參數(shù)ID相同的參數(shù)。具體的檢索過程如圖3中的步驟310至304。 步驟402,將該參數(shù)標(biāo)記為垃圾數(shù)據(jù)。
將當(dāng)前與準(zhǔn)備刪除的參數(shù)的參數(shù)ID相同的參數(shù)的控制字段置為O,表明該參 數(shù)被刪除。
需要指出的是,這里所述的刪除不是徹底的刪除,雖然將該參數(shù)標(biāo)記為垃 圾數(shù)據(jù),但是該參數(shù)還是占用了閃存空間,如果需要將垃圾數(shù)據(jù)徹底的刪除, 則執(zhí)行步驟403、 404。
步驟403,將參數(shù)存儲(chǔ)區(qū)所在的Flash塊的所有數(shù)據(jù)備份到RAM中,將參數(shù) 整理成無垃圾數(shù)據(jù)的狀態(tài)。
Flash閃存的物理特性決定,不能在閃存中直接將數(shù)據(jù)徹底刪除,此時(shí),需 要將參數(shù)存儲(chǔ)區(qū)所在的Flash塊的所有數(shù)據(jù)備份到RAM中,在RAM中,將參數(shù) 存儲(chǔ)區(qū)的垃圾數(shù)據(jù)刪除,這樣參數(shù)存儲(chǔ)區(qū)的參數(shù)就是無垃圾數(shù)據(jù)的狀態(tài)。
步驟404,在閃存中將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除,將整理后的RAM 中數(shù)據(jù)寫回參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
在RAM中,將參數(shù)整理成無垃圾狀態(tài)后,需要將包含無垃圾狀態(tài)參數(shù)的數(shù) 據(jù)重新寫回閃存中。此時(shí),需要先在閃存中將參數(shù)存儲(chǔ)區(qū)所在的Flash塊擦除, 然后再將整理后的數(shù)據(jù)寫回參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。如此,閃存的參數(shù)存 儲(chǔ)區(qū)中的垃圾數(shù)據(jù)就被徹底刪除了 。
需要指出的是,因?yàn)镹OR型Flash閃存的擦除是基于Flash塊的,所以,需要 將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)中的所有數(shù)據(jù)備份到RAM中,因?yàn)镕lash塊區(qū)中 可能不僅僅包含參數(shù)存儲(chǔ)區(qū),還可能有其他的數(shù)據(jù)。
由上面的描述可知,在寫入?yún)?shù)或修改參數(shù)的過程中,當(dāng)參數(shù)存儲(chǔ)區(qū)的剩 余空間不夠容納新參數(shù),而需要整理參數(shù)存儲(chǔ)區(qū),將垃圾數(shù)據(jù)徹底刪除時(shí),或 者單獨(dú)需要將某個(gè)參數(shù)徹底刪除時(shí),才需要通過對(duì)Flash塊區(qū)進(jìn)行擦除再重寫的 方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)的徹底刪除。
圖5所示為本發(fā)明格式化參數(shù)的方法流程示意圖。
步驟501,將參數(shù)存儲(chǔ)區(qū)所在的Flash塊的所有數(shù)據(jù)備份到RAM中。步驟502,在RAM中將參數(shù)存儲(chǔ)區(qū)全部填充為OxFF。
在RAM中將參數(shù)存儲(chǔ)區(qū)全部填充為0xFF,即將參數(shù)存儲(chǔ)區(qū)全部填充為二進(jìn) 制的l,本發(fā)明中將參數(shù)存儲(chǔ)區(qū)全部填充l即表示參數(shù)存儲(chǔ)區(qū)被置空。
步驟503,在閃存中將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除,將RAM中的數(shù)據(jù) 寫回閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
在閃存中將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除,然后再將包含全部填充為1 的參數(shù)存儲(chǔ)區(qū)的數(shù)據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。如此,閃存中 的參數(shù)存儲(chǔ)區(qū)為空,即表示被格式化。
圖6所示為本發(fā)明基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng)的結(jié)構(gòu)關(guān)系示意 圖,如圖6所示,該系統(tǒng)包括參數(shù)處理模塊IO、參數(shù)ID判斷模塊20、第一 判斷模塊30、參數(shù)寫入模塊40、參數(shù)整理模塊50、第二判斷模塊60、操作反 饋模塊70、數(shù)據(jù)格式化模塊80、數(shù)據(jù)擦除模塊90和寫入數(shù)據(jù)模塊91,其中,
參數(shù)處理模塊10,用于將參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、 參數(shù)長度字段和參數(shù)內(nèi)容字段的格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將參數(shù)數(shù) 據(jù)塊依次存入?yún)?shù)存儲(chǔ)區(qū)中;
其中,參數(shù)存儲(chǔ)區(qū)位于閃存中一段連續(xù)的Flash區(qū)域, 一段連續(xù)的Flash區(qū) 域至少包含閃存的 一個(gè)Flash塊區(qū)。
參數(shù)ID判斷模塊20,用于依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在參數(shù)存 儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù),并得到判斷結(jié)果。
參數(shù)ID判斷模塊20還包括參數(shù)讀取子模塊21、參數(shù)校驗(yàn)子模塊22和 參數(shù)ID比較子模塊23,其中,
參數(shù)讀取子模塊21 ,用于從參數(shù)存儲(chǔ)區(qū)中的第一個(gè)參數(shù)開始依據(jù)參數(shù)的存 儲(chǔ)格式讀取參數(shù);
參數(shù)校驗(yàn)子模塊22,用于依據(jù)讀取的參數(shù)ID字段、參數(shù)長度字段、參數(shù) 內(nèi)容字段和校驗(yàn)字段對(duì)參數(shù)進(jìn)行校驗(yàn),并得到校驗(yàn)結(jié)果;
參數(shù)ID比較子模塊23,用于依據(jù)參數(shù)校驗(yàn)子模塊22的校驗(yàn)結(jié)果,判斷當(dāng) 前參數(shù)和新參數(shù)的參數(shù)ID是否相同,并得到判斷結(jié)果;并在當(dāng)前參數(shù)和新參數(shù)的參數(shù)ID相同時(shí),將當(dāng)前參數(shù)標(biāo)記為垃圾數(shù)據(jù);
其中,參數(shù)讀取子模塊21,還用于依據(jù)參數(shù)校驗(yàn)子模塊22的校驗(yàn)結(jié)果, 從當(dāng)前參數(shù)的參數(shù)ID字段結(jié)束處繼續(xù)讀取參數(shù);還用于依據(jù)參數(shù)ID比較子模 塊23的判斷結(jié)果,繼續(xù)讀取下一個(gè)參數(shù)。
第一判斷模塊30,用于依據(jù)參數(shù)ID判斷模塊20的判斷結(jié)果,將與新參數(shù) 的參數(shù)ID相同的參數(shù)標(biāo)記為垃圾數(shù)據(jù),還用于判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否 能夠容納新參數(shù),并得到判斷結(jié)果。
參數(shù)寫入模塊40,用于依據(jù)第一判斷模塊30的判斷結(jié)果,在參數(shù)存儲(chǔ)區(qū) 中最后一個(gè)參數(shù)的結(jié)束位置寫入新參數(shù)。
參數(shù)整理模塊50,用于依據(jù)第一判斷模塊30的判斷結(jié)果,將參數(shù)存儲(chǔ)區(qū) 的參數(shù)整理成無垃圾lt據(jù)的狀態(tài)。
參數(shù)整理模塊50還包括數(shù)據(jù)刪除子模塊51、第一擦除子模塊52和第一 寫入數(shù)據(jù)子模塊53,其中,
數(shù)據(jù)刪除子模塊51 ,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份 到RAM中,在RAM中將垃圾數(shù)據(jù)刪除;
第一擦除子模塊52,用于將閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;
第一寫入數(shù)據(jù)子模塊53,用于將RAM中刪除了垃圾數(shù)據(jù)的備份數(shù)據(jù)寫回 到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
第二判斷模塊60,用于判斷整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納 新參數(shù),并得到判斷結(jié)果。
其中,參數(shù)寫入模塊40,還用于依據(jù)第二判斷模塊60的判斷結(jié)果,在參 數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入新參數(shù)。
操作反饋模塊70,用于在參數(shù)寫入模塊40寫入?yún)?shù)之后,或者依據(jù)第二 判斷模塊60的判斷結(jié)果,反饋對(duì)參數(shù)的操作結(jié)果,即當(dāng)寫入?yún)?shù)后,提示寫入 成功;或者當(dāng)整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間不能夠容納新參數(shù)時(shí),提示寫入 操作失敗。
數(shù)據(jù)格式化模塊80,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到RAM中,在RAM中將參數(shù)存儲(chǔ)區(qū)全部填充為0xFF。
數(shù)據(jù)擦除模塊90,用于將閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除。 寫入數(shù)據(jù)模塊91,用于將RAM中參數(shù)存儲(chǔ)區(qū)全部填充為OxFF的備份數(shù)
據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范
權(quán)利要求
1、一種基于嵌入式設(shè)備閃存的參數(shù)管理方法,其特征在于,該方法包括將參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將所述參數(shù)數(shù)據(jù)塊依次存入?yún)?shù)存儲(chǔ)區(qū)中;依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在所述參數(shù)存儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù),如果存在,則將所述檢索到的參數(shù)標(biāo)記為垃圾數(shù)據(jù),然后判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);如果不存在,則判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余空間能夠容納新參數(shù)時(shí),在所述參數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。
2、 根據(jù)權(quán)利要求1所述基于嵌入式設(shè)備閃存的參數(shù)管理方法,其特征在于, 所述參數(shù)存儲(chǔ)區(qū)位于閃存中一段連續(xù)的Flash區(qū)域,所述一段連續(xù)的Flash區(qū)域 至少包含閃存的一個(gè)Flash塊區(qū)。
3、 根據(jù)權(quán)利要求2所述基于嵌入式設(shè)備閃存的參數(shù)管理方法,其特征在于,從參數(shù)存儲(chǔ)區(qū)中的第 一個(gè)參數(shù)開始依據(jù)所述參數(shù)的存儲(chǔ)格式讀取參數(shù); 依據(jù)所述讀取的參數(shù)id字段、參數(shù)長度字段、參數(shù)內(nèi)容字段和校驗(yàn)字段對(duì) 參數(shù)進(jìn)行校驗(yàn);如果校驗(yàn)錯(cuò)誤,則從當(dāng)前參數(shù)的參數(shù)id字段結(jié)束處繼續(xù)讀取參 數(shù);如果校驗(yàn)正確,則判斷當(dāng)前參數(shù)和新參數(shù)的參數(shù)id是否相同;如果相同, 則將該參數(shù)標(biāo)記為垃圾數(shù)據(jù);如果不同,則繼續(xù)讀取下一個(gè)參數(shù)。
4、 根據(jù)權(quán)利要求3所述基于嵌入式設(shè)備閃存的參數(shù)管理方法,其特征在于, 當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余空間不能夠容納新參數(shù)時(shí),該方法還包括將參數(shù)存儲(chǔ)區(qū)的參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài);判斷整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù),如果能夠容納, 則在所述參數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù);如果不能夠容納,則寫入操作失敗。
5、 根據(jù)權(quán)利要求1至4任一項(xiàng)所述基于嵌入式設(shè)備閃存的參數(shù)管理方法, 其特征在于,需要徹底刪除參數(shù)、或所述將參數(shù)存儲(chǔ)區(qū)的參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài) 時(shí),具體操作包括將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到隨機(jī)存儲(chǔ)器RAM中,在 RAM中將所述垃圾數(shù)據(jù)刪除;將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;將所述RAM中刪除了垃圾數(shù)據(jù)的備份數(shù)據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在 的Flash塊區(qū)。
6、 根據(jù)權(quán)利要求1至4任一項(xiàng)所述基于嵌入式設(shè)備閃存的參數(shù)管理方法, 其特征在于,需要對(duì)參數(shù)進(jìn)行格式化時(shí),該方法還包括將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到RAM中,在RAM中將 參數(shù)存儲(chǔ)區(qū)全部填充為OxFF;將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除;將所述RAM中參數(shù)存儲(chǔ)區(qū)全部填充為OxFF的備份數(shù)據(jù)寫回到閃存中參數(shù) 存儲(chǔ)區(qū)所在的Flash塊區(qū)。
7、 一種基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在于,該系統(tǒng)包括 參數(shù)處理模塊,用于將參數(shù)按照參數(shù)ID字段、控制字段、校驗(yàn)字段、參數(shù)長度字段和參數(shù)內(nèi)容字段的格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將所述參數(shù)數(shù) 據(jù)塊依次存入?yún)?shù)存儲(chǔ)區(qū)中;參數(shù)ID判斷模塊,用于依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在所述參數(shù) 存儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù),并得到判斷結(jié)果;第一判斷模塊,用于依據(jù)所述參數(shù)ID判斷模塊的判斷結(jié)果,將與新參數(shù)的 參數(shù)ID相同的參數(shù)標(biāo)記為垃圾數(shù)據(jù),還用于判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能 夠容納新參數(shù),并得到判斷結(jié)果;參數(shù)寫入模塊,用于依據(jù)所述第一判斷模塊的判斷結(jié)果,在所述參數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。
8、 根據(jù)權(quán)利要求7所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在于, 所述參數(shù)ID判斷模塊包括參數(shù)讀取子模塊,用于從參數(shù)存儲(chǔ)區(qū)中的第 一個(gè)參數(shù)開始依據(jù)所述參數(shù)的 存儲(chǔ)格式讀取參數(shù);參數(shù)校驗(yàn)子模塊,用于依據(jù)所述讀取的參數(shù)ID字段、參數(shù)長度字段、參數(shù) 內(nèi)容字段和校驗(yàn)字段對(duì)參數(shù)進(jìn)行校驗(yàn),并得到校驗(yàn)結(jié)果;參數(shù)ID比較子模塊,用于依據(jù)所述參數(shù)校驗(yàn)子模塊的校驗(yàn)結(jié)果,判斷當(dāng)前 參數(shù)和新參數(shù)的參數(shù)ID是否相同,得到判斷結(jié)果;并在當(dāng)前參數(shù)和新參數(shù)的參 數(shù)ID相同時(shí),將所述當(dāng)前參數(shù)標(biāo)記為垃圾數(shù)據(jù)。
9、 根據(jù)權(quán)利要求8所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在于, 該系統(tǒng)還包括參數(shù)整理模塊,用于依據(jù)所述第一判斷模塊的判斷結(jié)果,將參數(shù)存儲(chǔ)區(qū)的 參數(shù)整理成無垃圾數(shù)據(jù)的狀態(tài);第二判斷模塊,用于判斷整理后的參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù),并得到判斷結(jié)果。
10、 根據(jù)權(quán)利要求7、 8或9所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其 特征在于,所述參數(shù)讀取子模塊,還用于依據(jù)所述參數(shù)校驗(yàn)子模塊的校驗(yàn)結(jié)果,從當(dāng) 前參數(shù)的參數(shù)ID字段結(jié)束處繼續(xù)讀取參數(shù);還用于依據(jù)所述參數(shù)ID比較子模 塊的判斷結(jié)果,繼續(xù)讀取下一個(gè)參^t;所述參數(shù)寫入模塊,還用于依據(jù)所述第二判斷模塊的判斷結(jié)果,在所述參 數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入所述新參數(shù)。
11、 根據(jù)權(quán)利要求IO所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在 于,該系統(tǒng)還包括操作反饋模塊,用于在所述參數(shù)寫入模塊寫入?yún)?shù)之后,或者依據(jù)所述第 二判斷模塊的判斷結(jié)果,反饋對(duì)參數(shù)的操作結(jié)果。
12、 根據(jù)權(quán)利要求11所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在 于,所述參數(shù)整理模塊包括數(shù)據(jù)刪除子模塊,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到RAM中,在RAM中將所述垃圾數(shù)據(jù)刪除;第一擦除子模塊,用于將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除; 第一寫入數(shù)據(jù)子模塊,用于將所述RAM中刪除了垃圾數(shù)據(jù)的備份數(shù)據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
13、 根據(jù)權(quán)利要求12所述基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),其特征在 于,該系統(tǒng)還包括數(shù)據(jù)格式化模塊,用于將參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)的所有數(shù)據(jù)備份到RAM中,在RAM中將參數(shù)存儲(chǔ)區(qū)全部填充為OxFF;數(shù)據(jù)擦除模塊,用于將所述閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)擦除; 寫入數(shù)據(jù)模塊,用于將所述RAM中參數(shù)存儲(chǔ)區(qū)全部填充為OxFF的備份數(shù)據(jù)寫回到閃存中參數(shù)存儲(chǔ)區(qū)所在的Flash塊區(qū)。
全文摘要
本發(fā)明公開了一種基于嵌入式設(shè)備閃存的參數(shù)管理方法,該方法將參數(shù)按照固定格式進(jìn)行封裝,獲得參數(shù)數(shù)據(jù)塊,并將參數(shù)數(shù)據(jù)塊依次存入?yún)?shù)存儲(chǔ)區(qū)中;依據(jù)準(zhǔn)備寫入的新參數(shù)的參數(shù)ID檢索在參數(shù)存儲(chǔ)區(qū)中是否存在含有相同參數(shù)ID的參數(shù),如果存在,則將當(dāng)前參數(shù)標(biāo)記為垃圾數(shù)據(jù),然后判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);如果不存在,則直接判斷參數(shù)存儲(chǔ)區(qū)的剩余空間是否能夠容納新參數(shù);當(dāng)參數(shù)存儲(chǔ)區(qū)的剩余空間能夠容納新參數(shù)時(shí),在參數(shù)存儲(chǔ)區(qū)中最后一個(gè)參數(shù)的結(jié)束位置寫入新參數(shù);本發(fā)明還公開了一種基于嵌入式設(shè)備閃存的參數(shù)管理系統(tǒng),通過該方法和系統(tǒng)可以提高閃存空間的利用率,延長閃存的使用壽命,提高寫入或修改參數(shù)時(shí)的安全性。
文檔編號(hào)G06F12/02GK101436158SQ20081024653
公開日2009年5月20日 申請(qǐng)日期2008年12月25日 優(yōu)先權(quán)日2008年12月25日
發(fā)明者高迎賓 申請(qǐng)人:中興通訊股份有限公司