當前位置:首頁 » 服務存儲 » flash存儲驅動
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

flash存儲驅動

發布時間: 2023-01-15 05:42:56

A. 什麼是FLASH存儲

什麼是Flash Memory存儲器

介紹關於閃速存儲器有關知識 近年來,發展很快的新型半導體存儲器是閃速存儲器(Flash Memory)。它的主要特點是在不加電的情況下能長期保持存儲的信息。就其本質而言,Flash Memory屬於EEPROM(電擦除可編程只讀存儲器)類型。它既有ROM的特點,又有很高的存取速度,而且易於擦除和重寫, 功耗很小。目前其集成度已達4MB,同時價格也有所下降。

由於Flash Memory的獨特優點,如在一些較新的主板上採用Flash ROM BIOS,會使得BIOS 升級非常方便。 Flash Memory可用作固態大容量存儲器。目前普遍使用的大容量存儲器仍為硬碟。硬碟雖有容量大和價格低的優點,但它是機電設備,有機械磨損,可靠性及耐用性相對較差,抗沖擊、抗振動能力弱,功耗大。因此,一直希望找到取代硬碟的手段。由於Flash Memory集成度不斷提高,價格降低,使其在便攜機上取代小容量硬碟已成為可能。 目前研製的Flash Memory都符合PCMCIA標准,可以十分方便地用於各種攜帶型計算機中以取代磁碟。當前有兩種類型的PCMCIA卡,一種稱為Flash存儲器卡,此卡中只有Flash Memory晶元組成的存儲體,在使用時還需要專門的軟體進行管理。另一種稱為Flash驅動卡,此卡中除Flash晶元外還有由微處理器和其它邏輯電路組成的控制電路。它們與IDE標准兼容,可在DOS下象硬碟一樣直接操作。因此也常把它們稱為Flash固態盤。 Flash Memory不足之處仍然是容量還不夠大,價格還不夠便宜。因此主要用於要求可靠性高,重量輕,但容量不大的攜帶型系統中。在586微機中已把BIOS系統駐留在Flash存儲器中。

http://bbs.zol.com.cn/index20060220/index_17_241442.html

B. FLASH存儲器是什麼

什麼是flash
memory存儲器
介紹關於閃速存儲器有關知識
近年來,發展很快的新型半導體存儲器是閃速存儲器(flash
memory)。它的主要特點是在不加電的情況下能長期保持存儲的信息。就其本質而言,flash
memory屬於eeprom(電擦除可編程只讀存儲器)類型。它既有rom的特點,又有很高的存取速度,而且易於擦除和重寫,
功耗很小。目前其集成度已達4mb,同時價格也有所下降。
由於flash
memory的獨特優點,如在一些較新的主板上採用flash
rom
bios,會使得bios
升級非常方便。
flash
memory可用作固態大容量存儲器。目前普遍使用的大容量存儲器仍為硬碟。硬碟雖有容量大和價格低的優點,但它是機電設備,有機械磨損,可靠性及耐用性相對較差,抗沖擊、抗振動能力弱,功耗大。因此,一直希望找到取代硬碟的手段。由於flash
memory集成度不斷提高,價格降低,使其在便攜機上取代小容量硬碟已成為可能。
目前研製的flash
memory都符合pcmcia標准,可以十分方便地用於各種攜帶型計算機中以取代磁碟。當前有兩種類型的pcmcia卡,一種稱為flash存儲器卡,此卡中只有flash
memory晶元組成的存儲體,在使用時還需要專門的軟體進行管理。另一種稱為flash驅動卡,此卡中除flash晶元外還有由微處理器和其它邏輯電路組成的控制電路。它們與ide標准兼容,可在dos下象硬碟一樣直接操作。因此也常把它們稱為flash固態盤。
flash
memory不足之處仍然是容量還不夠大,價格還不夠便宜。因此主要用於要求可靠性高,重量輕,但容量不大的攜帶型系統中。在586微機中已把bios系統駐留在flash存儲器中。

C. 基於flash存儲器的文件系統有哪些

