欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向DSP的二元組NANDFLASH數(shù)據(jù)文件管理方法與流程

文檔序號(hào):12014519閱讀:247來源:國知局
一種面向DSP的二元組NANDFLASH數(shù)據(jù)文件管理方法與流程
本發(fā)明涉及一種面向DSP的二元組NANDFLASH數(shù)據(jù)文件管理方法。

背景技術(shù):
DSP是一種專門為實(shí)時(shí)、快速實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法而設(shè)計(jì)的、具有特殊結(jié)構(gòu)的微處理器,具有穩(wěn)定、可大規(guī)模集成、可編程等優(yōu)點(diǎn),在雷達(dá)聲納、醫(yī)用儀器、通信設(shè)備、電子對(duì)抗、武器制導(dǎo)等國民經(jīng)濟(jì)的各個(gè)領(lǐng)域應(yīng)用廣泛。近年來,以DSP為核心構(gòu)建的嵌入式系統(tǒng)功能日益增強(qiáng),越來越多的應(yīng)用場(chǎng)合需要實(shí)現(xiàn)數(shù)據(jù)記錄存儲(chǔ)功能,比如慣導(dǎo)、導(dǎo)引頭、空間飛行器等系統(tǒng),都需要自主、實(shí)時(shí)、可靠存儲(chǔ)大量的關(guān)鍵信息,并保證即使整個(gè)系統(tǒng)掉電,所采集到的數(shù)據(jù)仍能長時(shí)間保持不丟失??焖俨翆懘鎯?chǔ)器FLASH(閃存)是目前性能價(jià)格比和可靠性最高的可擦寫、非易失存儲(chǔ)器,成本低、體積小、承受沖擊能力強(qiáng)、存儲(chǔ)容量大,在嵌入式系統(tǒng)中已被廣泛用作外存儲(chǔ)部件?,F(xiàn)在主流閃存分為NOR型和NAND型,NAND型閃存寫入和擦除速度比NOR型快,單元存儲(chǔ)容量大,且成本比NOR型低,因此NAND型閃存在大容量數(shù)據(jù)存儲(chǔ)上比NOR型閃存更具有優(yōu)勢(shì)。以DSP為核心的嵌入式系統(tǒng)中,DSP往往需要承擔(dān)繁重的計(jì)算任務(wù),復(fù)雜的文件管理系統(tǒng)不適合系統(tǒng)使用,因此迫切需要一種簡捷、可靠、實(shí)用且CPU資源消耗少的Nandflash數(shù)據(jù)文件管理方法。文件系統(tǒng)在整個(gè)系統(tǒng)中位于設(shè)備驅(qū)動(dòng)程序和層應(yīng)用程序之間,負(fù)責(zé)管理文件的創(chuàng)立、撤消、讀寫、修改、復(fù)制和存取控制等,并管理存放文件的各種資源,為上層引用程序提供統(tǒng)一的存儲(chǔ)接口,透明具體的實(shí)現(xiàn)過程,為上 層提供服務(wù)。它管理硬件上的數(shù)據(jù)存取方式和結(jié)構(gòu)。以更好利用存儲(chǔ)空間和提高存儲(chǔ)效率。由于Windows操作系統(tǒng)的普及,微軟公司的FAT文件系統(tǒng)被廣泛采用。然而NandFlash存儲(chǔ)器具有先擦除后寫入的硬件特性,F(xiàn)AT文件系統(tǒng)是專門針對(duì)磁盤等存儲(chǔ)介質(zhì)而設(shè)計(jì)的,不適合直接應(yīng)用于NandFlash。主要問題有兩點(diǎn):一是文件系統(tǒng)工作時(shí),需要頻繁重寫文件分配表,這就使得對(duì)文件分配表區(qū)的擦寫明顯多于其它區(qū)域,從而導(dǎo)致文件分配表區(qū)先于其它區(qū)域出現(xiàn)壞塊。二是申請(qǐng)新簇時(shí),文件系統(tǒng)總是按照從前到后的秩序查找FAT表,這就使得簇號(hào)小的較大的更頻繁地被使用,從而導(dǎo)致簇號(hào)較小的簇更早磨損,出現(xiàn)壞塊。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供了一種面向DSP的二元組NANDFLASH數(shù)據(jù)文件管理方法。本發(fā)明的技術(shù)解決方案是:一種面向DSP的二元組NANDFLASH數(shù)據(jù)文件管理方法,首先進(jìn)行文件表建立和更新,之后可以進(jìn)行數(shù)據(jù)寫入或者數(shù)據(jù)讀取。文件表建立和更新過程如下:(1)加電啟動(dòng)后,將二元組個(gè)數(shù)num置0,將讀取的頁編號(hào)j置0;(2)讀取一條二元組信息,二元組個(gè)數(shù)num=num+1;(3)如果該二元組的EndpageID不全是0xFF,則轉(zhuǎn)第(2)步,否則轉(zhuǎn)第(4)步;(4)如果該二元組的StartpageId全是0xFF,將本二元組,即第num個(gè)二元組的StartpageId寫為kstart,令StartpageId=kstart,結(jié)束;如果該二元組的StartpageId不全是0xFF,則轉(zhuǎn)第(5)步;所述kstart為NANDFLASH數(shù)據(jù)區(qū)第1個(gè)有效塊的第1頁的序號(hào);(5)讀取第StartpageId+j頁的內(nèi)容;(6)如果第StartpageId+j頁的內(nèi)容不全是0xFF,則令j=j(luò)+1,轉(zhuǎn)第(5)步;否則轉(zhuǎn)第(7)步;(7)令p=StartpageId+j;(8)如果p>StartpageId,則將第num個(gè)二元組的EndpageID寫為p-1,下一個(gè)二元組的StartpageId寫為p,令StartpageId=p;結(jié)束,否則直接結(jié)束。數(shù)據(jù)寫入方法流程如下:(3.1)將待寫入的頁編號(hào)q置0;(3.2)判斷StartpageId是否大于等于預(yù)設(shè)的存儲(chǔ)門限gate,如果StartpageId大于等于gate,轉(zhuǎn)第(3.4)步,否則轉(zhuǎn)第(3.3)步;(3.3)判斷二元組個(gè)數(shù)num是否大于等于num_total-1,如果num大于等于num_total-1,轉(zhuǎn)第(3.4)步,否則轉(zhuǎn)第(3.5)步;num_total為文件表信息區(qū)共可存放的二元組個(gè)數(shù);(3.4)逐塊擦除整片nandflash,令StartpageId=kstart,文件表中寫入第1個(gè)二元組的StartpageId;(3.5)向StartpageId+q頁寫入數(shù)據(jù);(3.6)如果此時(shí)要求停止繼續(xù)寫入,則結(jié)束,否則令q=q+1,轉(zhuǎn)第(3.7)步;(3.7)判斷第StartpageId+q頁是不是最后一頁,如果是,結(jié)束,否則轉(zhuǎn)第(3.5)步。數(shù)據(jù)讀取方法流程如下:(4.1)判斷給出的二元組編號(hào)是否超限,即是否大于可存儲(chǔ)的二元組總個(gè)數(shù)num_total,如果超限則結(jié)束,否則轉(zhuǎn)第(4.2)步;(4.2)從文件表區(qū)讀取該二元組的StartpageId和EndpageID;(4.3)判斷該二元組的StartpageId和EndpageID是否超限,即是否大于m-1,m為總頁數(shù),如果StartpageId和EndpageID其中有一個(gè)超限 則結(jié)束,否則轉(zhuǎn)第(4.4)步;(4.4)從數(shù)據(jù)區(qū)中,順序讀取StartpageId和EndpageID之間的數(shù)據(jù)頁的內(nèi)容。所述文件表用于存放數(shù)據(jù)文件的信息,以二元組表示:{StartpageId,EndpageID},其中,StartpageId和EndpageID為整數(shù),分別表示起始頁編號(hào)和結(jié)束頁編號(hào),可確定數(shù)據(jù)文件在Nandflash中的存儲(chǔ)位置。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:(1)以“條次”為單位管理數(shù)據(jù)文件,每個(gè)二元組文件表信息只占4~6字節(jié),比FAT16文件系統(tǒng)節(jié)約約26字,節(jié)約了存儲(chǔ)空間;(2)只有寫入操作會(huì)增加條次數(shù),讀取操作不增加條次數(shù),文件表不需要頻繁重寫,數(shù)據(jù)文件從前到后順序存放循環(huán)使用,便于延長Nandflash使用壽命;(3)以“頁”而不是“塊”為單位管理存儲(chǔ)器,提高存儲(chǔ)器利于效率,減少存儲(chǔ)空間浪費(fèi);(4)數(shù)據(jù)存儲(chǔ)直接實(shí)時(shí)寫入,無延時(shí)。(5)簡捷、可靠、實(shí)用,便于實(shí)現(xiàn),CPU資源消耗少,適合嵌入式系統(tǒng)使用。附圖說明圖1為nandflash存儲(chǔ)區(qū)域劃分示意圖圖2為文件表區(qū)第一頁存儲(chǔ)示意圖圖3為數(shù)據(jù)區(qū)存儲(chǔ)示意圖圖4為文件表建立和更新過程流程圖圖5為數(shù)據(jù)寫入方法流程圖圖6為數(shù)據(jù)讀取方法流程圖圖7為三星公司生產(chǎn)的K9K8G08U0M結(jié)構(gòu)圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行進(jìn)一步的詳細(xì)描述。本發(fā)明基于nandflash特點(diǎn),提出了二元組數(shù)據(jù)文件管理方法,以“條次”為單位管理數(shù)據(jù)文件,每條文件表信息只占6字節(jié),比FAT16文件系統(tǒng)節(jié)約約26字,且文件表不需要頻繁重寫,便于延長Nandflash使用壽命;以“頁”而不是“塊”為單位管理存儲(chǔ)器,提高存儲(chǔ)器利于效率,減少存儲(chǔ)空間浪費(fèi);數(shù)據(jù)存儲(chǔ)直接實(shí)時(shí)寫入,無延時(shí)。該方法簡捷、可靠、實(shí)用,CPU資源消耗少,適合以DSP為核心處理器的嵌入式系統(tǒng)使用,并可推廣應(yīng)用于大容量閃存器件與單片機(jī)、ARM及其他類型的嵌入式系統(tǒng)設(shè)計(jì)中。Nandflash分為文件表區(qū)和數(shù)據(jù)內(nèi)容區(qū)。為確??煽?,文件表區(qū)位于第1塊,因?yàn)樾酒瑥S商確保第1塊可用,其余塊為數(shù)據(jù)區(qū)。數(shù)據(jù)在數(shù)據(jù)區(qū)中按照先后順序連續(xù)存放。不同數(shù)據(jù)文件不共用頁,即如果前一個(gè)文件存儲(chǔ)時(shí)時(shí)未占滿的一個(gè)頁,下一個(gè)文件存儲(chǔ)時(shí)將跳過該頁,從下一個(gè)全新的頁開始存儲(chǔ)。數(shù)據(jù)區(qū)的內(nèi)容可由用戶自定義設(shè)計(jì),可以是圖像、音頻、采用值等任何數(shù)據(jù),無統(tǒng)一規(guī)定。文件表區(qū)用于存放數(shù)據(jù)文件的信息,以二元組表示:{StartpageId,EndpageID}。其中,StartpageId、EndpageID為整數(shù),可確定數(shù)據(jù)文件在Nandflash中的存儲(chǔ)位置,分別表示起始頁編號(hào)和結(jié)束頁編號(hào)。頁編號(hào)從0開始,第1塊的第1頁編號(hào)為0,第1塊的第2頁編號(hào)為1,以此類推。設(shè)NANDFLASH共有n塊,每塊有k頁,共有m頁,由于數(shù)據(jù)內(nèi)容從第2塊開始,所以StartpageId,EndpageID的取值范圍是[k,m-1]。二元組的字節(jié)數(shù)i需根據(jù)Nandflash的容量確定。StartpageId、EndpageID為整數(shù),存儲(chǔ)用的字節(jié)數(shù)根據(jù)所用Nandflash的容量確定。以K9K8G08U0M為例,該Nandflash共有219頁,每塊有64頁,則StartpageId、EndpageID的取值范圍為[64,219-1],因此StartpageId、EndpageID各用三個(gè)字節(jié)即可表示。所以,一條文件表信息(1個(gè)二元組)用6個(gè)字節(jié)即可,利于節(jié)約空間。如果是容量為128MB的Nandflash,共有65536頁,則 StartpageId、EndpageID各用2個(gè)字節(jié)即可表示。文件表信息放在Nandflash的第1塊,以二元組為單位順序存放,前i個(gè)字節(jié)存放第1條次的文件信息即二元組,緊接著的i個(gè)字節(jié)存放第2條次的二元組,以此類推。當(dāng)某一頁剩余的字節(jié)數(shù)不足以存放一個(gè)二元組時(shí),這些字節(jié)舍棄不用,下一個(gè)二元組從新的一頁開始存放。仍以K9K8G08U0M為例,1個(gè)二元組是6字節(jié),每頁2048字節(jié),可存儲(chǔ)341個(gè)二元組,剩余2字節(jié)不用,下一個(gè)二元組從后續(xù)相鄰頁起始處開始存放。二元組的序號(hào)為正整數(shù),從1開始編號(hào)。文件表信息區(qū)共可存放的二元組個(gè)數(shù)num_total等于floor(s/i)*k,其中floor()表示向下取整。仍以K9K8G08U0M為例,文件表信息區(qū)為1塊,包含64頁,每頁2048字節(jié),每個(gè)二元組6字節(jié),則文件表信息區(qū)共可存放21824個(gè)二元組,因此可管理21824個(gè)數(shù)據(jù)文件。設(shè)NANDFLASH分為n塊(Block),每塊包含k頁(page),每頁內(nèi)包含s正常字節(jié)和少數(shù)空余備用字節(jié),共有m頁(m=n×k)。頁編號(hào)從0開始,第1塊的第1頁編號(hào)為0,第1塊的第2頁編號(hào)為1,以此類推。塊編號(hào)從1開始,第1塊的編號(hào)為1,第2塊的2編號(hào)為2,以此類推。以三星公司生產(chǎn)的K9K8G08U0M為例,該芯片共分為8192個(gè)block(塊),每個(gè)Block包含64個(gè)page(頁),每個(gè)page包含2048個(gè)字節(jié)的有效數(shù)據(jù)空間以及64個(gè)空余字節(jié)。其組織結(jié)構(gòu)如圖7所示。如圖1所示,Nandflash分為文件表區(qū)和數(shù)據(jù)內(nèi)容區(qū)。文件表區(qū)位于第1塊,包含k頁,其余n-1塊為數(shù)據(jù)區(qū),包含(n-1)*k頁。如圖2所示,文件表區(qū)中,文件信息以二元組為單位依次順序存放。數(shù)據(jù)文件的信息以二元組表示:{StartpageId,EndpageID}。其中,StartpageId、EndpageID為整數(shù),分別表示起始頁編號(hào)和結(jié)束頁編號(hào),字節(jié)數(shù)根據(jù)所用Nandflash的容量確定。當(dāng)某一頁剩余的字節(jié)數(shù)不足以存放一個(gè)二元組時(shí),這些字節(jié)舍棄不用,下一個(gè)二元組從新的一頁開始存放。文件表信息區(qū)共可存放的二元組個(gè)數(shù)num_total=floor(s/i)*k,其中floor() 表示向下取整。以K9K8G08U0M為例,該Nandflash共有219頁,每塊有64頁,則StartpageId、EndpageID的取值范圍為[64,219-1],因此StartpageId、EndpageID各用三個(gè)字節(jié)即可表示(因三個(gè)字節(jié)可表示的范圍是[0,224-1])。所以,一條文件表信息(1個(gè)二元組)用6個(gè)字節(jié)即可,利于節(jié)約空間。1個(gè)二元組是6字節(jié),每頁2048字節(jié),可存儲(chǔ)341個(gè)二元組,剩余2字節(jié)不用,下一個(gè)二元組從后續(xù)相鄰頁起始處開始存放。二元組的序號(hào)為正整數(shù),從1開始編號(hào)。文件表區(qū)包含64頁,共可存放21824個(gè)二元組,因此可管理21824個(gè)數(shù)據(jù)文件。數(shù)據(jù)在數(shù)據(jù)區(qū)中按照“條次”順序連續(xù)存放。不同“條次”數(shù)據(jù)文件不共用頁,即如果前一個(gè)文件存儲(chǔ)時(shí)時(shí)未占滿的一個(gè)頁,下一個(gè)文件存儲(chǔ)時(shí)將跳過該頁,從下一個(gè)全新的頁開始存儲(chǔ)。數(shù)據(jù)區(qū)的內(nèi)容可由用戶自定義設(shè)計(jì),可以是圖像、音頻、采用值等任何數(shù)據(jù),無統(tǒng)一規(guī)定。如圖3所示,假設(shè)第1條次的數(shù)據(jù)占了半頁,存放在第kstart頁,第2條次的數(shù)據(jù)占了3頁,則存放在第kstart+1、kstart+2和kstart+3頁。本發(fā)明提出的一種二元組NANDFLASH數(shù)據(jù)文件管理方法,主要包括文件表建立和更新、數(shù)據(jù)寫入、數(shù)據(jù)讀取三個(gè)部分,首先進(jìn)行文件表建立和更新,之后可以進(jìn)行數(shù)據(jù)寫入或者讀取。如圖4所示,文件表建立和更新過程如下:(1)系統(tǒng)加電啟動(dòng)后,將二元組個(gè)數(shù)num置0,將讀取的頁編號(hào)j置0;(2)讀取一條二元組信息,二元組個(gè)數(shù)num=num+1;(3)如果該二元組的EndpageID不全是0xFF,則轉(zhuǎn)第(2)步,否則轉(zhuǎn)第(4)步;(4)如果該二元組的StartpageId全是0xFF,將本二元組(即第num個(gè)二元組的StartpageId寫為kstart,令StartpageId=kstart,結(jié)束;如果該二元組的StartpageId不全是0xFF,則轉(zhuǎn)第(5)步;(5)讀取第StartpageId+j頁的內(nèi)容;(6)如果第StartpageId+j頁的內(nèi)容不全是0xFF,則令j=j(luò)+1,轉(zhuǎn)第(5)步;否則轉(zhuǎn)第(7)步;(7)令p=StartpageId+j;(8)如果p>StartpageId,則將第num個(gè)二元組的EndpageID寫為p-1,下一個(gè)二元組的StartpageId寫為p,令StartpageId=p;結(jié)束,否則直接結(jié)束。在執(zhí)行完上述文件表建立和更新過程后,可以執(zhí)行數(shù)據(jù)寫入。如圖5所示,數(shù)據(jù)寫入方法流程如下:(1)將待寫入的頁編號(hào)q置0;(2)判斷StartpageId是否大于等于存儲(chǔ)門限gate,如果StartpageId大于等于gate,轉(zhuǎn)第(4)步,否則轉(zhuǎn)第(3)步;(3)判斷二元組個(gè)數(shù)num是否大于等于num_total-1,如果num大于等于num_total-1,轉(zhuǎn)第(4)步,否則轉(zhuǎn)第(5)步;(4)逐塊擦除整片nandflash,令StartpageId=kstart,文件表中寫入第1個(gè)二元組的StartpageId;(5)向StartpageId+q頁寫入數(shù)據(jù);(6)判斷系統(tǒng)是否要求停止寫,如果要求停止寫,結(jié)束,否則轉(zhuǎn)第(7)步;(7)令q=q+1;(8)判斷第StartpageId+q頁是不是最后一頁,如果是,結(jié)束,否則轉(zhuǎn)第(5)步。在執(zhí)行完上述文件表建立和更新過程后,可以執(zhí)行數(shù)據(jù)讀取。如圖6所示,數(shù)據(jù)讀取方法流程如下:(1)判斷系統(tǒng)給出的二元組編號(hào)是否超限,即是否大于可存儲(chǔ)的二元組總個(gè)數(shù)num_total,如果超限則結(jié)束,否則轉(zhuǎn)第(2)步;從文件表區(qū)讀 取該二元組的StartpageId和EndpageID;(2)從文件表區(qū)讀取該二元組的StartpageId和EndpageID;(3)判斷該二元組的StartpageId和EndpageID是否超限,即是否大于m-1(m為總頁數(shù)),如果StartpageId和EndpageID其中有一個(gè)超限則結(jié)束,否則轉(zhuǎn)第(4)步;(4)從數(shù)據(jù)區(qū)中,順序讀取StartpageId和EndpageID之間的數(shù)據(jù)頁的內(nèi)容。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
孟连| 辉县市| 高台县| 布拖县| 景宁| 沙洋县| 金华市| 昆明市| 盐源县| 洪江市| 惠州市| 鄂尔多斯市| 信宜市| 定襄县| 紫阳县| 德阳市| 凤凰县| 海淀区| 环江| 白城市| 长武县| 阳江市| 贵州省| 略阳县| 富顺县| 香港 | 永靖县| 渭南市| 中西区| 江永县| 开原市| 灯塔市| 津南区| 海兴县| 镇赉县| 苏尼特左旗| 准格尔旗| 临沂市| 临清市| 乌兰浩特市| 嵊泗县|