www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]NAND Flash的壞塊管理設(shè)計(jì)

摘要:主要介紹了基于嵌入式Linux的NAND Flash壞塊管理設(shè)計(jì)和實(shí)現(xiàn)方案,詳細(xì)闡述了壞塊映射表的建立、維護(hù)及其相關(guān)算法,同時(shí)分析了此壞塊算法在Linux內(nèi)核及Bootloader中的具體應(yīng)用。測(cè)試結(jié)果表明該算法能夠處理NANDFlash的相關(guān)壞塊問題,具有較高的穩(wěn)定性。
關(guān)鍵詞:NAND Flash;嵌入式IAnux;映射表;壞塊管理

    在擁有諸多優(yōu)點(diǎn)的同時(shí),NAND Flash由于生產(chǎn)工藝的問題,其在出廠時(shí)可能存在一定的壞塊。這些固有壞塊不能用于存儲(chǔ)數(shù)據(jù),已被產(chǎn)家標(biāo)識(shí)好。另外,使用過程中由于讀寫次數(shù)增多,好塊也會(huì)變得不穩(wěn)定或失效,成為壞塊,這就是出廠后產(chǎn)生的壞塊。
    NAND Flash在生產(chǎn)及使用過程中都有可能產(chǎn)生壞塊,這將使得系統(tǒng)變得不穩(wěn)定。應(yīng)用中一般采用跳塊策略來管理壞塊,但它不能解決系統(tǒng)運(yùn)行中產(chǎn)生的壞塊情況。針對(duì)此情形,本文提出基于嵌入式Linux系統(tǒng)平臺(tái)下的一種基于壞塊映射的NAND Flash壞塊管理的方案,并詳細(xì)介紹其相關(guān)映射算法和整套系統(tǒng)的相關(guān)壞塊管理流程。

1 壞塊管理層次結(jié)構(gòu)
    Linux下的MTD(Memory Technology Device)是用于管理ROM、Flash等內(nèi)存設(shè)備的一層子系統(tǒng),它使編寫管理內(nèi)存設(shè)備驅(qū)動(dòng)變得更加簡(jiǎn)單。
    MTD子系統(tǒng)將Flash設(shè)備或其分區(qū)抽象為MTD設(shè)備,使底層驅(qū)動(dòng)只需實(shí)現(xiàn)MTD設(shè)備,而向上層文件系統(tǒng)提供標(biāo)準(zhǔn)的接口,如MTD字符設(shè)備、MTD塊設(shè)備。
    如圖1所示,本方案設(shè)計(jì)中,將壞塊管理層(BBMlayer)緊靠在驅(qū)動(dòng)層之上MTD層之下,從而使得MTD層對(duì)壞塊不可見,并使壞塊的管理是基于整個(gè)芯片而不是某個(gè)分區(qū),便于上層文件系統(tǒng)實(shí)現(xiàn)損耗平衡。


    BBM層基于驅(qū)動(dòng)層提供的讀、寫、擦除相關(guān)操作實(shí)現(xiàn)接口read()、write()、erase()、read_oob()、write_oob()、isbad()、mark_bad()。對(duì)于其上層MTD子系統(tǒng)而言,關(guān)于壞塊的相關(guān)接口將不存在,物理介質(zhì)類似于NORFlash。其中read_oob()、write_oob()接口為文件系統(tǒng)提供相關(guān)用途,如JFFS2的cleanmarker相關(guān)載體。

2 壞塊管理模塊的設(shè)計(jì)實(shí)現(xiàn)
2.1 壞塊管理原理
    本文的設(shè)計(jì)的壞塊管理是基于壞塊映射原理的一種實(shí)現(xiàn)。在本壞塊映射的設(shè)計(jì)中,NAND Flash被劃分為基本空間和預(yù)留空間。基本空間為用戶看到的NANDFlash的總的存儲(chǔ)空間?;究臻g中的壞塊被映射到預(yù)留空間中的相應(yīng)好塊?;居成潢P(guān)系如圖2所示。映射管理信息記錄在壞塊映射表中,它存儲(chǔ)在預(yù)留空間。