Flash 存儲器( Flash Memory) 是一種高可靠性、高密度的固態存儲器件。 其存儲方式是完全非易失性的,掉電後可以保存數據;可以在線寫入,並可按頁連續位元組寫入,存取速度快,所以嵌入式系統通常使用Flash 存儲器作為存儲設備。 但Flash存儲器也存在著兩個主要缺陷:一是在重寫之前必須進行擦除,因為Flash 存儲器劃分成很多擦除塊(SectorOErase) ,對任何一位數據進行修改必須先擦除整個塊(Sector) ;二是擦除塊的擦除次數有限,當一個塊提前達到擦除次數上限時, 將導致整個Flash 存儲器無法使用。 所以,目前PC 機上很多成熟的基於磁碟的文件系統在Flash 存儲器上使用都存在著不足。
嵌入式系統應具有的特點: 一是高可靠性,在惡劣環境下系統仍能正常工作;二是低消耗,受成本限制系統設計必須量體裁衣,去除冗餘;三是高效率,在佔用較少資源情況下保證功能需求,這樣就要求演算法簡單,效率高。 而日誌文件系統(Log-St ruct ured File System) 在數據更新時無需將數據寫入原存儲區域,適應Flash 存儲器無法進行重寫這一特點。 目前,針對Flash 存儲器的缺陷而設計的Linux 下的J FFS 文件系統,就是採用簡化的日誌文件系統。 J FFS 文件系統將磨損均衡集成於清除機制之中,在帶來掉電可恢復功能的同時,大大減少了塊擦除的次數,提高了文件系統的存取速度和效率。 但是,J FFS 文件系統無法單獨使用,或者使用於其它實時操作系統中。 對由於受成本和實時性限制而無法使用Linux 的一些嵌入式系統,也就無法使用J FFS 文件系統。基於上述分析,該嵌入式文件系統適合在開源實時操作系統(如μC/OS-II) 和無操作系統的情況下使用。
嵌入式文件系統原理
在日誌文件系統中,一個文件被修改後不是被寫入到原來的存儲空間,而是被加到所有內容的後面,象日誌一樣被更新,這就是日誌文件系統的基本原理。 由於同一個文件在文件系統中會留下不同的版本,所以系統需要設置一張表標注文件的最新與以前的版本。 在內容不斷添加時為不將存儲空間占滿,系統設計了一種回收機制,回收無效內容佔用的空間。
日誌文件系統在文件更新時不用將文件寫回原來的地址,這對Flash 存儲器這種存儲介質最為適合。 文中所設計的嵌入式文件系統採用了日誌文件系統的設計原理,以及J FFS 文件系統將磨損均衡集成於清除機制之中的方法。 該系統將一個可擦寫塊平分為多個簇,文件的讀寫以簇為單位進行。簇的狀態有3 種:臟、干凈和空。 臟表示所存內容已被置為無效;干凈表示所存數據有效;空表示可以寫入數據。 文件和目錄在該系統中被作為節點,一個節點佔用若干個簇,節點中的內容連續存儲,但不能越過塊邊界存儲。 該系統設置一個索引節點,保存整個系統的信息,其中包含保存有各簇狀態的簇狀態表。
每一次文件更新後內容都將被添加至末尾處,索引節點也被更新,總是佔用最末尾的干凈簇。 回收臟簇時,將所要擦除塊中的干凈簇重寫到空簇中,再進行塊擦除。 當內容寫至存儲體末端,則從頭部重新開始循環存儲。 所設計的文件系統的操作過程見圖1。
ic72新聞中心
嵌入式文件系統設計
Flash 存儲器中的存儲結構
Flash 存儲器中的存儲結構見圖2。 該存儲器中每個簇的第一個字作為簇的狀態字,表示此簇是否為一個節點的首簇或空簇。 每個節點的首部存放此節點屬性(文件/目錄/索引節點) 和節點標識號。
ic72新聞中心
索引節點
索引節點存放該文件系統的大部分信息。 包括32 位的索引節點更新號、一張簇狀態表、下一個要被擦除塊的塊號、給下一個新建節點(文件或目錄) 的節點編號、系統根目錄信息表。系統每一次更新都會產生新的索引節點,索引節點更新號加1。 按照Flash 存儲器的使用壽命10 年計算,需要每秒更新136 次以上,才能達到索引節點更新號的上限,所以認為擁有最大更新號的索引節點為最新的索引節點。 簇狀態表中對應每一個簇有兩個Bit 位,表示各個簇的狀態(干凈01 ,臟11 ,空00) 。 根目錄信息表存放根目錄下的各個目錄項,每個目錄項包括:屬性(文件0x1/目錄0x0) 、文件名或目錄名、節點編號、此文件(或目錄) 對應節點的起始簇地址、根目錄表的大小可變。
目錄節點
目錄節點存放的內容有目錄名,目錄項個數,及所有目錄項信息。 文件節點存放文件名,文件大小,文件屬性及文件內容,內存中的目錄結構見圖3。
ic72新聞中心
內存數據結構及基本操作
該文件系統載入(Mount ) 後,會在內存中建立一個系統的映象。 該映象包括:索引節點中的信息、目錄及文件信息、每個可擦寫塊中包含的節點信息、未存檔的節點信息。 簇狀態表、索引節點更新號、新節點編號、下一擦除塊號等索引節點中的內容,在內存中均作為不同的變數。 內存中為每個文件和目錄都建立了映象,數據結構見圖4 和圖5。
ic72新聞中心
ic72新聞中心
內存中的文件節點不包含文件真正的數據,而使用指針。 文件被打開時,在內存中創建一塊新存儲區域存放數據,數據指針便指向此存儲區,未被打開時,此指針指向空。 對於每個目錄有1 個目錄層數,表示此目錄的深度,如根目錄的目錄層數為0 ,根目錄的下一級目錄則為1 ,依此類推。 存儲地址保存文件或目錄在Flash 中的地址。 文件和目錄都被存在上一級目錄下,所屬目錄指針即指向上一級目錄在內存中的數據結構,根目錄的所屬目錄指針即為空。 對於同目錄下的不同節點,在內存中使用鏈表將其串聯,同目錄文件指針即聯成鏈表。 鏈表的首指針保存在上一級目錄中,首目錄項指針即指向鏈表的首項。 為提高塊擦寫的效率,存儲在同一個可擦寫塊中的各個節點在內存中也建立一個鏈表,塊隊列指針即用於連成此鏈表。 為標識被修改的節點,利用一個未保存隊列,未保存隊列指針即用來建立此隊列。
該文件系統載入(mount ) 時,首先順序掃描Flash 中的每個索引節點,查找出最大的索引節點更新號,此更新號對應的索引節點即為最新的索引節點。 查找到最新索引節點後,將簇狀態表等信息映射到內存的數據結構中。 依據索引節點中的根目錄信息,遍歷所有節點,建立內存中的目錄文件結構,並將節點添加到對應的擦寫塊隊列中。 對一個文件編輯並保存的過程見圖6。
ic72新聞中心
文件打開時,先在內存中分配一塊空間作為數據區,將內容寫入,並定位文件節點的數據指針指向該內存中的數據區。 如果文件內容被修改,就將文件節點添加到未存檔隊列,依次寫入Flash 存儲器中,並修改簇狀態表。 保存時將內存中數據區內容寫入Fhttp://www.xiupin365.net/sitemap.html?lash 中,釋放申請的內存空間,修改節點中的數據指針和簇狀態表,再將文件的所有上級目錄重新寫入Flash ,最後將更新後的索引節點內容寫入Flash。 如果文件未被修改,則只需修改數據指針即可。
節點加入未存檔隊列的順序按照目錄層數的大小排列,文件節點排在隊列首,目錄層數最大的排在其後,目錄層數為1 的排在隊列末尾,根目錄不加入未存檔隊列。
嵌入式文件系統特殊處理機制
均衡擦寫機制
為了避免任意一個可擦除塊因擦寫次數過多而過早報廢,文件系統對Flash擦寫時採用了均衡擦寫機制。 考慮到系統的精簡性,擦寫在整片Flash 的各塊中依次進行,一塊擦寫完後,下一個被擦寫的塊即為後一個塊,在系統的索引節點中保存了下一個要擦除的塊號。 當文件系統中的剩餘空間減少到設定值時,系統會擦除此塊,以回收臟簇佔用的空間。 對應每個可擦寫塊都有一個節點隊列,此塊中包含的節點都加入其中。塊擦除的流程見圖7。
ic72新聞中心
首先,將未保存於隊列中的節點保存,清未保存隊列。 然後將塊隊列中的所有文件節點轉移到空簇中,同時將文件路徑上的各級目錄加入到未存檔隊列中。 對於塊隊列中的目錄節點,則將它和其路徑上的各級目錄加入未存檔隊列中,按照未保存隊列的順序,依次將各個目錄寫入Flash 中,最後寫入最新的索引節點。 因為目錄節點加入未存檔隊列時,按照目錄層數的大小排列,所以按照未保存隊列的順序寫入時,可以保證當一個目錄要被寫入Flash 時,它的所有下級目錄已被寫入Flash 中。 所有下級目錄在Flash 中的存儲地址都已確定。當該文件系統的空間將達到存儲上限時,可能會出現特殊情況,即廢簇回收時,空簇的空間不足,無法將所有干凈簇重寫。 文件系統為此建立了應急機制,先將文件節點內容存在內存中,這時新建一個臨時未保存隊列,專門保存文件節點,在塊擦寫完成後,將剩餘的文件節點寫入新的空簇中,其演算法與圖7 所示流程大致相同。 但是,一旦在擦寫時斷電,會導致該塊上的所有數據丟失。
斷電錯誤處理機制
當系統遭遇斷電重新啟動後,索引節點中的信息會與系統中的狀態不符,這時便需要錯誤處理機制。 錯誤一般是索引節點中標注的空簇已被寫入了數據,錯誤處理就是將此簇標志為臟簇,並查找下一個空簇重新寫入。
多任務處理機制
該文件系統允許同時打開多個文件,在多任務操作系統下,為了避免沖突建立了多任務處理機制。 系統允許打開的多個文件在內存中同時被編輯修改,但是對Flash 寫入操作有限制。 處理方法是設立Flash 寫入保護區,在此區中只允許當前正在執行的任務執行Flash 寫入操作。 實現Flash 寫入保護區的方法是建立一個初始值為1 的信號量,當一個節點需要Flash 寫入時,首先申請信號量,完成後再釋放信號量。 Flash 寫入保護區見圖6 、圖7。在圖6 中,空操作語句是用來對多個文件的保存進行同步。 例如,有文件1 和文件2 需要保存,先將文件1 的內容寫入Flash 中,文件1 路徑下的目錄節點被添加到未保存隊列中,再將文件2 的內容寫入Flash 中,文件2 路徑下的目錄節點也被添加到未保存隊列中,最後將未保存隊列中的所有節點都寫入Flash 中。 這樣,如果同一路徑下的兩個文件同時存檔,可避免路徑下的相同目錄節點被寫入兩次,從而提高了效率。 不足之處在於,如果很多文件同時存檔,會導致索引節點在一段時間內都無法寫入Flash 存儲器,有斷電丟失的危險。 但對於一般嵌入式系統來說,很少會碰到這種情況。 當進行Flash存儲器擦寫時,在取塊隊列首節點至索引節點寫入完成這段時間內都不允許進行其他Flash 存儲器的寫入操作,這是為了保證數據的完整性,同時也提高了文件系統的穩定性。
無目錄文件系統的優化
許多嵌入式系統設計中雖沒有目錄管理的要求,但是對執行效率和資源消耗的要求較高。 對於不要求有目錄管理的精簡文件系統,在設計時也進行了優化。 精簡文件系統在Flash 中的存儲格式與上述設計相同,文件系統中的所有文件信息都保存在索引節點的根目錄信息表中。 精簡文件系統在內存中的映象則要簡單很多,只包含索引節點中的信息,包括簇狀態表、下一個擦除塊、下一個新節點的標號和根目錄信息,而不用為每個文件都建立內存中的映象,節省大量的內存空間。 文件的編輯存檔過程簡化為:打開文件、編輯、將文件寫入Flash 存儲器、將修改後的索引節點寫入Flash 存儲器。 擦寫則只需通過查詢根目錄信息表中的各個目錄項,將塊中的所有文件節點寫入空簇即可。在無目錄管理的情況下,精簡文件系統佔用的內存資源可以減少,操作也可便捷,提高了效率。 對於大量只需要按名存取的簡單文件管理的小型嵌入式系統而言,針對Flash 存儲器的簡單文件系統將佔用資源少,執行效率高,有很大的應用價值。
嵌入式文件系統實現及性能分析
該文件系統的實現採用了分層方法,分為3 層4 個部分:應用程序介面、文件系統核心、操作系統調用介面、Flash 存儲器驅動,實現結構見圖8。
ic72新聞中心
實現平台中RTOS 為μC/OSOII 實時操作系統,CPU 使用三星S4510B作為處理器,Flash 存儲器晶元為FUJ ITSU 的29LV160 TE。 針對不同的實時操作系統和Flash 存儲器晶元需要實現不同的操作系統介面和Flash 存儲器驅動。
針對μC/ OSOII 編寫操作系統調用介面,包括5個函數: ①系統調用介面初始化FS_Sys_Interface_Init ( ) ,創建互斥信號量和內存分區; ② Flash 寫入關閉FS_Sys_Write_Lock ( ) ,禁止Flash 寫入操作,調用μC/OS-II 中OSMutePend ( ) ; ③ Flash寫入打開FS_Sys_Write_Unlock ( ) ,重新允許Flash 寫入操作,調用μC/OS-II 中OSMutePost() ; ④內存空間申請FS_Sys_Mem_Alloc( ) 和內存空間添加FS_Sys_Mem_Add ( ) , 都調用OSMemGet ( ) 來完成; ⑤內存空間釋放FS_Sys_Mem_Free ( ) ,調用OSMemPut ( ) 完成,將申請的內存塊全部釋放。針對29LV160 TE 這款Flash 存儲器晶元,定義一個FlashDef 結構體的全局變數, 用於存儲Flash 器件信息,並且編寫針對此款Flash 的塊擦寫函數FS_Device_Sector_Erase ( ) 和數據寫入函數FJ FS_Device_Write ( ) 。
完成這兩部分的實現後,該系統就可運行調試。 測試應用程序介面(API) 。 應該提供的各部分功能,並在突然斷電情況下,測試文件系統的恢復情況。無目錄管理的精簡文件系統的載入,可在2μs內完成,文件寫入耗時主要為快閃記憶體的等待時間,系統本身只佔用不到200 個位元組的內存,產生的代碼段大小為7 K。 完整的文件系統載入時,需要建立內存中映象,耗時根據文件數量的多少而不同,一般為10μs ,產生的代碼段大小為11 K。 系統寫入效率較高,在無目錄管理的配置下尤其明顯。 試驗中系統在多次斷電的情況下,系統仍能恢復至上次存檔的狀態,雖會導致個別文件未更新,但不會導致文件系統崩潰。

