新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Nand+Flash存儲管理在DSP系統(tǒng)中的實現(xiàn)

        基于Nand+Flash存儲管理在DSP系統(tǒng)中的實現(xiàn)

        作者: 時間:2012-04-17 來源:網(wǎng)絡 收藏


        Nand Flash作為一種安全、快速的存儲體,因其具有體積小、容量大、成本低、掉電數(shù) 據(jù)不丟失等一系列優(yōu)點,已逐步取代其它半導體存儲元件,成為嵌入式系統(tǒng)中數(shù)據(jù)存儲的主要載體。盡管Nand Flash的每個單元塊相互獨立,且每塊一般可擦除次數(shù)高達10~100萬次,但是隨著擦寫次數(shù)增加,會有一些單元塊逐漸變得不穩(wěn)定或失效從而形成永久性壞塊。因此, 要避免頻繁地對同一塊進行操作,盡量達到擦寫次數(shù)均衡;同時,由于擦除操作耗時較多,會對系統(tǒng)的實時性造成影響。為此,本文介紹了一種基于磨損均衡思想的Nand Flash方式,并深入討論了該方式在Ti公司的DSP TMS320F28x中的程序實現(xiàn)。

        本文引用地址:http://www.104case.com/article/257570.htm

        1 器件介紹

        本文中采用的Nand Flash芯片K9F6408U0C是一塊擁有8M(8,388,608)×8bit存儲空間及 256K(262,144)×8bit輔用存儲空間的存儲芯片,電源電壓為1.8V-3.3V。芯片內部按塊和頁的方式來組織的,如圖1所示,共分成1024個塊,每塊包含16個頁,每頁內有528個字節(jié)。 F28x系列DSP是美國TI公司最新推出的C2000平臺上的定點DSP芯片。

        圖1 K9F6408UOC內部結構示意圖

        F28x系列芯片具有 低成本、低功耗和高效能等特點,特別適用于有大量數(shù)據(jù)處理的測控場合。

        2 Flash的特點及的作用

        由K9F6408U0C的基本結構可以知道,它的基本單位有塊、頁、字節(jié)等。 Nand Flash 芯片具有如下特點:

        Flash寫:通過寫命令將每個字節(jié)存儲單元中的1變?yōu)?;寫操作不能把0變?yōu)?。

        Flash擦除:擦除命令是Flash中存儲單元0變?yōu)?的唯一途徑,一旦對某一塊中的某一位寫0,要再改變成1,則必須執(zhí)行擦除命令。

        通常,對于容量較小的Flash塊的操作過程是:先把整個塊的數(shù)據(jù)讀到RAM中,在RAM中修改數(shù)據(jù)內容,再擦除整個塊,最后寫入修改后的數(shù)據(jù)。顯然,這樣頻繁復雜的讀-擦除- 寫操作,對于Flash的使用壽命以及系統(tǒng)性能是很不利的,而且微處理器中通常RAM大小有限。 因此在硬件條件苛刻的嵌入式系統(tǒng)中就迫切需要一種合理的方式以便有效地均衡 Flash各個存儲塊的擦寫次數(shù),提高Flash的使用壽命,從而提高數(shù)據(jù)存儲的安全性。

        3 存儲管理系統(tǒng)的設計

        3.1建立壞塊管理表

        Nand Flash由于生產工藝的問題,不可避免的會存在一些壞塊,這些壞塊在芯片出廠前 都已被標識好。根據(jù)Nand Flash數(shù)據(jù)手冊中的介紹,在每一塊的第一頁與第二頁的Spare area 的第六個字節(jié)(也就是該頁的第517字節(jié))即是出廠時的壞塊標識位,如果某塊的該兩頁的第517字節(jié)內容不同時為0xFF,則代表該塊為廠家標識壞塊。這種壞塊的檢測必須在對芯 片進行擦除前進行,因為廠家壞塊有可能也能夠被進行擦除操作,如使用這種塊將對數(shù)據(jù)安全留下一定的隱患。

        Nand Flash在出廠前會保證每塊芯片的第一塊與第二塊是完好的,所以在本文的設計中,采用的方式是將壞塊管理表存放在第一塊的第一頁的前128個字節(jié)中,每個字節(jié)的一位代表芯片的一塊,如該位為1剛表明該塊是好的,為0則表示對應塊為壞塊。壞塊管理表的建立是必需的,而且最好是在芯片進行其它擦寫操作前進行。

        3.2 Flash存儲空間管理

        在本文設計的Flash空間管理中,F(xiàn)lash的存儲塊被分為空閑塊(Free,即空白沒寫數(shù)據(jù)的好塊),有效塊(Valid,即存有有效數(shù)據(jù)的塊,不能被擦除),無效塊(Invalid,即數(shù) 據(jù)已無效或是寫入錯誤塊,可被擦除),保留塊(Reserve,用于替換新產生的壞塊),其它的則為壞塊,所有存儲塊的管理均采用單向鏈表方式進行管理。

        在大部分的Flash存儲空間管理系統(tǒng)中可能并不存在保留塊,在本系統(tǒng)中增加保留塊的作用主要是,當部分存儲塊因為反復擦寫成為新的壞塊時,可以用保留塊取而代之成為新的空閑塊,從而使得留給用戶的可用存儲塊總數(shù)在一定時期內是一定的,這樣做的優(yōu)點是可以增強數(shù)據(jù)的安全性,延長整個Flash的使用周期,缺點是用戶可用的存儲空間相對減少,不過在Flash芯片技術迅速發(fā)展的今天,大容量的Flash芯片價格已經(jīng)十分低廉,數(shù)據(jù)安全才是嵌入式系統(tǒng)設計最值得重視的。

        在本文的設計中,統(tǒng)一規(guī)定Flash每一塊的第一頁的Spare Area為數(shù)據(jù)塊狀態(tài)信息標記區(qū),具體規(guī)定如表2所示:

        根據(jù)上表的設計,塊擦除次數(shù)最大為224 ? 1 = 16777215 ,遠大于Flash的最大擦除次數(shù)10到100萬次;塊狀態(tài)標記字節(jié),0xFF代表其為空閑塊,0xFD代表其為保留塊,0xFC代表其為有效塊,0xF0代表其為無效塊,0x00則表明當前塊為壞塊,在壞塊管理表中其對應位為0。

        電能表相關文章:電能表原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 石城县| 黄冈市| 昂仁县| 钟山县| 兰考县| 昌都县| 穆棱市| 赤壁市| 密云县| 行唐县| 新河县| 平山县| 抚顺县| 五寨县| 曲沃县| 彭阳县| 泸水县| 阳西县| 铜陵市| 海淀区| 平昌县| 海宁市| 大兴区| 大英县| 本溪市| 广州市| 辽宁省| 蓝田县| 西乌珠穆沁旗| 广饶县| 凤翔县| 乌海市| 邵阳市| 皮山县| 伊金霍洛旗| 楚雄市| 琼结县| 康乐县| 于田县| 临汾市| 阿拉善左旗|