[!--empirenews.page--]
2.2 壞塊映射表的描述
    在預(yù)留空間存在4種形式的塊:空閑的好塊、壞塊、被映射的塊、存放映射表的塊。
    存放映射表的塊較為特殊,其中映射表不僅描述基本空間中的壞塊映射相關(guān)信息,還描述預(yù)留空間占整個(gè)Flash空間的比例等。
    設(shè)計(jì)中一張壞塊表存于一個(gè)Flash塊,表的信息存于塊中最前面的相關(guān)頁(yè)中。表的頭部長(zhǎng)度固定,表的整個(gè)長(zhǎng)度可變,與壞塊數(shù)目相關(guān)。
壞塊映射表結(jié)構(gòu)描述如下:  

  
    其中hdr_crc和tbl_crc用于檢驗(yàn)表的完整性;rese_start_blk即預(yù)留空間的起始?jí)K號(hào);version用于標(biāo)識(shí)該表的版本;num_bad_blk用于描述已發(fā)現(xiàn)的壞塊數(shù),即壞塊映射表項(xiàng)的數(shù)目;map_tbl為記錄壞塊映射表項(xiàng)內(nèi)容的首地址。任何一個(gè)映射表項(xiàng)包括壞塊塊號(hào)及其映射的好塊的塊號(hào)。
    由于使用過程中會(huì)產(chǎn)生新的壞塊,映射表中的表項(xiàng)需要增加,從而要更新Flash中的映射表。為了防止系統(tǒng)意外掉電產(chǎn)生映射表不一致問題,采用日志技術(shù)。其中version版本號(hào)標(biāo)識(shí)映射表的新舊,在更新Flash映射表的同時(shí),版本號(hào)遞增,同時(shí)Flash舊版本映射表并不立即擦除。只有出現(xiàn)預(yù)留空間不足的情況,擦除舊版本映射表的動(dòng)作才執(zhí)行。此方案還有利于調(diào)試,查看映射表的更改歷史記錄。
    在出現(xiàn)壞塊Bn后,通常包括兩個(gè)動(dòng)作:寫映射表和標(biāo)識(shí)壞塊。標(biāo)識(shí)壞塊是通過在塊的00B相應(yīng)字節(jié)寫非0xFF來實(shí)現(xiàn)。
    為了支持意外掉電情形,每個(gè)版本的映射表必須在Flash里保存兩份,如果發(fā)現(xiàn)最高的版本映射表沒有兩份,或者兩份不一致,則屬于非正常情況,必須重新建立映射表。
    考慮如下情況:寫完映射表Vn,接著標(biāo)識(shí)壞塊Bn,此時(shí)掉電,則下次系統(tǒng)啟動(dòng)后,出現(xiàn)映射表的壞快Bn,實(shí)際上并沒有被標(biāo)識(shí),導(dǎo)致不一致問題。寫2份Vn可以解決此問題:寫第一份Vn后,標(biāo)識(shí)壞塊Bn,接著再寫第二份Vn。這樣即使在標(biāo)識(shí)壞塊Bn時(shí)掉電,下次系統(tǒng)加電時(shí)由于沒有發(fā)現(xiàn)2份版本相同且最高的映射表,從而識(shí)別出此非正常情況。
    同時(shí),維護(hù)2份同版本壞塊表可以處理存放映射表的塊突然壞死而導(dǎo)致系統(tǒng)無法啟動(dòng)的異常,起到備份的作用。