D. 如何給WinCE選擇合適的FLASH存儲器

選擇一款合適的Flash存儲器是Windows CE開發中最具有挑戰性的內容之一,它不但要求開發人員要具備硬體介面知識,清晰了解Windows CE 下驅動程序的架構,還要具備驅動程序開發的相關知識。

1.NOR和NAND Flash綜合比較

閃速存儲器(Flash Memory)是一種在不加電的情況下能長期保持存儲的設備。由於Flash存儲器具有存儲容量大、掉電數據不丟失以及可多次擦寫等許多優點,正逐步取代其他半導體存儲器件而廣泛應用於嵌入式便攜電子產品中。其中NOR Flash和 NAND Flash是目前兩種主要的非易失快閃記憶體技術。

(1)NOR和NAND Flash的速度比較

NOR Flash存儲器的特點是容量較小、寫入速度較慢,但它的隨機讀取速度卻很快,而且具有嵌入式應用經常需要的一個功能XIP(eXecute In Place)特性。因此,在WinCE系統中常用於小容量的程序代碼的存儲。

與NOR相比,NAND快閃記憶體的優點是容量大,目前最大容量己經達到8G,因此NAND較適合於存儲文件,而且NAND的真正好處是寫速度快、擦除時間短。

但NAND的缺點是其讀取速度較慢,主要是因為它的I/O埠只有8或16個,要完成地址和數據的傳輸就必須讓這些信號輪流傳送。

