當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]延長Flash存儲囂使用壽命的研究

引 言
    隨著嵌入式系統(tǒng)在數(shù)碼相機(jī)、數(shù)字?jǐn)z像機(jī)、移動電話、MP3音樂播放器等移動設(shè)備中越來越廣泛的應(yīng)用,F(xiàn)lash存儲器已經(jīng)逐步取代其他半導(dǎo)體存儲元件,成為嵌入式系統(tǒng)中主要數(shù)據(jù)和程序載體。Flash存儲器又稱閃存,是一種可在線多次擦除的非易失性存儲器NVM(Non-Volatile Memo-ry),即掉電后數(shù)據(jù)不會丟失。Flash存儲器還具有體積小、功耗低、抗振性強(qiáng)等優(yōu)點(diǎn),是嵌入式系統(tǒng)的首選存儲設(shè)備。
    世面上常用的Flash存儲設(shè)備有兩種:NOR Flash和NAND Flash。根據(jù)存儲容量,NOR一般為1~16 MB,而NAND為8~512 MB,現(xiàn)在的大容量NAND已經(jīng)可以達(dá)到4 GB;讀取速度NOR較NAND快,寫入速度NOR比NAND慢一些;擦除速度NOR需要2~5 s,而NAND僅僅需要2~5 ms;NAND的價格比NOR低很多。由于種種原因,較常用的是NAND Flash。但是由于NANDFlash的工藝不能保證NAND的存儲陣列(memory ar-ray)在其生命周期中保持性能的可靠,因此,在NAND的生產(chǎn)中及使用過程中會產(chǎn)生壞塊。其表現(xiàn)是:當(dāng)編程/擦除這個塊時,不能將某些位拉高,這會造成頁編程(page program)和塊擦除(block erase)操作時的錯誤;相應(yīng)地,反映到狀態(tài)寄存器(status register)的相應(yīng)位。
    總體上,壞塊可以分為兩大類:第一類為固有壞塊,這是生產(chǎn)過程中產(chǎn)生的壞塊,一般芯片原廠都會在出廠時將壞塊第一個頁的擴(kuò)展區(qū)域(Spare Area)的第6個字節(jié)標(biāo)記為不等于0xff的值;第二類為使用壞塊,這是在NANDFlash使用過程中,如果塊擦除或者頁編程錯誤,就可以簡單地將這個塊作為壞塊來處理,這個時候需要把壞塊標(biāo)記起來。為了和固有壞塊信息保持一致,將新發(fā)現(xiàn)壞塊的第一個頁的擴(kuò)展區(qū)域的第6個字節(jié)標(biāo)記為非0xff的值。由于Flash寫入數(shù)據(jù)的時候是先擦除塊,這樣這個塊里面的數(shù)據(jù)將全部變成0xff,寫入1時,該位不變;寫入0時,該位由1變?yōu)?。如果將擴(kuò)展區(qū)域的第6個字節(jié)標(biāo)記為非0xff之后,將不可能再恢復(fù)為0xff,除非格式化有可能恢復(fù)。
    我們已經(jīng)了解到,壞了的塊是無法擦除和寫人數(shù)據(jù)的,而在嵌入式系統(tǒng)中,啟動的第一步就是將Flash里面的前4KB數(shù)據(jù)自動復(fù)制到SRAM里面去運(yùn)行。如果僅僅Flash的第一塊壞了,而導(dǎo)致引導(dǎo)程序無法下載進(jìn)去,那么這個塊不是不能讀取數(shù)據(jù),而是讀不出我們想再要放入的數(shù)據(jù),這樣這個Flash設(shè)備就報廢了。本文就這個問題作了深入的討論,用一種基于Flash的地址重映射的方法解決這個問題。本文采用三星(Samscrag)公司的S3C2440 ARM處理器和NAND Flash存儲設(shè)備K9F1208UOM討論地址重映射的思想。


1 S3C2440使用NAND Flash引導(dǎo)系統(tǒng)的方法
    自動啟動模式順序:
    ①復(fù)位完成;
    ②當(dāng)設(shè)置為自動啟動模式,NAND Flash的開始4 KB被拷貝到Steppingstone的4 KB內(nèi)部緩沖器;
    ③Steppingstone映射到nGCS0;
    ④CPU開始在Steppingstone執(zhí)行啟動代碼程序。
    由系統(tǒng)引導(dǎo)順序看出,如果Flash的第一塊壞了,那么讀出的數(shù)據(jù)不一定是引導(dǎo)程序,這樣,系統(tǒng)將無法啟動。而在這種情況下,就只能換一塊完好的Flash了,這樣就造成了很大的浪費(fèi)。


