亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

NandFlash存儲(chǔ)器的訪問方法

文檔序號(hào):6487025閱讀:401來源:國(guó)知局
Nand Flash存儲(chǔ)器的訪問方法
【專利摘要】本發(fā)明涉及視頻數(shù)據(jù)的存儲(chǔ),公開了一種Nand?Flash存儲(chǔ)器的訪問方法。本發(fā)明中,將Nand?Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊,通過為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand?Flash存儲(chǔ)器空間中唯一的全局編號(hào),該編號(hào)隨著視頻數(shù)據(jù)的寫入不斷增加,實(shí)現(xiàn)對(duì)所述Nand?Flash存儲(chǔ)器的循環(huán)寫入,保證可以完全均衡地使用各個(gè)存儲(chǔ)塊,使得各個(gè)數(shù)據(jù)塊具有完全一致的使用率,從而使得Nand?Flash存儲(chǔ)介質(zhì)的使用壽命大大提高,同時(shí)能夠更高效地利用存儲(chǔ)空間和更高效地進(jìn)行視頻數(shù)據(jù)的訪問。
【專利說明】Nand Flash存儲(chǔ)器的訪問方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻數(shù)據(jù)的存儲(chǔ),特別涉及Nand Flash存儲(chǔ)器的訪問方法。
【背景技術(shù)】
[0002]車載視頻監(jiān)控近幾年得到了快速的發(fā)展和應(yīng)用。由于車輛在行駛過程中的震動(dòng),導(dǎo)致采用傳統(tǒng)的硬盤存儲(chǔ)技術(shù)的監(jiān)控產(chǎn)品面臨很大的問題。為了進(jìn)行抗震,許多公司都發(fā)明了各種各樣的硬盤減震技術(shù),但是應(yīng)用的效果一般,損壞率都比較高,使用成本高。隨著電子技術(shù)的迅猛發(fā)展,基于Nand Flash的存儲(chǔ)技術(shù)得到了廣泛的應(yīng)用,比如SD卡,USB磁盤等等。基于Nand Flash介質(zhì)的存儲(chǔ)體容量越來越大,價(jià)格越來越低,而且Nand Flash介質(zhì)存儲(chǔ)體的天然抗震特性,使得應(yīng)用到車載監(jiān)控領(lǐng)域進(jìn)行視頻類數(shù)據(jù)的存儲(chǔ)是一個(gè)必然的趨勢(shì)。但由于Nand Flash介質(zhì)每個(gè)數(shù)據(jù)塊寫入次數(shù)有限,大大影響了在車載領(lǐng)域的推廣。
[0003]由于車載監(jiān)控應(yīng)用的特點(diǎn),對(duì)存儲(chǔ)技術(shù)有一些特殊的需求:
[0004](I)由于應(yīng)用條件比較惡劣,電壓不穩(wěn)定或者任意情況下斷電,在這種情況下,數(shù)據(jù)不能丟失,特別是存儲(chǔ)系統(tǒng)不能不可用。
[0005](2)由于視頻數(shù)據(jù)在丟失一些情況下依然可用,那么要求該文件系統(tǒng)應(yīng)該在磁盤出現(xiàn)很多壞塊的情況下依然可用,必須具有一定的容錯(cuò)能力。
[0006](3)視頻數(shù)據(jù)量都非常巨大,如何能在海量數(shù)據(jù)里具有快速的數(shù)據(jù)讀寫能力。
[0007]面對(duì)上述需求,通用的文件系統(tǒng)是不能勝任的,因?yàn)闀?huì)很快地導(dǎo)致一些關(guān)鍵的數(shù)據(jù)塊出現(xiàn)損壞和掉電導(dǎo)致的損壞,從而導(dǎo)致文件系統(tǒng)不可用。也存在一些專門針對(duì)NandFlash介質(zhì)的文件存儲(chǔ)系統(tǒng),比如JFFS2、YAFFS2、TrueFFS,LogFS等等,但這些技術(shù)方案,適合于可靠性要求高的數(shù)據(jù)的存儲(chǔ),應(yīng)用于視頻這類可靠性要求不是很高的數(shù)據(jù)類型,存在存儲(chǔ)效率明顯偏低的問題。