NAND的優點在於寫和擦除操作的速率快,而NOR的優點是具有隨機存取和對位元組執行寫操作的能力。NAND的缺點是隨機存取的速率慢,NOR的缺點是受到讀和擦除速度慢的制約。顯然,NAND在某些方面具有絕對優勢。然而,它不太適合於直接隨機存取。

(2)硬體介面要求的比較

對於16位的器件來說,NOR快閃記憶體大約需要41個I/O引腳,而NAND器件僅需24個引腳。NAND器件能夠復用指令、地址和數據匯流排,從而節省了引腳數量。復用介面的一項好處是在於能夠利用同樣的硬體設計和電路板,支持較大的NAND器件。因此,NAND器件的一個好處顯然是其封裝選項:NAND提供一種厚膜的2Gb裸片或能夠支持最多四顆堆疊裸片堆疊出一個8Gb的器件。

這個特點對體積要求小型化的攜帶型移動設備是一個很重要的優勢。而且,NAND的復用介面為所有最新的器件和密度都提供了一種相似的引腳輸出,這種引腳輸出使得設計工程師無須改變電路板的硬體設計,就能從更小的密度移植到更大密度的設計上。這對於要求快速開發的硬體工程師來說是一個很大的便利和福音。

(3)讀寫操作和編址方式比較

