本發(fā)明涉及flash從節(jié)點(diǎn)控制技術(shù)領(lǐng)域,具體涉及基于norflash的寬帶載波從節(jié)點(diǎn)控制方法。
背景技術(shù):
目前,在寬帶載波中一般都采用flash來(lái)存儲(chǔ)數(shù)據(jù)信息,但傳統(tǒng)的norflash算法中,若要修改flash中的已有任何數(shù)據(jù),都要先將整塊flash中的全部數(shù)據(jù)讀到RAM芯片中,然后在RAM芯片中將數(shù)據(jù)修改好,并同時(shí)擦除整塊flash中的全部原有數(shù)據(jù),然后再將在RAM芯片中已修改好的數(shù)據(jù)寫(xiě)入到flash中去。
目前這種對(duì)flash中已有數(shù)據(jù)的修改存在如下不足,
如果flash中已有數(shù)據(jù)量較大,大量數(shù)據(jù)的搬移無(wú)疑會(huì)給系統(tǒng)帶來(lái)風(fēng)險(xiǎn),如果關(guān)鍵數(shù)據(jù)在搬移過(guò)程中出錯(cuò)就可能導(dǎo)致系統(tǒng)癱瘓。并且每次修改flash中的已有數(shù)據(jù)都會(huì)對(duì)整塊flash進(jìn)行一次擦除,如果頻繁修改flash中的數(shù)據(jù),則必然會(huì)較快的讓flash達(dá)到擦除次數(shù)的上限而導(dǎo)致flash壞掉,從而縮短了flash的使用壽命。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明是為了解決現(xiàn)有flash對(duì)已有數(shù)據(jù)的修改存在的上述不足,提供一種采用多開(kāi)扇區(qū),只將要修改的新數(shù)據(jù)存儲(chǔ)到flash的新扇區(qū)中,同時(shí)將flash原扇區(qū)中的原數(shù)據(jù)設(shè)置為無(wú)效,而不需要對(duì)整塊flash中的全部數(shù)據(jù)進(jìn)行搬移、擦除和存儲(chǔ),靈活性好,安全性高的基于norflash的寬帶載波從節(jié)點(diǎn)控制方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
基于norflash的寬帶載波從節(jié)點(diǎn)控制方法,包括flash芯片和與flash芯片連接的RAM芯片,所述flash芯片包括若干個(gè)扇區(qū),寬帶載波從節(jié)點(diǎn)控制方法如下:
(1)、初始化flash芯片;
步驟(1-1-1)、上電后讀取所有flash扇區(qū)的數(shù)據(jù),查詢(xún)出有效的從節(jié)點(diǎn)數(shù)據(jù),將有效的從節(jié)點(diǎn)數(shù)據(jù)保存在RAM芯片中,并同時(shí)將該有效的從節(jié)點(diǎn)數(shù)據(jù)在flash中的地址也保存在RAM芯片中,以便刪除從節(jié)點(diǎn)時(shí)能確定該從節(jié)點(diǎn)在flash中的地址;
步驟(1-1-2)、每讀1個(gè)扇區(qū)就統(tǒng)計(jì)該扇區(qū)內(nèi)總的從節(jié)點(diǎn)個(gè)數(shù)和有效的從節(jié)點(diǎn)個(gè)數(shù),并將統(tǒng)計(jì)的該扇區(qū)總的從節(jié)點(diǎn)個(gè)數(shù)和有效從節(jié)點(diǎn)個(gè)數(shù)的數(shù)據(jù)保存在RAM芯片中;并查詢(xún)出當(dāng)前可直接寫(xiě)入的flash地址,并將該當(dāng)前可直接寫(xiě)入的flash地址也保存到RAM芯片中;
步驟(1-1-3)、確保有1個(gè)以上已經(jīng)擦除的備用扇區(qū),第一次上電要擦除至少兩個(gè)扇區(qū);
(2)、添加flash芯片的從節(jié)點(diǎn)
步驟(1-2-1)、將新的從節(jié)點(diǎn)數(shù)據(jù)寫(xiě)入當(dāng)前可直接寫(xiě)入的flash地址,計(jì)算下1個(gè)新的從節(jié)點(diǎn)的flash地址,當(dāng)前flash地址加上從節(jié)點(diǎn)信息長(zhǎng)度即可得到下1個(gè)從節(jié)點(diǎn)地址,若不跨扇區(qū),則下1個(gè)新的從節(jié)點(diǎn)即可用這個(gè)地址;
步驟(1-2-2)、若跨扇區(qū),比較所有扇區(qū)的有效從節(jié)點(diǎn)個(gè)數(shù),選出有效從節(jié)點(diǎn)個(gè)數(shù)最少的扇區(qū),將該扇區(qū)所有有效的從節(jié)點(diǎn)數(shù)據(jù)讀出并存入備用扇區(qū),并保存當(dāng)前可直接寫(xiě)入的flash地址到RAM芯片中;最后擦除該扇區(qū)作為下一次存入的一個(gè)備用扇區(qū);
(3)刪除flash芯片的從節(jié)點(diǎn);
根據(jù)從節(jié)點(diǎn)保存在RAM芯片中的flash地址,將該flash地址開(kāi)始的從節(jié)點(diǎn)信息長(zhǎng)度的flash區(qū)域?qū)憺?以判斷刪除該從節(jié)點(diǎn),然后清除掉該從節(jié)點(diǎn)在RAM芯片中對(duì)應(yīng)的數(shù)據(jù)和地址,并將RAM芯片中該地址后面的數(shù)據(jù)和地址依次向前移動(dòng)一個(gè)地址。
該方法采用多開(kāi)扇區(qū),只將要修改的新數(shù)據(jù)存儲(chǔ)到flash的新扇區(qū)中,不需要對(duì)整塊flash中的全部數(shù)據(jù)進(jìn)行搬移、擦除和存儲(chǔ)。有效的避免了大量數(shù)據(jù)搬移和頻繁擦除flash的問(wèn)題。靈活性好,結(jié)構(gòu)簡(jiǎn)單,使用方便,可靠性好,安全性高。
作為優(yōu)選,設(shè)flash芯片共包括5個(gè)扇區(qū),并設(shè)flash芯片的這5個(gè)扇區(qū)分別為flash_1、flash_2、flash_3、flash_4和flash_5;
設(shè)flash_1的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為3個(gè);
設(shè)flash_2的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為2個(gè);
設(shè)flash_3的總節(jié)點(diǎn)個(gè)數(shù)為2個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為2個(gè);
設(shè)flash_4的總節(jié)點(diǎn)個(gè)數(shù)為0個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為0個(gè);
設(shè)flash_5的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為4個(gè);
如果當(dāng)前可直接寫(xiě)入的flash地址為flash_3全FF的起始地址;
若flash_3寫(xiě)滿(mǎn)后比較所有flash有效從節(jié)點(diǎn)個(gè)數(shù),因?yàn)閒lash_2中的有效從節(jié)點(diǎn)個(gè)數(shù)最少,則將flash_2中有效的從節(jié)點(diǎn)讀出寫(xiě)入flash_4,并保存當(dāng)前可直接寫(xiě)入的flash地址到RAM芯片;最后擦除flash_2新的做備用扇區(qū);
假如當(dāng)前flash_5的第一個(gè)節(jié)點(diǎn)是有效從節(jié)點(diǎn),若要?jiǎng)h除flash_5中的第一個(gè)有效從節(jié)點(diǎn),則刪除將該flash地址開(kāi)始的從節(jié)點(diǎn)信息長(zhǎng)度的flash區(qū)域?qū)憺?以判斷刪除該從節(jié)點(diǎn),然后將該從節(jié)點(diǎn)在RAM芯片中對(duì)應(yīng)的地址清除,并將RAM芯片中該地址后面的數(shù)據(jù)和地址依次向前移動(dòng)一個(gè)地址。
作為優(yōu)選,在步驟(1-2-2)中,若有兩個(gè)以上扇區(qū)中的有效從節(jié)點(diǎn)個(gè)數(shù)相等,則按順時(shí)針?lè)较虿檎液笳业降牡谝粋€(gè)有效從節(jié)點(diǎn)個(gè)數(shù)最少的扇區(qū)作為要讀出所有有效的從節(jié)點(diǎn)的扇區(qū)。
作為優(yōu)選,在所述的5個(gè)扇區(qū)中的每個(gè)flash扇區(qū)都分別包括A存儲(chǔ)區(qū)、B存儲(chǔ)區(qū)、C存儲(chǔ)區(qū)和D存儲(chǔ)區(qū),并且A存儲(chǔ)區(qū)的存儲(chǔ)容量小于B存儲(chǔ)區(qū)的存儲(chǔ)容量,C存儲(chǔ)區(qū)的存儲(chǔ)容量小于D存儲(chǔ)區(qū)的存儲(chǔ)容量;當(dāng)要向某個(gè)flash扇區(qū)內(nèi)存儲(chǔ)數(shù)據(jù)時(shí),將數(shù)據(jù)存在B存儲(chǔ)區(qū)中或D存儲(chǔ)區(qū)中,將該flash扇區(qū)內(nèi)的總節(jié)點(diǎn)個(gè)數(shù)和有效從節(jié)點(diǎn)個(gè)數(shù)的節(jié)點(diǎn)數(shù)信息存儲(chǔ)在A(yíng)存儲(chǔ)區(qū)中或C存儲(chǔ)區(qū)中。
作為優(yōu)選,若某個(gè)flash扇區(qū)的B存儲(chǔ)區(qū)出現(xiàn)磁導(dǎo)損壞,則將該對(duì)應(yīng)的B存儲(chǔ)區(qū)設(shè)為數(shù)據(jù)不可存儲(chǔ)區(qū),當(dāng)有數(shù)據(jù)要申請(qǐng)使用數(shù)據(jù)不可存儲(chǔ)區(qū)時(shí),則有磁導(dǎo)損壞的這個(gè)B存儲(chǔ)區(qū)拒絕存儲(chǔ)該數(shù)據(jù),并自動(dòng)將該數(shù)據(jù)轉(zhuǎn)存到與該B存儲(chǔ)區(qū)在同一個(gè)flash扇區(qū)內(nèi)的D存儲(chǔ)區(qū)中去。
作為優(yōu)選,若某個(gè)flash扇區(qū)的A存儲(chǔ)區(qū)出現(xiàn)磁導(dǎo)損壞,則將該對(duì)應(yīng)的A存儲(chǔ)區(qū)設(shè)為節(jié)點(diǎn)數(shù)不可存儲(chǔ)區(qū),當(dāng)要記錄節(jié)點(diǎn)數(shù)信息而要申請(qǐng)使用節(jié)點(diǎn)數(shù)不可存儲(chǔ)區(qū)時(shí),則有磁導(dǎo)損壞的這個(gè)A存儲(chǔ)區(qū)拒絕存儲(chǔ)該節(jié)點(diǎn)數(shù)信息的記錄,并自動(dòng)將該節(jié)點(diǎn)數(shù)信息的記錄轉(zhuǎn)存到與該A存儲(chǔ)區(qū)在同一個(gè)flash扇區(qū)內(nèi)的C存儲(chǔ)區(qū)中去。
作為優(yōu)選,當(dāng)同一個(gè)flash扇區(qū)內(nèi)的A存儲(chǔ)區(qū)、B存儲(chǔ)區(qū)、C存儲(chǔ)區(qū)和D存儲(chǔ)區(qū)這四個(gè)存儲(chǔ)區(qū)中有三個(gè)存儲(chǔ)區(qū)內(nèi)出現(xiàn)磁導(dǎo)損壞時(shí),則將這四個(gè)存儲(chǔ)區(qū)所在的這個(gè)flash扇區(qū)設(shè)為不可用扇區(qū),當(dāng)把某個(gè)flash扇區(qū)被設(shè)為不可用扇區(qū)時(shí),則該flash扇區(qū)不再接受數(shù)據(jù)使用的申請(qǐng)和節(jié)點(diǎn)數(shù)記錄的申請(qǐng),并將該不可用的flash扇區(qū)的地址信息存儲(chǔ)到RAM芯片中。
作為優(yōu)選,A存儲(chǔ)區(qū)的存儲(chǔ)容量等于C存儲(chǔ)區(qū)的存儲(chǔ)容量,B存儲(chǔ)區(qū)的存儲(chǔ)容等于D存儲(chǔ)區(qū)的存儲(chǔ)容量。
作為優(yōu)選,預(yù)先設(shè)定不同數(shù)據(jù)類(lèi)型存儲(chǔ)所需要的安全存儲(chǔ)閾值;并設(shè)定高于安全存儲(chǔ)閾值的數(shù)據(jù)在存儲(chǔ)時(shí)需要存儲(chǔ)在兩個(gè)扇區(qū)中,并設(shè)定高于安全存儲(chǔ)閾值的數(shù)據(jù)在一個(gè)扇區(qū)中被刪除后在另一個(gè)扇區(qū)中要延后并自動(dòng)刪除的時(shí)間長(zhǎng)度。
這種方法能夠保證數(shù)據(jù)的安全性和可靠性,也讓數(shù)據(jù)存儲(chǔ)更加靈活。對(duì)于不重要的數(shù)據(jù)就把安全存儲(chǔ)閾值設(shè)高點(diǎn),對(duì)于重要的數(shù)據(jù)就把安全存儲(chǔ)閾值設(shè)低點(diǎn),靈活性好,可靠性高。
作為優(yōu)選,當(dāng)要向flash芯片存儲(chǔ)數(shù)據(jù)時(shí),先判斷所要存儲(chǔ)的數(shù)據(jù)類(lèi)型,然后根據(jù)預(yù)先設(shè)定的對(duì)應(yīng)數(shù)據(jù)類(lèi)型的安全存儲(chǔ)閾值來(lái)判斷是否需要將該要存儲(chǔ)的數(shù)據(jù)存儲(chǔ)在5個(gè)扇區(qū)中的一個(gè)扇區(qū)中還是將該要存儲(chǔ)的數(shù)據(jù)同時(shí)存儲(chǔ)在5個(gè)扇區(qū)中的任一兩個(gè)扇區(qū)中;當(dāng)要存儲(chǔ)的數(shù)據(jù)的安全存儲(chǔ)閾值小于該數(shù)據(jù)類(lèi)型所對(duì)應(yīng)的安全存儲(chǔ)閾值時(shí),則可將該數(shù)據(jù)存儲(chǔ)到5個(gè)扇區(qū)中的任何一個(gè)扇區(qū)中;當(dāng)要存儲(chǔ)的數(shù)據(jù)的安全存儲(chǔ)閾值大于或等于該數(shù)據(jù)類(lèi)型所對(duì)應(yīng)的安全存儲(chǔ)閾值時(shí),則需要將該數(shù)據(jù)同時(shí)存儲(chǔ)到5個(gè)扇區(qū)中的任一兩個(gè)扇區(qū)中;當(dāng)要?jiǎng)h除安全存儲(chǔ)閾值小于設(shè)定值的數(shù)據(jù)時(shí),則將該數(shù)據(jù)直接從其所在扇區(qū)中完全刪除;當(dāng)要?jiǎng)h除安全存儲(chǔ)閾值在設(shè)定值以上的數(shù)據(jù)時(shí),則先將該數(shù)據(jù)直接從兩個(gè)扇區(qū)中的一個(gè)扇區(qū)中刪除,存儲(chǔ)在另一個(gè)扇區(qū)中的該數(shù)據(jù)需要人工干預(yù)才能刪除或者在設(shè)定時(shí)間后自動(dòng)刪除。
本發(fā)明能夠達(dá)到如下效果:
本發(fā)明采用多開(kāi)扇區(qū),只將要修改的新數(shù)據(jù)存儲(chǔ)到flash的新扇區(qū)中,不需要對(duì)整塊flash中的全部數(shù)據(jù)進(jìn)行搬移、擦除和存儲(chǔ)。有效的避免了大量數(shù)據(jù)搬移和頻繁擦除flash的問(wèn)題。靈活性好,結(jié)構(gòu)簡(jiǎn)單,使用方便,可靠性好,安全性高。
附圖說(shuō)明
圖1是本發(fā)明使用時(shí)的一種使用狀態(tài)示意圖。
圖2是本發(fā)明flash的一種示意圖。
圖3是本發(fā)明使用時(shí)的另一種使用狀態(tài)示意圖。
圖4是本發(fā)明RAM芯片與flash芯片連接的一種示意框圖。
圖5是本發(fā)明flash芯片5個(gè)扇區(qū)的每個(gè)flash扇區(qū)都分別包括A存儲(chǔ)區(qū)、B存儲(chǔ)區(qū)、C存儲(chǔ)區(qū)和D存儲(chǔ)區(qū)這四個(gè)存儲(chǔ)區(qū)的一種連接結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面通過(guò)實(shí)施例,并結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步具體的說(shuō)明。
實(shí)施例1:基于norflash的寬帶載波從節(jié)點(diǎn)控制方法,參見(jiàn)圖1、圖2、圖3、圖4所示,包括flash芯片和與flash芯片連接的RAM芯片,所述flash芯片包括若干個(gè)扇區(qū),寬帶載波從節(jié)點(diǎn)控制方法如下:
(1)、初始化flash芯片;
步驟(1-1-1)、上電后讀取所有flash扇區(qū)的數(shù)據(jù),查詢(xún)出有效的從節(jié)點(diǎn)數(shù)據(jù),將有效的從節(jié)點(diǎn)數(shù)據(jù)保存在RAM芯片中,并同時(shí)將該有效的從節(jié)點(diǎn)數(shù)據(jù)在flash中的地址也保存在RAM芯片中,以便刪除從節(jié)點(diǎn)時(shí)能確定該從節(jié)點(diǎn)在flash中的地址;
步驟(1-1-2)、每讀1個(gè)扇區(qū)就統(tǒng)計(jì)該扇區(qū)內(nèi)總的從節(jié)點(diǎn)個(gè)數(shù)和有效的從節(jié)點(diǎn)個(gè)數(shù),并將統(tǒng)計(jì)的該扇區(qū)總的從節(jié)點(diǎn)個(gè)數(shù)和有效從節(jié)點(diǎn)個(gè)數(shù)的數(shù)據(jù)保存在RAM芯片中;并查詢(xún)出當(dāng)前可直接寫(xiě)入的flash地址,并將該當(dāng)前可直接寫(xiě)入的flash地址也保存到RAM芯片中;
步驟(1-1-3)、確保有1個(gè)以上已經(jīng)擦除的備用扇區(qū),第一次上電要擦除至少兩個(gè)扇區(qū);
(2)、添加flash芯片的從節(jié)點(diǎn)
步驟(1-2-1)、將新的從節(jié)點(diǎn)數(shù)據(jù)寫(xiě)入當(dāng)前可直接寫(xiě)入的flash地址,計(jì)算下1個(gè)新的從節(jié)點(diǎn)的flash地址,當(dāng)前flash地址加上從節(jié)點(diǎn)信息長(zhǎng)度即可得到下1個(gè)從節(jié)點(diǎn)地址,若不跨扇區(qū),則下1個(gè)新的從節(jié)點(diǎn)即可用這個(gè)地址;
步驟(1-2-2)、若跨扇區(qū),比較所有扇區(qū)的有效從節(jié)點(diǎn)個(gè)數(shù),選出有效從節(jié)點(diǎn)個(gè)數(shù)最少的扇區(qū),將該扇區(qū)所有有效的從節(jié)點(diǎn)數(shù)據(jù)讀出并存入備用扇區(qū),并保存當(dāng)前可直接寫(xiě)入的flash地址到RAM芯片中;最后擦除該扇區(qū)作為下一次存入的一個(gè)備用扇區(qū);
(3)刪除flash芯片的從節(jié)點(diǎn);
根據(jù)從節(jié)點(diǎn)保存在RAM芯片中的flash地址,將該flash地址開(kāi)始的從節(jié)點(diǎn)信息長(zhǎng)度的flash區(qū)域?qū)憺?以判斷刪除該從節(jié)點(diǎn),然后清除掉該從節(jié)點(diǎn)在RAM芯片中對(duì)應(yīng)的數(shù)據(jù)和地址,并將RAM芯片中該地址后面的數(shù)據(jù)和地址依次向前移動(dòng)一個(gè)地址。
該方法采用多開(kāi)扇區(qū),只將要修改的新數(shù)據(jù)存儲(chǔ)到flash的新扇區(qū)中,不需要對(duì)整塊flash中的全部數(shù)據(jù)進(jìn)行搬移、擦除和存儲(chǔ)。有效的避免了大量數(shù)據(jù)搬移和頻繁擦除flash的問(wèn)題。結(jié)構(gòu)簡(jiǎn)單,使用方便,可靠性好,安全性高。
設(shè)flash芯片共包括5個(gè)扇區(qū),并設(shè)flash芯片的這5個(gè)扇區(qū)分別為flash_1、flash_2、flash_3、flash_4和flash_5;
設(shè)flash_1的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為3個(gè);
設(shè)flash_2的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為2個(gè);
設(shè)flash_3的總節(jié)點(diǎn)個(gè)數(shù)為2個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為2個(gè);
設(shè)flash_4的總節(jié)點(diǎn)個(gè)數(shù)為0個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為0個(gè);
設(shè)flash_5的總節(jié)點(diǎn)個(gè)數(shù)為8個(gè)、有效從節(jié)點(diǎn)個(gè)數(shù)為4個(gè);
如果當(dāng)前可直接寫(xiě)入的flash地址為flash_3全FF的起始地址;
若flash_3寫(xiě)滿(mǎn)后比較所有flash有效從節(jié)點(diǎn)個(gè)數(shù),因?yàn)閒lash_2中的有效從節(jié)點(diǎn)個(gè)數(shù)最少,則將flash_2中有效的從節(jié)點(diǎn)讀出寫(xiě)入flash_4,并保存當(dāng)前可直接寫(xiě)入的flash地址到RAM芯片;最后擦除flash_2新的做備用扇區(qū);
假如當(dāng)前flash_5的第一個(gè)節(jié)點(diǎn)是有效從節(jié)點(diǎn),若要?jiǎng)h除flash_5中的第一個(gè)有效從節(jié)點(diǎn),則刪除將該flash地址開(kāi)始的從節(jié)點(diǎn)信息長(zhǎng)度的flash區(qū)域?qū)憺?以判斷刪除該從節(jié)點(diǎn),然后將該從節(jié)點(diǎn)在RAM芯片中對(duì)應(yīng)的地址清除,并將RAM芯片中該地址后面的數(shù)據(jù)和地址依次向前移動(dòng)一個(gè)地址。
在步驟(1-2-2)中,若有兩個(gè)以上扇區(qū)中的有效從節(jié)點(diǎn)個(gè)數(shù)相等,則按順時(shí)針?lè)较虿檎液笳业降牡谝粋€(gè)有效從節(jié)點(diǎn)個(gè)數(shù)最少的扇區(qū)作為要讀出所有有效的從節(jié)點(diǎn)的扇區(qū)。
參見(jiàn)圖5所示,在所述的5個(gè)扇區(qū)中的每個(gè)flash扇區(qū)都分別包括A存儲(chǔ)區(qū)S1、B存儲(chǔ)區(qū)S2、C存儲(chǔ)區(qū)S3和D存儲(chǔ)區(qū)S4,并且A存儲(chǔ)區(qū)的存儲(chǔ)容量小于B存儲(chǔ)區(qū)的存儲(chǔ)容量,C存儲(chǔ)區(qū)的存儲(chǔ)容量小于D存儲(chǔ)區(qū)的存儲(chǔ)容量。A存儲(chǔ)區(qū)的存儲(chǔ)容量等于C存儲(chǔ)區(qū)的存儲(chǔ)容量,B存儲(chǔ)區(qū)的存儲(chǔ)容等于D存儲(chǔ)區(qū)的存儲(chǔ)容量。當(dāng)要向某個(gè)flash扇區(qū)內(nèi)存儲(chǔ)數(shù)據(jù)時(shí),將數(shù)據(jù)存在B存儲(chǔ)區(qū)中或D存儲(chǔ)區(qū)中,將該flash扇區(qū)內(nèi)的總節(jié)點(diǎn)個(gè)數(shù)和有效從節(jié)點(diǎn)個(gè)數(shù)的節(jié)點(diǎn)數(shù)信息存儲(chǔ)在A(yíng)存儲(chǔ)區(qū)中或C存儲(chǔ)區(qū)中。
若某個(gè)flash扇區(qū)的B存儲(chǔ)區(qū)出現(xiàn)磁導(dǎo)損壞,則將該對(duì)應(yīng)的B存儲(chǔ)區(qū)設(shè)為數(shù)據(jù)不可存儲(chǔ)區(qū),當(dāng)有數(shù)據(jù)要申請(qǐng)使用數(shù)據(jù)不可存儲(chǔ)區(qū)時(shí),則有磁導(dǎo)損壞的這個(gè)B存儲(chǔ)區(qū)拒絕存儲(chǔ)該數(shù)據(jù),并自動(dòng)將該數(shù)據(jù)轉(zhuǎn)存到與該B存儲(chǔ)區(qū)在同一個(gè)flash扇區(qū)內(nèi)的D存儲(chǔ)區(qū)中去。
若某個(gè)flash扇區(qū)的A存儲(chǔ)區(qū)出現(xiàn)磁導(dǎo)損壞,則將該對(duì)應(yīng)的A存儲(chǔ)區(qū)設(shè)為節(jié)點(diǎn)數(shù)不可存儲(chǔ)區(qū),當(dāng)要記錄節(jié)點(diǎn)數(shù)信息而要申請(qǐng)使用節(jié)點(diǎn)數(shù)不可存儲(chǔ)區(qū)時(shí),則有磁導(dǎo)損壞的這個(gè)A存儲(chǔ)區(qū)拒絕存儲(chǔ)該節(jié)點(diǎn)數(shù)信息的記錄,并自動(dòng)將該節(jié)點(diǎn)數(shù)信息的記錄轉(zhuǎn)存到與該A存儲(chǔ)區(qū)在同一個(gè)flash扇區(qū)內(nèi)的C存儲(chǔ)區(qū)中去。
當(dāng)同一個(gè)flash扇區(qū)內(nèi)的A存儲(chǔ)區(qū)、B存儲(chǔ)區(qū)、C存儲(chǔ)區(qū)和D存儲(chǔ)區(qū)這四個(gè)存儲(chǔ)區(qū)中有三個(gè)存儲(chǔ)區(qū)內(nèi)出現(xiàn)磁導(dǎo)損壞時(shí),則將這四個(gè)存儲(chǔ)區(qū)所在的這個(gè)flash扇區(qū)設(shè)為不可用扇區(qū),當(dāng)把某個(gè)flash扇區(qū)被設(shè)為不可用扇區(qū)時(shí),則該flash扇區(qū)不再接受數(shù)據(jù)使用的申請(qǐng)和節(jié)點(diǎn)數(shù)記錄的申請(qǐng),并將該不可用的flash扇區(qū)的地址信息存儲(chǔ)到RAM芯片中。
本實(shí)施例1采用多開(kāi)扇區(qū),只將要修改的新數(shù)據(jù)存儲(chǔ)到flash的新扇區(qū)中,不需要對(duì)整塊flash中的全部數(shù)據(jù)進(jìn)行搬移、擦除和存儲(chǔ)。有效的避免了大量數(shù)據(jù)搬移和頻繁擦除flash的問(wèn)題。靈活性好,結(jié)構(gòu)簡(jiǎn)單,使用方便,可靠性好。
實(shí)施例2,實(shí)施例2與實(shí)施例1的不同之處在于,
預(yù)先設(shè)定不同數(shù)據(jù)類(lèi)型存儲(chǔ)所需要的安全存儲(chǔ)閾值;并設(shè)定高于安全存儲(chǔ)閾值的數(shù)據(jù)在存儲(chǔ)時(shí)需要存儲(chǔ)在兩個(gè)扇區(qū)中,并設(shè)定高于安全存儲(chǔ)閾值的數(shù)據(jù)在一個(gè)扇區(qū)中被刪除后在另一個(gè)扇區(qū)中要延后并自動(dòng)刪除的時(shí)間長(zhǎng)度。
當(dāng)要向flash芯片存儲(chǔ)數(shù)據(jù)時(shí),先判斷所要存儲(chǔ)的數(shù)據(jù)類(lèi)型,然后根據(jù)預(yù)先設(shè)定的對(duì)應(yīng)數(shù)據(jù)類(lèi)型的安全存儲(chǔ)閾值來(lái)判斷是否需要將該要存儲(chǔ)的數(shù)據(jù)存儲(chǔ)在5個(gè)扇區(qū)中的一個(gè)扇區(qū)中還是將該要存儲(chǔ)的數(shù)據(jù)同時(shí)存儲(chǔ)在5個(gè)扇區(qū)中的任一兩個(gè)扇區(qū)中。
當(dāng)要存儲(chǔ)的數(shù)據(jù)的安全存儲(chǔ)閾值小于該數(shù)據(jù)類(lèi)型所對(duì)應(yīng)的安全存儲(chǔ)閾值時(shí),則可將該數(shù)據(jù)存儲(chǔ)到5個(gè)扇區(qū)中的任何一個(gè)扇區(qū)中。
當(dāng)要存儲(chǔ)的數(shù)據(jù)的安全存儲(chǔ)閾值大于或等于該數(shù)據(jù)類(lèi)型所對(duì)應(yīng)的安全存儲(chǔ)閾值時(shí),則需要將該數(shù)據(jù)同時(shí)存儲(chǔ)到5個(gè)扇區(qū)中的任一兩個(gè)扇區(qū)中。
當(dāng)要?jiǎng)h除安全存儲(chǔ)閾值小于設(shè)定值的數(shù)據(jù)時(shí),則將該數(shù)據(jù)直接從其所在扇區(qū)中完全刪除。
當(dāng)要?jiǎng)h除安全存儲(chǔ)閾值在設(shè)定值以上的數(shù)據(jù)時(shí),則先將該數(shù)據(jù)直接從兩個(gè)扇區(qū)中的一個(gè)扇區(qū)中刪除,存儲(chǔ)在另一個(gè)扇區(qū)中的該數(shù)據(jù)需要人工干預(yù)才能刪除或者在設(shè)定時(shí)間后自動(dòng)刪除。
例如,當(dāng)數(shù)據(jù)U的安全存儲(chǔ)閾值小于設(shè)定值時(shí),則只需將數(shù)據(jù)U存儲(chǔ)到flash_1扇區(qū)中,在刪除flash_1扇區(qū)中的數(shù)據(jù)U時(shí)則將flash_1扇區(qū)中的數(shù)據(jù)U全部刪除。
當(dāng)數(shù)據(jù)U的安全存儲(chǔ)閾值在設(shè)定值以上時(shí),則需要將數(shù)據(jù)U同時(shí)存儲(chǔ)到flash_1扇區(qū)中和flash_2扇區(qū)中,在刪除flash_1扇區(qū)中的數(shù)據(jù)U時(shí),flash_2扇區(qū)中的數(shù)據(jù)U暫時(shí)不刪除,如果數(shù)據(jù)U在設(shè)定的時(shí)間內(nèi)沒(méi)有被用戶(hù)從flash_2扇區(qū)中主動(dòng)刪除,則該數(shù)據(jù)U在設(shè)定的時(shí)間后會(huì)自動(dòng)從flash_2扇區(qū)中刪除。
實(shí)施例2的這種方法能夠保證數(shù)據(jù)的安全性和可靠性,也讓數(shù)據(jù)存儲(chǔ)更加靈活。對(duì)于不重要的數(shù)據(jù)就把安全存儲(chǔ)閾值設(shè)高點(diǎn),對(duì)于重要的數(shù)據(jù)就把安全存儲(chǔ)閾值設(shè)低點(diǎn),靈活性好,可靠性高。
上面結(jié)合附圖描述了本發(fā)明的實(shí)施方式,但實(shí)現(xiàn)時(shí)不受上述實(shí)施例限制,本領(lǐng)域普通技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變化或修改。