国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種Nandflash內(nèi)存數(shù)據(jù)管理的方法與流程

      文檔序號:11133860閱讀:813來源:國知局
      一種Nandflash內(nèi)存數(shù)據(jù)管理的方法與制造工藝

      本發(fā)明屬于Nandflash內(nèi)存分區(qū)管理技術(shù)領(lǐng)域,更具體地,涉及一種Nandflash內(nèi)存數(shù)據(jù)管理的方法。



      背景技術(shù):

      Nandflash寫入速度快、芯片面積小,特別是大容量使其優(yōu)勢明顯。頁是Nandflash中的基本存貯單元,一頁一般為512 B(也有2 kB每頁的large page Nandflash),多個頁面組成塊。不同存儲器內(nèi)的塊內(nèi)頁面數(shù)不盡相同,通常以16頁或32頁比較常見。塊容量計算公式比較簡單,就是頁面容量與塊內(nèi)頁面數(shù)的乘積。根據(jù)FLASH Memory容量大小,不同存儲器中的塊、頁大小可能不同,塊內(nèi)頁面數(shù)也不同。Nandflash存儲器由多個塊串行排列組成。實際上,Nand型的FlashMemory可認為是順序讀取的設(shè)備,僅用8 b的I/O端口就可以存取按頁為單位的數(shù)據(jù)。Nandflash在讀和擦寫文件、特別是連續(xù)的大文件時速度相當快,而操作Nandflash時會出現(xiàn)一些異常數(shù)據(jù)現(xiàn)象導(dǎo)致保存重要數(shù)據(jù)時容易出現(xiàn)問題,根據(jù)設(shè)備應(yīng)用場景會引發(fā)一系列問題,最常見問題就是讀寫數(shù)據(jù)時內(nèi)存塊損壞導(dǎo)致數(shù)據(jù)丟失或存儲失效。



      技術(shù)實現(xiàn)要素:

      針對現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于提供一種Nandflash內(nèi)存數(shù)據(jù)管理的方法,旨在解決現(xiàn)有技術(shù)中讀寫數(shù)據(jù)時內(nèi)存塊損壞導(dǎo)致數(shù)據(jù)丟失或存儲失效的問題。

      本發(fā)明提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法,包括下述步驟:

      S1:對內(nèi)存塊進行分區(qū)并對數(shù)據(jù)內(nèi)存塊進行初始化;

      S2:對數(shù)據(jù)參數(shù)進行初始化;

      S3:對數(shù)據(jù)進行寫入操作;

      S4:對數(shù)據(jù)參數(shù)進行更新處理;

      S5:對數(shù)據(jù)進行讀取操作。

      更進一步地,根據(jù)以下原則對內(nèi)存塊進行分區(qū):按照實際需要存儲的數(shù)據(jù)類型進行分類,根據(jù)數(shù)據(jù)容量需求進行單個內(nèi)存塊內(nèi)最大容量的數(shù)據(jù)分配,并計算所需求數(shù)據(jù)容量下的最大內(nèi)存塊數(shù)目。

      更進一步地,所述內(nèi)存塊分為:數(shù)據(jù)參數(shù)區(qū)、A類數(shù)據(jù)區(qū)、B類數(shù)據(jù)區(qū)、C類數(shù)據(jù)區(qū)、D類數(shù)據(jù)區(qū)、數(shù)據(jù)備份區(qū)和數(shù)據(jù)參數(shù)備份區(qū);各個區(qū)的容量分別為:4K*H、4K*S1、4K* S2、4K* S3、4K* S4、4K* S5和4K*H;其中,其中,K為Kbyte,一千字節(jié), S1、S2、S3、S4、S5分別為當前數(shù)據(jù)需要存儲的容量,H為存儲數(shù)據(jù)類型的數(shù)量。

      更進一步地,在步驟S1中,對數(shù)據(jù)內(nèi)存塊進行初始化具體為:根據(jù)數(shù)據(jù)內(nèi)存塊分區(qū)定義每種數(shù)據(jù)類型起始地址和結(jié)束地址;根據(jù)所述起始地址和結(jié)束地址來判斷初始化是否成功,若是,則對內(nèi)存塊進行擦除操作并創(chuàng)建類型數(shù)據(jù)參數(shù)管理區(qū)后結(jié)束;若否,則結(jié)束。

      更進一步地,步驟S2中,對數(shù)據(jù)參數(shù)進行初始化具體為:根據(jù)數(shù)據(jù)類型查詢當前數(shù)據(jù)參數(shù)管理區(qū)當前數(shù)據(jù)區(qū)是否有效且數(shù)據(jù)塊是否損壞,如果正常且數(shù)據(jù)校驗正確,則讀取當前數(shù)據(jù)參數(shù)內(nèi)容返回;如果異常且數(shù)據(jù)校驗錯誤,則查詢當前數(shù)據(jù)類型對應(yīng)的備份區(qū)域;讀取備份區(qū)域校驗數(shù)據(jù),如果異常則重新創(chuàng)建數(shù)據(jù)參數(shù)管理區(qū)。

      更進一步地,步驟S3中,寫入數(shù)據(jù)具體為:從數(shù)據(jù)參數(shù)管理區(qū)獲取數(shù)據(jù)參數(shù),根據(jù)當前存儲的管理參數(shù)查找當前存儲的地址位置;判斷當前待存儲數(shù)據(jù)內(nèi)容是否超過當前塊的剩余存儲區(qū)域;如果未超過,則獲取數(shù)據(jù)校驗值,將當前數(shù)據(jù)寫入備份區(qū)域,判斷當前塊是否損壞,如果損壞則擦除當前數(shù)據(jù)塊,讀取備份區(qū)域數(shù)據(jù),將數(shù)據(jù)寫入到當前數(shù)據(jù)塊中;如果正常則直接寫入當前數(shù)據(jù)塊;將數(shù)據(jù)管理參數(shù)更新;如果數(shù)據(jù)長度超過,則判斷存儲區(qū)域是否超過當前塊剩余存儲區(qū)域,如果成立,則存儲地址移動到下一個存儲塊,寫入數(shù)據(jù)及更新數(shù)據(jù)管理區(qū);如果未成立則判斷是否超過存儲地址的最后一個存儲塊,超過則存儲地址移動到第一個存儲塊首地址,做數(shù)據(jù)覆蓋處理,擦除當前塊寫入數(shù)據(jù)及更新數(shù)據(jù)管理區(qū)。

      更進一步地,步驟S4中,對數(shù)據(jù)參數(shù)進行更新具體為:讀取當前數(shù)據(jù)管理區(qū)參數(shù),校驗當前數(shù)據(jù)參數(shù),判斷當前存儲地址是否超過當前存儲塊區(qū)域,如果超過則將數(shù)據(jù)寫入數(shù)據(jù)參數(shù)備份區(qū)域,判斷當前塊是否損壞,擦除當前數(shù)據(jù)塊,讀取備份區(qū)域數(shù)據(jù)參數(shù),寫入到當前數(shù)據(jù)區(qū)域。如果未超過當前存儲區(qū)域,則獲取數(shù)據(jù)校驗值,寫入到當前數(shù)據(jù)參數(shù)管理區(qū)域。

      更進一步地,步驟S5中,讀取數(shù)據(jù)具體為:從數(shù)據(jù)區(qū)域讀取數(shù)據(jù)時,判斷需要讀取的數(shù)據(jù)長度是否超過數(shù)據(jù)總量,如果超過則返回錯誤;如果未超過,則從數(shù)據(jù)管理參數(shù)區(qū)獲取當前數(shù)據(jù)存儲地址和首次存儲的數(shù)據(jù)地址,根據(jù)讀取的數(shù)據(jù)地址判斷讀取操作是否跨內(nèi)存塊,如果跨塊,則根據(jù)分區(qū)數(shù)據(jù)地址計算當前有效存儲起始地址及數(shù)據(jù)區(qū)塊號,讀取數(shù)據(jù)到緩存。如果未跨塊,則直接讀取數(shù)據(jù)到緩存。

      本發(fā)明具有以下幾方面的優(yōu)點:

      (1)本發(fā)明在使用過程中根據(jù)需要增加新的數(shù)據(jù)時,可以按照原先定義的分區(qū)方式規(guī)劃數(shù)據(jù)內(nèi)存空間,使得數(shù)據(jù)分區(qū)清晰;同時在數(shù)據(jù)內(nèi)存管理方面大大降低了開發(fā)人員對芯片內(nèi)存的管理難度,方便增加新的存儲數(shù)據(jù)類型。

      (2)本發(fā)明中由于代碼為標準C語言類型編寫和數(shù)據(jù)定義,在比如ucos、RTOS、linux等操作系統(tǒng)上可以很好實現(xiàn)兼容,無需對其中的內(nèi)容做改動便可實現(xiàn)調(diào)用,移植性好,方便在其他微處理器系統(tǒng)上使用。

      (3)本發(fā)明中由于代碼內(nèi)部按照優(yōu)化算法處理數(shù)據(jù)的定義、存儲、更新和刪除等常用數(shù)據(jù)管理方法,針對比如數(shù)據(jù)管理方面并不很熟練的開發(fā)人員,因為每個API都有專門詳細的注釋和定義,所以只需要簡單外部調(diào)用即可;代碼封裝性好,方便軟件開發(fā)人員管理和使用。

      (4)本發(fā)明針對Nandflash數(shù)據(jù)存儲特點,在操作內(nèi)存塊時相對容易產(chǎn)生壞塊或者數(shù)據(jù)讀寫的錯誤異常,專門編寫控制算法來進行數(shù)據(jù)讀寫的校驗,實現(xiàn)最大程度的降低操作數(shù)據(jù)時的異常風(fēng)險,對重要數(shù)據(jù)實現(xiàn)完好保存并正常讀寫;大大降低操作Nandflash數(shù)據(jù)存儲時的數(shù)據(jù)異常風(fēng)險。

      附圖說明

      圖1為Nandflash內(nèi)存塊分區(qū)圖;其中,S1、S2、S3、S4、S5為當前數(shù)據(jù)需要存儲的容量;H表示存儲數(shù)據(jù)類型的數(shù)量;

      圖2為本發(fā)明實施例提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法中數(shù)據(jù)內(nèi)存塊初始化流程圖;

      圖3為本發(fā)明實施例提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法中數(shù)據(jù)參數(shù)初始化流程圖;

      圖4為本發(fā)明實施例提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法中數(shù)據(jù)寫入流程圖;

      圖5為本發(fā)明實施例提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法中數(shù)據(jù)管理參數(shù)流程圖;

      圖6為本發(fā)明實施例提供的Nandflash內(nèi)存數(shù)據(jù)管理的方法中數(shù)據(jù)讀取流程圖。

      具體實施方式

      為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      本發(fā)明提供了一種新型基于Nandflash內(nèi)存數(shù)據(jù)管理的方法。本發(fā)明包括Nandflash內(nèi)存分區(qū),數(shù)據(jù)內(nèi)存塊初始化,數(shù)據(jù)管理參數(shù)初始化,分區(qū)內(nèi)存數(shù)據(jù)寫入,分區(qū)內(nèi)存數(shù)據(jù)讀取,分區(qū)數(shù)據(jù)管理參數(shù)更新;本發(fā)明以微處理器系統(tǒng)為核心,針對產(chǎn)品所產(chǎn)生的有效數(shù)據(jù)實現(xiàn)快速的正確的寫入與讀取。

      如圖1 所示,按照實際需要存儲的數(shù)據(jù)類型進行分類,根據(jù)數(shù)據(jù)容量需求進行單個內(nèi)存塊內(nèi)最大容量的數(shù)據(jù)分配 ,計算所需求數(shù)據(jù)容量下的最大內(nèi)存塊數(shù)目。根據(jù)數(shù)據(jù)類型分配一定的數(shù)據(jù)備份區(qū)域以便內(nèi)存塊數(shù)據(jù)異常時進行數(shù)據(jù)中轉(zhuǎn)處理。

      如圖2所示,數(shù)據(jù)內(nèi)存塊初始化處理,根據(jù)數(shù)據(jù)內(nèi)存塊分區(qū)定義每種數(shù)據(jù)類型起始和結(jié)束地址,創(chuàng)建數(shù)據(jù)參數(shù)管理區(qū),對應(yīng)各自數(shù)據(jù)類型。

      如圖3所示,根據(jù)數(shù)據(jù)類型查詢當前數(shù)據(jù)參數(shù)管理區(qū)當前數(shù)據(jù)區(qū)是否有效且數(shù)據(jù)塊是否損壞,如果正常且數(shù)據(jù)校驗正確,則讀取當前數(shù)據(jù)參數(shù)內(nèi)容返回;如果異常且數(shù)據(jù)校驗錯誤,則查詢當前數(shù)據(jù)類型對應(yīng)的備份區(qū)域;讀取備份區(qū)域校驗數(shù)據(jù),如果異常則重新創(chuàng)建數(shù)據(jù)參數(shù)管理區(qū)。

      如圖4所示,從數(shù)據(jù)參數(shù)管理區(qū)獲取數(shù)據(jù)參數(shù),根據(jù)當前存儲的管理參數(shù)查找當前存儲的地址位置;判斷當前待存儲數(shù)據(jù)內(nèi)容是否超過當前塊的剩余存儲區(qū)域;如果未超過,則獲取數(shù)據(jù)校驗值,將當前數(shù)據(jù)寫入備份區(qū)域,判斷當前塊是否損壞,如果損壞則擦除當前數(shù)據(jù)塊,讀取備份區(qū)域數(shù)據(jù),將數(shù)據(jù)寫入到當前數(shù)據(jù)塊中;如果正常則直接寫入當前數(shù)據(jù)塊;將數(shù)據(jù)管理參數(shù)更新;如果數(shù)據(jù)長度超過,則判斷存儲區(qū)域是否超過當前塊剩余存儲區(qū)域,如果成立,則存儲地址移動到下一個存儲塊,寫入數(shù)據(jù)及更新數(shù)據(jù)管理區(qū);如果未成立則判斷是否超過存儲地址的最后一個存儲塊,超過則存儲地址移動到第一個存儲塊首地址,做數(shù)據(jù)覆蓋處理,擦除當前塊寫入數(shù)據(jù)及更新數(shù)據(jù)管理區(qū)。

      如圖5所示,讀取當前數(shù)據(jù)管理區(qū)參數(shù),校驗當前數(shù)據(jù)參數(shù),判斷當前存儲地址是否超過當前存儲塊區(qū)域,如果超過則將數(shù)據(jù)寫入數(shù)據(jù)參數(shù)備份區(qū)域,判斷當前塊是否損壞,擦除當前數(shù)據(jù)塊,讀取備份區(qū)域數(shù)據(jù)參數(shù),寫入到當前數(shù)據(jù)區(qū)域。如果未超過當前存儲區(qū)域,則獲取數(shù)據(jù)校驗值,寫入到當前數(shù)據(jù)參數(shù)管理區(qū)域。

      如圖6所示,從數(shù)據(jù)區(qū)域讀取數(shù)據(jù)時,判斷需要讀取的數(shù)據(jù)長度是否超過數(shù)據(jù)總量,如果超過則返回錯誤;如果未超過,則從數(shù)據(jù)管理參數(shù)區(qū)獲取當前數(shù)據(jù)存儲地址和首次存儲的數(shù)據(jù)地址,根據(jù)讀取的數(shù)據(jù)地址判斷讀取操作是否跨內(nèi)存塊,如果跨塊,則根據(jù)分區(qū)數(shù)據(jù)地址計算當前有效存儲起始地址及數(shù)據(jù)區(qū)塊號,讀取數(shù)據(jù)到緩存。如果未跨塊,則直接讀取數(shù)據(jù)到緩存。

      本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1