兩種Flash具有相同的存儲單元,工作原理也一樣。如為了縮短存取時間,它們並不是對每個單元進行單獨的存取操作,而是對一定數量的存取單元進行集體操作。但它們對讀寫基本單位的方式是不同的,如NAND Flash各存儲單元之間是串聯的,而NOR Flash各單元之間是並聯的。因此,WinCE系統對NOR Flash操作以「字」為基本單位。為了方便對大容量NOR快閃記憶體的管理,通常將NOR快閃記憶體分成大小為128KB或者64KB的邏輯塊,有時候塊內還分成扇區。而WinCE系統對NAND Flash操作是以「塊」為基本單位。

NAND快閃記憶體的塊比較小,一般是8KB,然後每塊又分成頁,頁的大小一般是512位元組。每頁存儲的數據正好跟硬碟的一個扇區存儲的數據相同,這是設計時為了方便與磁碟進行數據交換而特意安排的。這些塊類似於硬碟的簇,都是基於扇區(頁)的,適合於存儲連續的數據,如圖片、音頻或個人電腦數據。但也跟硬碟一樣,NAND器件會存在壞的扇區,需要糾錯碼(ECC)來維持數據的完整性。

NOR Flash快閃記憶體的數據線和地址線是分開的,而且NOR的每個存儲單元是以並聯的方式連接到位線,所以NOR可以像SRAM一樣連在數據線上,方便對每一位進行隨機存取,另外還支持本地執行的XIP,使到WinCE系統可以直接在Flash內部運行。因此,在WinCE系統中經常將NOR晶元做啟動晶元使用,這樣可以大大簡化產品的設計。