2.2.1 壞塊映射表的管理算法
    系統(tǒng)初始化時(shí)讀入壞塊表的內(nèi)容,在內(nèi)存中建立所有壞塊的映射信息。由于每次發(fā)現(xiàn)新的壞塊而更新壞塊表時(shí),都會(huì)寫入兩個(gè)版本一樣的壞塊表,所以在讀入壞塊表時(shí)就要檢查兩個(gè)表是否有效和一致,可以分為以下情況:
    ①發(fā)現(xiàn)2張最高版本并且有效的壞塊表Vn+1——系統(tǒng)按表Vn+1建立映射;
    ②只發(fā)現(xiàn)1張最高版本并且有效的壞塊表Vn+1,并且有2張有效壞塊表Vn——發(fā)生在上次寫完一個(gè)Vn+1后突然掉電,使得第二個(gè)表Vn+1未寫入或?qū)懭氩煌暾?,這時(shí)需要恢復(fù),以建立完整映射,恢復(fù)算法如圖3所示。[!--empirenews.page--]


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


    如果NAND Flash在執(zhí)行擦除或?qū)懖僮鬟^程時(shí)發(fā)生斷電,則所操作的塊內(nèi)的數(shù)據(jù)具有不確定性。下次讀該塊的內(nèi)容時(shí),可能發(fā)生無法糾正的ECC錯(cuò)誤。為了能處理這種情況,圖4中的torture處理,其實(shí)現(xiàn)原理就是選擇一些數(shù)據(jù)寫入該塊,再讀出,如果不一致則該塊已變成壞塊。[!--empirenews.page--]
    ②寫過程中發(fā)生錯(cuò)誤,則該塊成為壞塊。處理方法為:為其分配一個(gè)新的有效塊,將壞塊原有數(shù)據(jù)拷貝到有效塊,并同時(shí)寫入新的數(shù)據(jù),最后更新映射表,標(biāo)識(shí)壞塊。寫操作的錯(cuò)誤處理算法如圖5所示。


    ③擦除過程發(fā)生錯(cuò)誤,則該塊成為壞塊。處理方法為:為其分配一個(gè)新的有效塊,并擦除此有效塊,更新映射表,標(biāo)識(shí)壞塊。
2.3 BootIoader的壞塊管理
    在Bootloader層采用Linux內(nèi)核相同的壞塊管理策略,并復(fù)用相關(guān)代碼。Bootloader在內(nèi)存建立起的壞塊映射表可以通過內(nèi)存共享的方式,傳遞給Linux內(nèi)核,從而減少內(nèi)核重新掃描壞塊映射表的時(shí)間,加快系統(tǒng)啟動(dòng)速度。

3 測(cè)試
    Cases測(cè)試方法:對(duì)一切可能情況實(shí)行模擬測(cè)試,最后進(jìn)行壓力測(cè)試。
3.1 壞塊場(chǎng)景模擬測(cè)試
    ①出廠壞塊;
    ②運(yùn)行中產(chǎn)生壞塊:讀操作產(chǎn)生壞塊,寫操作產(chǎn)生壞塊,擦操作產(chǎn)生壞塊,比特反轉(zhuǎn)產(chǎn)生偽壞塊。
3.2 壞塊表一致性場(chǎng)景模擬
    ①2張相同Vn+1;
    ②1張Vn+1和2張相同Vn;
    ③1張Vn+1和1張Vn;
    ④1張Vn;
    ⑤沒有任何壞塊表;
    ⑥2張不相同的Vn+1。
3.3 壓力測(cè)試
    系統(tǒng)不間斷運(yùn)行10天后,工作狀態(tài)仍然正常。
3.4 文件系統(tǒng)測(cè)試
    系統(tǒng)能夠支持對(duì)壞塊敏感的文件系統(tǒng)squashfs、cramfs,其測(cè)試案例均通過。這表明該壞塊管理方法能有效管理NAND Flash。

4 總結(jié)
    本文提出了一種基于嵌入式Linux整套系統(tǒng)的NAND Flash壞塊管理實(shí)現(xiàn)方案,并詳細(xì)介紹其壞塊映射算法。此方案目前已經(jīng)應(yīng)用到數(shù)字電視開發(fā)平臺(tái)。在系統(tǒng)平臺(tái)上的相關(guān)壞塊動(dòng)態(tài)產(chǎn)生、突然掉電等大量測(cè)試表明此方案穩(wěn)定可靠。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

美國(guó)紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績(jī)報(bào)告。 IBM 董事長(zhǎng)兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺(tái)

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

我們知道 Flash 讀時(shí)序里有五大子序列 CMD + ADDR + MODE + DUMMY + READ,前面的文章中痞子衡講過《串行NOR Flash的Continuous read模式》,Continuous r...

關(guān)鍵字: CMD ADDR Flash

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