【發(fā)明內(nèi)容】

[0008]本發(fā)明的目的在于提供一種Nand Flash存儲(chǔ)系統(tǒng)及訪問方法,使得Nand Flash存儲(chǔ)介質(zhì)的讀與次數(shù)大大提聞,從而更聞效地利用存儲(chǔ)空間。
[0009]為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種Nand Flash存儲(chǔ)器的訪問方法,包含以下步驟:
[0010]將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊;
[0011]為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),該編號(hào)隨著視頻數(shù)據(jù)的寫入不斷增加;
[0012]在需要存儲(chǔ)視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中;每次寫入所述視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)寫入已經(jīng)使用的數(shù)據(jù)塊中編號(hào)最大的數(shù)據(jù)塊的后面一個(gè)數(shù)據(jù)塊中;
[0013]在需要讀取視頻數(shù)據(jù)時(shí),根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)。[0014]本發(fā)明實(shí)施方式相對(duì)于現(xiàn)有技術(shù)而言,將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊,通過為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),該編號(hào)不斷增加,實(shí)現(xiàn)對(duì)所述Nand Flash存儲(chǔ)器的循環(huán)寫入,保證可以完全均衡地使用各個(gè)存儲(chǔ)塊,使得各個(gè)數(shù)據(jù)塊完全一致的使用率,從而使得Nand Flash存儲(chǔ)介質(zhì)的讀寫次數(shù)大大提高,更高效地利用存儲(chǔ)空間和更高效地進(jìn)行視頻數(shù)據(jù)的訪問。
[0015]另外,在將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,還包含以下子步驟:
[0016]將寫入位置和開始位置存放在內(nèi)存中;
[0017]在進(jìn)行視頻數(shù)據(jù)寫入時(shí),直接根據(jù)內(nèi)存中存放的寫入位置將所述視頻數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)塊中;如果發(fā)生寫入位置覆蓋開始位置,那么將開始位置向后移動(dòng)一個(gè)數(shù)據(jù)塊;
[0018]在所述根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)的步驟中,還包含以下子步驟:
[0019]根據(jù)全局編號(hào)和物理位置建立索引,將該索引存放在內(nèi)存中;
[0020]在進(jìn)行視頻數(shù)據(jù)讀取時(shí),直接根據(jù)內(nèi)存中存放的索引查找欲讀取的數(shù)據(jù)塊,并讀取相應(yīng)數(shù)據(jù)塊中的視頻數(shù)據(jù)。
[0021]通過直接使用內(nèi)存中存放寫入位置、開始位置和全局編號(hào)和物理位置的索引可以完成對(duì)Nand Flash存儲(chǔ)器的高效訪問,使本發(fā)明具有很小的內(nèi)存使用率。
[0022]另外,在所述將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,包含以下子步驟:
[0023]將頭信息、視頻數(shù)據(jù)、尾信息依次寫入所述數(shù)據(jù)塊中;
[0024]其中,所述頭信息和尾信息相同,包含全局編號(hào)globalblockno。
[0025]在存儲(chǔ)視頻數(shù)據(jù)時(shí),通過依次寫入頭信息、視頻數(shù)據(jù)、尾信息,在讀取數(shù)據(jù)時(shí)可以通過比較頭信息和尾信息是否相同來判斷在寫入一個(gè)數(shù)據(jù)塊的過程中是否發(fā)生異?,F(xiàn)象,從而保證正確可靠的寫入與讀取。
[0026]另外,所述頭信息和尾信息還包含用戶數(shù)據(jù)userdata,用于根據(jù)用戶自定義的標(biāo)簽進(jìn)行數(shù)據(jù)的查找定位,便于根據(jù)用戶自定義的標(biāo)簽對(duì)視頻數(shù)據(jù)進(jìn)行查找定位。
[0027]另外,所述頭信息和尾信息還包含校驗(yàn)值CrC32Value,用于存儲(chǔ)每個(gè)數(shù)據(jù)塊的校驗(yàn)信息,從而可以判斷該數(shù)據(jù)塊的完整性;
[0028]在所述將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,包含以下子步驟:
[0029]對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行循環(huán)冗余CRC校驗(yàn),得到校驗(yàn)值;
[0030]將所述校驗(yàn)值存儲(chǔ)到所述頭信息和尾信息中;
[0031]在根據(jù)全局編號(hào)和物理位置建立索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)的步驟中,包含以下子步驟:
[0032]判斷所述數(shù)據(jù)塊的頭信息和尾信息是否相同,所述頭信息中的校驗(yàn)值是否正確;
[0033]如果兩個(gè)判斷結(jié)果均為是,則說明所述數(shù)據(jù)塊中的數(shù)據(jù)正確,從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù);
[0034]如果兩個(gè)判斷結(jié)果之一為否,則說明所述數(shù)據(jù)塊中的數(shù)據(jù)不正確,返回所述數(shù)據(jù)塊異常的提示。
[0035]通過對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行獨(dú)立地校驗(yàn),進(jìn)行數(shù)據(jù)的容錯(cuò),互不影響,因此使本發(fā)明具有極強(qiáng)的容錯(cuò)性,任意一段數(shù)據(jù)存儲(chǔ)的損壞,都不會(huì)導(dǎo)致存儲(chǔ)不可用,系統(tǒng)的關(guān)鍵元信息是分布式地存儲(chǔ)到整個(gè)存儲(chǔ)中,不存在哪一塊是關(guān)鍵塊的問題,大大降低了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
[0036]另外,在所述將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊的步驟之后,還包含以下步驟:
[0037]將數(shù)據(jù)塊進(jìn)行群組劃分;
[0038]在進(jìn)行視頻數(shù)據(jù)的讀寫訪問時(shí),采用分層的樹結(jié)構(gòu)對(duì)需訪問的數(shù)據(jù)塊進(jìn)行定位。
[0039]通過采用分層的樹結(jié)構(gòu)這種分級(jí)目錄管理方式,使得在讀取視頻數(shù)據(jù)時(shí),可以逐漸進(jìn)行向下探索,非常迅速地找到欲讀取的數(shù)據(jù)塊,實(shí)現(xiàn)快速訪問。
[0040]另外,所述Nand Flash存儲(chǔ)器有兩個(gè)或者兩個(gè)以上,按照分配全局唯一編號(hào)的方式,將這些Nand Flash存儲(chǔ)器聯(lián)合起來,組成一個(gè)虛擬的存儲(chǔ)器,再進(jìn)行數(shù)據(jù)的讀寫訪問??梢詳U(kuò)展存儲(chǔ)空間,提供更好的服務(wù),使本發(fā)明具有出色的可伸縮性,并且支持大型flash存儲(chǔ)體。
【專利附圖】