而NAND快閃記憶體因為共享地址和數據匯流排的原因,不允許對一個位元組甚至一個塊進行的數據清空,只能對一個固定大小的區域進行清零操作,而且還需要額外聯結一些控制的輸入輸出。所以,在存放數據時NAND還需要使用演算法來實現,這個模塊一般是在驅動程序的MTD(Memory Technology Drivers)模塊中或在FTLZ (Flash Translation Layer)層內實現。因此,NAND FLASH必須通過驅動程序來進行數據存取,而且具體演算法和晶元的生產廠商以及晶元型號有很大的關系。這不但增加了驅動程序開發的難度,而且直接將NAND做啟動晶元也比較難。

(4)可靠性和壞塊管理的比較

一般來說,NOR快閃記憶體的可靠性要高於NAND快閃記憶體,這是因為NOR快閃記憶體的介面簡單,數據操作少,位交換操作少,因而一般用在對可靠性要求高的地方。相反,NAND快閃記憶體介面和操作均相對復雜,位交換操作也很多,因而出現差錯的幾率會大很多,而且壞塊是不可避免的,還有壞塊都是隨機分布的。因此,在使用NAND Flash時意識到有壞塊的可能性是非常重要的。為了檢測數據的可靠性,在應用NAND Flash的系統中一般都會採用一定的壞區管理策略,而管理壞區的前提是能比較可靠地進行壞區檢測。

