• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > NAND Flash的壞塊管理設計

    NAND Flash的壞塊管理設計

    作者: 時間:2010-11-15 來源:網絡 收藏

    d.JPG


    ③只發現一張最高版本并且有效地壞塊表Vn+1,并且有1張有效壞塊表Vn——發生在寫第二張Vn+1突然掉電,并且之前寫第二張Vn也發生掉電;
    ④僅發現一張壞塊表V0——發生在系統寫第二張V0時掉電,此時系統需重新掃描建立映射表V1;
    ⑤沒有發現任何壞塊表——系統最初狀態;
    ⑥兩個完整的壞塊表Vn+1,但num_bad_blk不一樣——這種情況發生在更新第二個壞塊表Vn+1時,寫的時候出錯,產生一個新的壞塊,從而第二次更新的壞塊表Vn+1的壞塊數增加了。
    對于情況①,只需在系統最初建立前建立好映射關系即可。
    對于情況②,它經常出現在系統在寫或者擦除數據塊時突然斷電,導致數據或者ECC變化,從而讀導致ECC不正確。實際上Fl-ash塊并沒有壞。根據此種情況,將首先為此塊分配一個映射塊,并把數據拷入映射塊。接著對此塊進行torture操作,如果發現它為好塊,則將之前映射操作撤銷,將數據重新拷入此好塊。如果此塊確實已壞,則將此塊標記為壞塊,并更新映射表。
    對于情況③,分配一個新的映射塊,把有效數據寫入新塊,并建立映射信息。
    對于情況④,分配一個新的映射塊,并將此塊查出,然后建立映射信息。
    對于情況⑤,掃描整個,建立映射表Vn、V0。
    對于情況⑥,則采用壞塊多的映射表Vn+1,并用它更新Vn+2、Vn+2。
    2.2.2 壞塊及上層接口實現
    該模塊實現基于上節所述壞塊算法對Flash的所有有效塊的使用。它主要是處理運行中產生壞塊的情況,并讓上層程序屏蔽此信息。
    Flash的壞塊包含如下三種類型:
    ◆Flash上存在的出廠壞塊;
    ◆讀過程發生比特反轉而被視為的壞塊;
    ◆操作過程(讀,寫,擦除)中產生的新的壞塊。
    對于此模塊主要完成后兩種動態壞塊類型的處理過程。對于出廠壞塊,只需在初始化時檢測出來并將其映射到一個好塊,以后的讀寫過程中對映射塊操作即可。
    對于運行中產生的壞塊,從操作類型(讀、寫、擦除)來進行分別處理。
    ①讀過程中的比特反轉導致ECC錯誤,由于比特反轉是工藝決定的,且是不可避免的隨機行為,所以不能簡單地根據ECC錯誤就將其當作壞塊處理。具體處理流程如圖4所示,通過torture操作判斷此“壞塊”已真正成為壞塊。

    e.JPG
    如果 Flash在執行擦除或寫操作過程時發生斷電,則所操作的塊內的數據具有不確定性。下次讀該塊的內容時,可能發生無法糾正的ECC錯誤。為了能處理這種情況,圖4中的torture處理,其實現原理就是選擇一些數據寫入該塊,再讀出,如果不一致則該塊已變成壞塊。



    關鍵詞: 設計 管理 Flash NAND

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 拜泉县| 新余市| 肃宁县| 福贡县| 仙游县| 芜湖市| 喜德县| 二连浩特市| 遂川县| 南澳县| 大城县| 建水县| 平乡县| 锦州市| 景洪市| 丽水市| 南漳县| 景东| 浏阳市| 仁怀市| 清流县| 吴堡县| 昌吉市| 闸北区| 梨树县| 剑河县| 娱乐| 天镇县| 肃南| 宜州市| 株洲县| 包头市| 布尔津县| 留坝县| 湖州市| 淅川县| 怀宁县| 当涂县| 荔浦县| 万宁市| 彭泽县|