【附圖說明】
[0041]圖1是根據(jù)本發(fā)明第一實(shí)施方式的Nand Flash存儲(chǔ)器的訪問方法的流程圖;
[0042]圖2是根據(jù)本發(fā)明第一實(shí)施方式的Nand Flash存儲(chǔ)器的訪問方法的Nand Flash存儲(chǔ)器中數(shù)據(jù)塊的群組劃分樹結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0043]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的各實(shí)施方式進(jìn)行詳細(xì)的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實(shí)施方式中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)細(xì)節(jié)。但是,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請(qǐng)各權(quán)利要求所要求保護(hù)的技術(shù)方案。
[0044]本發(fā)明的第一實(shí)施方式涉及一種Nand Flash存儲(chǔ)器的訪問方法,該方法將將NandFlash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊;為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),該編號(hào)隨著視頻數(shù)據(jù)的寫入不斷增加;在需要存儲(chǔ)視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中;每次寫入所述視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)寫入已經(jīng)使用的數(shù)據(jù)塊中編號(hào)最大的數(shù)據(jù)塊的后面一個(gè)數(shù)據(jù)塊中;在需要讀取視頻數(shù)據(jù)時(shí),根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位相對(duì)應(yīng)的數(shù)據(jù)塊,并從數(shù)據(jù)塊中讀取視頻數(shù)據(jù)。本實(shí)施方式將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊,通過為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),實(shí)現(xiàn)對(duì)所述Nand Flash存儲(chǔ)器的循環(huán)寫入,保證可以完全均衡地使用各個(gè)存儲(chǔ)塊,使得各個(gè)數(shù)據(jù)塊完全一致的使用率,從而使得Nand Flash存儲(chǔ)介質(zhì)的讀寫次數(shù)大大提高,更高效地利用存儲(chǔ)空間和更高效地進(jìn)行視頻數(shù)據(jù)的訪問。
[0045]本實(shí)施方式的流程如圖1所示,具體步驟如下:
[0046]步驟101,將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊,也就是說,將一塊NandFlash存儲(chǔ)劃分成獨(dú)立的小塊進(jìn)行管理,比如說,將一個(gè)容量為32千兆字節(jié)(GB)的安全數(shù)碼卡(Secure Digital Memory Card,簡(jiǎn)稱“SD卡”)劃分成一定大小的數(shù)據(jù)塊進(jìn)行管理,t:匕如每個(gè)數(shù)據(jù)塊的大小為32千字節(jié)(Kbytes)。
[0047]步驟102,為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),該編號(hào)隨著視頻數(shù)據(jù)的寫入不斷增加??梢栽诿總€(gè)數(shù)據(jù)塊中分配盡量大的存儲(chǔ)空間,比如64位bit,用于存儲(chǔ)該編號(hào),以免溢出。
[0048]為了高效地進(jìn)行數(shù)據(jù)的寫入和讀出定位,可以將數(shù)據(jù)塊再進(jìn)一步進(jìn)行群組的劃分,即步驟103,在進(jìn)行視頻數(shù)據(jù)的讀寫訪問時(shí),采用分層的樹結(jié)構(gòu)對(duì)需訪問的數(shù)據(jù)塊進(jìn)行定位。通過采用分層的樹結(jié)構(gòu)這種分級(jí)目錄管理方式,使得在讀取視頻數(shù)據(jù)時(shí),可以逐漸進(jìn)行向下探索,非常迅速地找到欲讀取的數(shù)據(jù)塊,實(shí)現(xiàn)快速訪問。比如上述提到的32GB的SD卡,可以進(jìn)行如下群組劃分,如圖2所示,第O級(jí)將32G劃分為64個(gè)512M,第I級(jí)將每個(gè)512M劃分為32個(gè)16M,第2級(jí)將每個(gè)16M劃分為8個(gè)2M,第3級(jí)(即data層)將2M劃分為64個(gè)32K。在進(jìn)行數(shù)據(jù)定位時(shí),根據(jù)上述分層的樹結(jié)構(gòu),對(duì)于一個(gè)32G的文件系統(tǒng),最多只需要64+32+8+64=168次數(shù)據(jù)查找工作即可完成數(shù)據(jù)的定位工作,具有閃電般的工作速度。
[0049]步驟104,在需要存儲(chǔ)視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中;每次寫入所述視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)寫入已經(jīng)使用的數(shù)據(jù)塊中編號(hào)最大的數(shù)據(jù)塊的后面一個(gè)數(shù)據(jù)塊中;具體地說,將頭信息、視頻數(shù)據(jù)、尾信息依次寫入數(shù)據(jù)塊中;其中,頭信息和尾信息相同,包含全局編號(hào)globalblockno。在存儲(chǔ)視頻數(shù)據(jù)時(shí),通過依次寫入頭信息、視頻數(shù)據(jù)、尾信息,由于寫入的時(shí)候,依照的是一個(gè)從開始到結(jié)束的順序,這在Nand Flash上是一個(gè)合理的假設(shè),在讀取數(shù)據(jù)時(shí)可以通過比較頭信息和尾信息是否相同來判斷在寫入一個(gè)數(shù)據(jù)塊的過程中是否發(fā)生異?,F(xiàn)象,從而保證正確可靠的寫入與讀取。此外,為了盡可能使Nand Flash存儲(chǔ)器得到充分利用,每次寫入視頻數(shù)據(jù)時(shí),寫入數(shù)據(jù)的大小與劃分的數(shù)據(jù)塊大小相同或者盡量相同。
[0050]米用全局編號(hào)globalblockno策略,對(duì)Nand Flash存儲(chǔ)器進(jìn)行循環(huán)寫入。為每次寫入分配一個(gè)新的編號(hào),該新的編號(hào)為目前整個(gè)存儲(chǔ)器中已經(jīng)使用的最大編號(hào)加I ;其中,如果存儲(chǔ)器是未使用的存儲(chǔ)器,那么編號(hào)從I開始;將編號(hào)中最小編號(hào)對(duì)應(yīng)的數(shù)據(jù)塊作為Nand Flash存儲(chǔ)器中視頻數(shù)據(jù)開始存放的位置;將最大編號(hào)加I作為當(dāng)前寫入數(shù)據(jù)的寫入位置;發(fā)生循環(huán)寫入時(shí),會(huì)出現(xiàn)最新寫入位置覆蓋最小編號(hào)數(shù)據(jù)塊的情況,也就是說,如果已經(jīng)發(fā)生循環(huán)寫入,那么覆蓋最小編號(hào)對(duì)應(yīng)的數(shù)據(jù)塊,寫入位置和開始位置會(huì)同時(shí)移動(dòng)。。
[0051]步驟105,在需要讀取視頻數(shù)據(jù)時(shí),根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位相對(duì)應(yīng)的數(shù)據(jù)塊,并從數(shù)據(jù)塊中讀取視頻數(shù)據(jù)。由于采用了分層的樹結(jié)構(gòu)對(duì)數(shù)據(jù)塊進(jìn)行分級(jí)目錄管理,因此在讀取視頻數(shù)據(jù)時(shí),可以逐漸進(jìn)行向下探索,非常迅速地找到欲讀取的數(shù)據(jù)塊,實(shí)現(xiàn)快速訪問。
[0052]此外,由于采用了循環(huán)寫入的策略,基本上使用兩個(gè)指針,即寫入位置和開始位置,即可完成系統(tǒng)的高效寫入,使本實(shí)施方式具有很小的內(nèi)存使用率,也就是說,將開始位置、寫入位置存放在內(nèi)存中;在進(jìn)行視頻數(shù)據(jù)寫入時(shí),直接根據(jù)內(nèi)存中存放的寫入位置將所述視頻數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)塊中;如果發(fā)生寫入位置覆蓋開始位置,那么將開始位置向后移動(dòng)一個(gè)數(shù)據(jù)塊;在進(jìn)行視頻數(shù)據(jù)讀取時(shí),根據(jù)全局編號(hào)和物理位置建立索引,將該索引存放在內(nèi)存中;直接根據(jù)內(nèi)存中存放的索引查找欲讀取的數(shù)據(jù)塊,并讀取相應(yīng)數(shù)據(jù)塊中的視頻數(shù)據(jù)。另外,由于采用循環(huán)寫入的方法,大編號(hào)以后的數(shù)據(jù)塊自動(dòng)成為垃圾,不用特殊的管理,這種管理新舊數(shù)據(jù)塊的方法,可以提高數(shù)據(jù)訪問速度。
[0053]經(jīng)實(shí)踐證明,將本實(shí)施方式的存儲(chǔ)方案應(yīng)用到數(shù)千個(gè)視頻監(jiān)控設(shè)備的前端存儲(chǔ)方案中,沒有發(fā)生過一次由于存儲(chǔ)而導(dǎo)致的問題,取得了非常大的成功。而且,存儲(chǔ)介質(zhì)在接受每天24小時(shí)不斷寫入的情況下,由于采用了完全平均一致的寫入平衡策略,在簡(jiǎn)單性,適用性,和可靠性上都取得了很好的效果。此外,快速定位方法保證了存儲(chǔ)系統(tǒng)初始化非??焖?;讀取的時(shí)候,采用分級(jí)目錄,可以逐漸進(jìn)行向下探索,非常迅速。
[0054]本發(fā)明的第二實(shí)施方式涉及一種Nand Flash存儲(chǔ)器的訪問方法。第二實(shí)施方式在第一實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:在本發(fā)明第二實(shí)施方式中,頭信息和尾信息還包含用戶數(shù)據(jù)userdata,用于根據(jù)用戶自定義的標(biāo)簽進(jìn)行數(shù)據(jù)的查找定位,便于根據(jù)用戶自定義的標(biāo)簽對(duì)視頻數(shù)據(jù)進(jìn)行查找定位。比如說,時(shí)間標(biāo)簽,可以根據(jù)時(shí)間來對(duì)視頻數(shù)據(jù)進(jìn)行查找,實(shí)現(xiàn)對(duì)數(shù)據(jù)的快速訪問。
[0055]本發(fā)明的第三實(shí)施方式涉及一種Nand Flash存儲(chǔ)器的訪問方法。第三實(shí)施方式在第一實(shí)施方式或第二實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:在本發(fā)明第三實(shí)施方式中,頭信息和尾信息還包含校驗(yàn)值crC32Value,用于存儲(chǔ)每個(gè)數(shù)據(jù)塊的校驗(yàn)信息;通過對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行獨(dú)立地校驗(yàn),進(jìn)行數(shù)據(jù)的容錯(cuò),互不影響,因此使本發(fā)明具有極強(qiáng)的容錯(cuò)性,任意一段數(shù)據(jù)存儲(chǔ)的損壞,都不會(huì)導(dǎo)致存儲(chǔ)不可用,系統(tǒng)的關(guān)鍵元信息是分布式地存儲(chǔ)到整個(gè)存儲(chǔ)中,不存在哪一塊是關(guān)鍵塊的問題,大大降低了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
[0056]具體地說,在將視頻數(shù)循環(huán)寫入數(shù)據(jù)塊中時(shí),對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行循環(huán)冗余CRC校驗(yàn),得到校驗(yàn)值;將校驗(yàn)值存儲(chǔ)到頭信息和尾信息中。
[0057]在根據(jù)全局編號(hào)和物理位置建立索引,查找定位數(shù)據(jù)塊,并從數(shù)據(jù)塊中讀取視頻數(shù)據(jù)時(shí),判斷數(shù)據(jù)塊的頭信息和尾信息是否相同,頭信息中的校驗(yàn)值是否正確;如果兩個(gè)判斷結(jié)果均為是,則說明數(shù)據(jù)塊中的數(shù)據(jù)正確,從數(shù)據(jù)塊中讀取視頻數(shù)據(jù);如果兩個(gè)判斷結(jié)果之一為否,則說明數(shù)據(jù)塊中的數(shù)據(jù)不正確,返回?cái)?shù)據(jù)塊異常的提示。
[0058]舉例來說,頭信息和尾信息可以采用如下數(shù)據(jù)結(jié)構(gòu):
[0059]
struct ATOMBLOCKHDR
{
unsigned longdwI IeaderVersion;
unsigned longmagicdatablock; //'RECB'
unsigned —i nt64 global blockno; // 數(shù)據(jù)塊全局唯一的編號(hào)
unsigned —ini 64 userdata;
unsigned lory datasizelnThisBlock; //——寫滿的 unsigned 1ru crc32value;
t.[0060] 而數(shù)據(jù)寫入的結(jié)構(gòu)順序?yàn)?AT0MBL0CKHDR+實(shí)際數(shù)據(jù)【32K - sizeof(AT0MBL0CKHDR)】 +AT0MBL0CKHDR。整個(gè)存儲(chǔ)方案是采用支持原子寫入的數(shù)據(jù)塊組成,每塊都有自己的元信息可供使用,互不影響,具有很好的容錯(cuò)能力的方法。
[0061 ] 本發(fā)明的第四實(shí)施方式涉及一種Nand Flash存儲(chǔ)器的訪問方法。第四實(shí)施方式在第一實(shí)施方式、第二實(shí)施方式或第三實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:在本發(fā)明第四實(shí)施方式中,Nand Flash存儲(chǔ)器可以有兩個(gè)或者兩個(gè)以上,按照分配全局唯一編號(hào)的方式,將這些Nand Flash存儲(chǔ)器聯(lián)合起來,組成一個(gè)虛擬的存儲(chǔ)器,進(jìn)行數(shù)據(jù)的讀寫訪問??梢詳U(kuò)展存儲(chǔ)空間,提供更好的服務(wù),使本發(fā)明具有出色的可伸縮性,并且支持大型flash存儲(chǔ)體。
[0062]上面各種方法的步驟劃分,只是為了描述清楚,實(shí)現(xiàn)時(shí)可以合并為一個(gè)步驟或者對(duì)某些步驟進(jìn)行拆分,分解為多個(gè)步驟,只要包含相同的邏輯關(guān)系,都在本專利的保護(hù)范圍內(nèi);對(duì)算法中或者流程中添加無關(guān)緊要的修改或者引入無關(guān)緊要的設(shè)計(jì),但不改變其算法和流程的核心設(shè)計(jì)都在該專利的保護(hù)范圍內(nèi)。
[0063]本領(lǐng)域的普通技術(shù)人員可以理解,上述各實(shí)施方式是實(shí)現(xiàn)本發(fā)明的具體實(shí)施例,而在實(shí)際應(yīng)用中,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。
【權(quán)利要求】
1.一種Nand Flash存儲(chǔ)器的訪問方法,其特征在于,包含以下步驟: 將Nand Flash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊; 為每個(gè)數(shù)據(jù)塊分配在整個(gè)Nand Flash存儲(chǔ)器中唯一的全局編號(hào),該編號(hào)隨著視頻數(shù)據(jù)的寫入不斷增加; 在需要存儲(chǔ)視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中;每次寫入所述視頻數(shù)據(jù)時(shí),將所述視頻數(shù)據(jù)寫入已經(jīng)使用的數(shù)據(jù)塊中編號(hào)最大的數(shù)據(jù)塊的后面一個(gè)數(shù)據(jù)塊中; 在需要讀取視頻數(shù)據(jù)時(shí),根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,在將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,包含以下子步驟: 為每次寫入分配一個(gè)新的編號(hào),所述新的編號(hào)為目前整個(gè)存儲(chǔ)器中已經(jīng)使用的最大編號(hào)加I ;其中,如果所述存儲(chǔ)器是未使用的存儲(chǔ)器,那么編號(hào)從I開始; 將所述編號(hào)中最小編號(hào)對(duì)應(yīng)的數(shù)據(jù)塊作為所述Nand Flash存儲(chǔ)器中視頻數(shù)據(jù)開始存放的位置; 將最大編號(hào)加I作為當(dāng)前寫入數(shù)據(jù)的寫入位置; 如果已經(jīng)發(fā)生循環(huán)寫入,那么覆蓋最小編號(hào)對(duì)應(yīng)的數(shù)據(jù)塊,寫入位置和開始位置會(huì)同時(shí)移動(dòng)。
3.根據(jù)權(quán)利要求2所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,在將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的 步驟中,還包含以下子步驟: 將寫入位置和開始位置存放在內(nèi)存中; 在進(jìn)行視頻數(shù)據(jù)寫入時(shí),直接根據(jù)內(nèi)存中存放的寫入位置將所述視頻數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)塊中;如果發(fā)生寫入位置覆蓋開始位置,那么將開始位置向后移動(dòng)一個(gè)數(shù)據(jù)塊; 在所述根據(jù)全局編號(hào)建立全局分級(jí)索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)的步驟中,還包含以下子步驟: 根據(jù)全局編號(hào)和物理位置建立索引,將該索引存放在內(nèi)存中; 在進(jìn)行視頻數(shù)據(jù)讀取時(shí),直接根據(jù)內(nèi)存中存放的索引查找欲讀取的數(shù)據(jù)塊,并讀取相應(yīng)數(shù)據(jù)塊中的視頻數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,在將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,包含以下子步驟: 將頭信息、視頻數(shù)據(jù)、尾信息依次寫入所述數(shù)據(jù)塊中; 其中,所述頭信息和尾信息相同,包含全局編號(hào)globalblockno。
5.根據(jù)權(quán)利要求4所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,所述頭信息和尾信息還包含用戶數(shù)據(jù)userdata,用于根據(jù)用戶自定義的標(biāo)簽進(jìn)行數(shù)據(jù)的查找定位。
6.根據(jù)權(quán)利要求4所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于, 所述頭信息和尾信息還包含校驗(yàn)值crC32Value,用于存儲(chǔ)每個(gè)數(shù)據(jù)塊的校驗(yàn)信息; 在所述將所述視頻循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,包含以下子步驟: 對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行循環(huán)冗余CRC校驗(yàn),得到校驗(yàn)值; 將所述校驗(yàn)值存儲(chǔ)到所述頭信息和尾信息中;在根據(jù)全局編號(hào)和物理位置建立索引,查找定位所述數(shù)據(jù)塊,并從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù)的步驟中,包含以下子步驟: 判斷所述數(shù)據(jù)塊的頭信息和尾信息是否相同,所述頭信息中的校驗(yàn)值是否正確; 如果兩個(gè)判斷結(jié)果均為是,則說明所述數(shù)據(jù)塊中的數(shù)據(jù)正確,從所述數(shù)據(jù)塊中讀取視頻數(shù)據(jù); 如果兩個(gè)判斷結(jié)果之一為否,則說明所述數(shù)據(jù)塊中的數(shù)據(jù)不正確,返回所述數(shù)據(jù)塊異常的提示。
7.根據(jù)權(quán)利要求1所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,在所述將NandFlash存儲(chǔ)器劃分成獨(dú)立的數(shù)據(jù)塊的步驟之后,還包含以下步驟: 將數(shù)據(jù)塊進(jìn)行群組劃分; 在進(jìn)行視頻數(shù)據(jù)的讀寫訪問時(shí),采用分層的樹結(jié)構(gòu)對(duì)需訪問的數(shù)據(jù)塊進(jìn)行定位。
8.根據(jù)權(quán)利要求1所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,所述NandFlash存儲(chǔ)器有兩個(gè)或者兩個(gè)以上,按照分配全局唯一編號(hào)的方式,將這些Nand Flash存儲(chǔ)器聯(lián)合起來,組成一個(gè)虛擬的存儲(chǔ)器,再進(jìn)行數(shù)據(jù)的讀寫訪問。
9.根據(jù)權(quán)利要求1所述的NandFlash存儲(chǔ)器的訪問方法,其特征在于,在所述將所述視頻數(shù)據(jù)循環(huán)寫入所述數(shù)據(jù)塊中的步驟中,每次寫入所述視頻數(shù)據(jù)時(shí),寫入數(shù)據(jù)的大小與所述劃分的數(shù)據(jù)塊大小相同·。
【文檔編號(hào)】G06F11/07GK103544124SQ201210246402
【公開日】2014年1月29日 申請(qǐng)日期:2012年7月16日 優(yōu)先權(quán)日:2012年7月16日
【發(fā)明者】戶現(xiàn)鋒 申請(qǐng)人:上海塞尚通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1