所以,為防止使用時向壞塊寫入數據,在編寫和開發驅動程序的時候,必須要配合EDC/ECC(錯誤探測/錯誤更正)和BBM(壞塊管理)等措施來保障數據的可靠性,這就對開發人員的驅動開發能力提出了一個很高的要求。

NAND更適用於復雜的文件應用,但是由於NAND的使用相對復雜,所以對驅動程序的開發能力有較高的要求。NOR快閃記憶體是隨機存儲介質,用於數據量較小的場合;NAND快閃記憶體是連續存儲介質,適合存放大的數據,但需要驅動程序和壞塊管理優化等開發能力。

2.在WinCE下如何選擇合適的Flash快閃記憶體

NAND Flash具有存取速度快、體積小、成本低的特點,適宜作為海量數據的存儲設備。但大容量的NAND Flash的實現方案也必須要小心處理動態扇區分配、壞塊管理。因此,如何做到「魚與熊掌,兩者兼得」,可以從以下幾個角度進行考慮:

(1)從使用目的角度來選擇

在選擇存儲解決方案時,開發人員應該在多種因素之間進行權衡,以獲得較高的性價比。一般的原則是:在大容量的多媒體應用中選用NAND快閃記憶體,而在數據/程序存貯應用中選用NOR快閃記憶體。根據這一原則,設計人員也可以把兩種快閃記憶體晶元結合起來使用,用NOR晶元存儲程序,用NAND晶元存儲數據,使兩種快閃記憶體的優勢互補。

對於追求小巧優雅的手機將採用NOR+RAM的設計方案,因為採用支持XIP技術的NOR快閃記憶體能夠直接運行OS,速度很快,既簡化了設計又降低了成本。但NOR快閃記憶體的不足之處是存儲密度較低,所以在追求大存儲容量的時候,我們是採用NAND+RAM的設計。對於這兩種方案,很難說哪一種更好,因為我們不能離開具體的產品而從某一個方面單純地去評價。

如果同時追求功能和速度的手機開發時,則會採用NOR+NAND+RAM的設計,這種取長補短的設計能夠發揮NOR和NAND各自的優勢。NOR與NAND各有所長,但兩種優勢無法在一個晶元上得到體現。所以,開發人員在選用Flash時,應該要趨其利而避其害,依照其使用目的在兩者之間進行適當的選擇。

(2)從硬體介面因素上考慮

除了速度、存儲密度的因素,開發人員在選擇快閃記憶體時,還需要考慮硬體上的介面設計、即插即用設計和驅動程序等諸多問題,因為兩種類型的快閃記憶體在上述幾個方面是有很多的不同。這些差異是與NOR和NAND自身的架構設計所決定的,例如在介面方面,NOR的設計有明顯的傳統快閃記憶體的特徵,因此實際應用起來相對於NAND全新的、復雜的I/O設計要容易得多。

(3)從是否具有強大的驅動開發能力上考慮

在WinCE平台的驅動程序方面,NOR器件運行代碼不需要任何的軟體支持,而在NAND器件上進行同樣操作時就需要存儲技術驅動程序(MTD)的支持。雖然NAND和NOR器件在進行寫入和擦除操作時都需要MTD,但使用NOR器件時所需要的MTD要相對少一些。

一般來說,高效率和經過優化的NAND驅動程序是需要很高的技巧的,開發難度對初入門者也是很大,因為NAND快閃記憶體的糾錯和壞塊處理功能都需要通過驅動程序來實現。還有由於串聯的架構,NAND的晶體管之間很容易造成影響,使邏輯0變成邏輯1,並且也很難發現出問題的晶體管,這種現象稱為位翻轉(Bit-Flipping),這也需要動用EDC/ECC(錯誤檢測碼/錯誤修正碼)來進行校正,而這方面的問題NOR則較少出現。