<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 延長(zhǎng)Flash存儲(chǔ)器使用壽命的研究

          延長(zhǎng)Flash存儲(chǔ)器使用壽命的研究

          作者: 時(shí)間:2013-03-13 來(lái)源:網(wǎng)絡(luò) 收藏

            在NAND使用過(guò)程中可能會(huì)出現(xiàn)這樣的問(wèn)題:產(chǎn)生壞塊或壞頁(yè)、由此引發(fā)的數(shù)據(jù)丟失、對(duì)一些扇區(qū)或塊的過(guò)分磨損導(dǎo)致NAND壽命縮短等。為了能更好地使用NAND ,在其損壞時(shí)使損失最小化,需要一種方法,使用相同的地址可以屏蔽掉壞了的塊,而指針指向好塊。即使第一塊壞了,還可以使用O地址去操作一個(gè)好塊。

            3 Flash的讀取方法

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


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

            4 基于地址重映射的讀取方法

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


            5 性能分析

            很明顯,在數(shù)據(jù)讀取的時(shí)候增加了一步地址重映射的計(jì)算。這樣使整體性能會(huì)略微下降。下面分析一下加入地址重映射之后的性能影響(這里僅僅分析數(shù)據(jù)的讀取性能,因?yàn)閷?duì)Flash操作最多的是數(shù)據(jù)的讀取,用戶使用時(shí)也是讀取最多)。



          關(guān)鍵詞: Flash 存儲(chǔ)器 使用壽命

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();