2 Flash存儲器的內(nèi)部結(jié)構(gòu)
    K9F1208UOM型Flash芯片內(nèi)部存儲器結(jié)構(gòu)如圖1所示。

    典型的NAND Flash由4 096塊組成,每一個塊包含32頁,而每頁是512+16=528字節(jié)。對于一個頁,0~511字節(jié)為主存儲區(qū),即通常所說的用戶可設(shè)定地址區(qū),用來存儲數(shù)據(jù);512~527共16字節(jié)為擴(kuò)展存儲區(qū),用來存儲頁的信息。擴(kuò)展區(qū)的16字節(jié)用于描述主存儲區(qū)的512字節(jié)。而對于壞塊,也僅僅是將這16字節(jié)的第6字節(jié)設(shè)置為不等于0xff,來標(biāo)示壞塊。
    在NANDFlash使用過程中可能會出現(xiàn)這樣的問題:產(chǎn)生壞塊或壞頁、由此引發(fā)的數(shù)據(jù)丟失、對一些扇區(qū)或塊的過分磨損導(dǎo)致NANDFlash壽命縮短等。為了能更好地使用NAND Flash,在其損壞時使損失最小化,需要一種方法,使用相同的地址可以屏蔽掉壞了的塊,而指針指向好塊。即使第一塊壞了,還可以使用O地址去操作一個好塊。

[!--empirenews.page--]
3 Flash存儲器的讀取方法
    K9F11208UOM型Flash芯片內(nèi)部與外部引腳關(guān)系如圖2所示。對于每一個塊的訪問,都需要一個固定的物理地址,基于這個固定的物理地址來操作Flash存儲器,在對塊進(jìn)行操作的時候,一個塊地址對應(yīng)一個塊,如果這個塊壞了,那么這個地址的存在就沒有意義了。就像ARM芯片在引導(dǎo)的時候,需要復(fù)制Flash的前4 KB的數(shù)據(jù),這樣需要固定塊的數(shù)據(jù)。如果這個塊壞了,系統(tǒng)將無法引導(dǎo)。

    下面通過地址重映射的方法,即在Flash固件里面加入一個地址重映射的區(qū)域來解決這一問題。


4 基于地址重映射的讀取方法
    在實現(xiàn)地址重映射的時候,可以從塊邏輯地址O開始,查看相對應(yīng)的物理塊。如果損壞,將地址從最后一個開始向前指,而相應(yīng)的邏輯塊被標(biāo)示為壞塊。例如圖3,物理塊0損壞,邏輯塊地址0指向物理塊4095的地址,而邏輯塊地址4095被標(biāo)示為壞塊。可以看出,即使塊0摜壞,仍然可以通過邏輯地址O進(jìn)行操作,其內(nèi)部的變化,并不會影響外部的使用。唯一不同的是,F(xiàn)lash的整體空間變小了。不過即使這樣,也不會像以前那樣,第一塊壞了,就去換一個Flash。

5 性能分析
    很明顯,在數(shù)據(jù)讀取的時候增加了一步地址重映射的計算。這樣使整體性能會略微下降。下面分析一下加入地址重映射之后的性能影響(這里僅僅分析數(shù)據(jù)的讀取性能,因為對Flash操作最多的是數(shù)據(jù)的讀取,用戶使用時也是讀取最多)。
    地址重映射是根據(jù)輸入的地址計算操作地址的。從圖4可以看出,地址重映射的計算是加在地址A25輸入之后的,因其在內(nèi)部操作,延時相對很小。而這個地址重映射在整個塊操作之中只操作一次,且其使用時間很短,故在這里可以忽略不計,其對數(shù)據(jù)的讀取操作基本沒有影響。

    加入地址重映射之后,壞塊全部集中到了整個Flash設(shè)備的最后。也就是說,即使這個Flash中有1024個塊壞了,仍然可以當(dāng)其為一個32 MB的Flash來使用,即其有效塊為第0~1 023塊;不像前面所描述的那樣,就算只有第一個塊壞了,這個Flash也就報廢了。經(jīng)過加入地址重映射之后的Flash,即使就剩下一塊沒有損壞的塊了,這個Flash仍然可以作為引導(dǎo)系統(tǒng)使用。


6 結(jié) 論
    通過在Flash內(nèi)部加入地址重映射機(jī)制,對于使用Flash將會有很大的方便,并且,即使第一個塊壞了,仍可以繼續(xù)使用這個Flash,而無需廠家保證第一個塊是好的。這樣大大延長了Flash的使用壽命,僅僅在壞塊達(dá)到一定數(shù)量的時候才需要換一個。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