嵌入式開發之NorFlash 和NandFlash

http://blog.csdn.net/tigerjibo/article/details/9322035算法

flash的不一樣分類架構

Nand Flash,Nor Flash,CFI Flash,SPI Flash 之間的關係性能

 

[摘要]:做爲一個嵌入式工程師,要對NorFlash 和NandFlash要有最起碼的認知。本文經過從啓動方式、讀寫方式、容量成本、可靠性、壽命以及是使用型上進行了全面的分析和對比。任何事物都兩面 性,所以其自己沒有好壞之分,重要的是咱們如何使用使其達到性能上的最佳,最後敘述瞭如何在NorFlash 和NandFlash上進行抉擇。大數據

 

 

前言:

目 前,各種DDR,SDRAM或者RDRAM都屬於 都屬於揮發性內存,只要中止電流供應內存中的數據便沒法保持。Flash是一種非易失性( Non-Volatile )內存,在沒有電流供應的條件下也可以長久地保持數據,其存儲特性至關於硬盤,這項特性正是閃存得以成爲各種便攜型數字設備的存儲介質的基礎。spa

1. NorFlash和NandFlash啓動方式

(1)NorFlash 有本身的數據和地址總線,所以可採用相似RAM的隨機訪問。NorFlash的特色是芯片內執行(XIP: eXecute In Place),這樣應用程序應用程序能夠直接在flash閃存內運行,沒必要再把代碼讀到系統RAM中。若是uboot中的ro段就能夠直接在 NorFlash上運行,只須要把rw段和zi段拷貝到RAM中運行便可。.net

(2)Nand Flash器件使用複雜的I/O口來串行的存取數據,8個引腳用來傳送控制,地址和數據信息。因爲時序較爲複雜,因此通常CPU最好集成NAND控制器。 另外因爲NandFlash沒有掛接在地址總線上,因此若是想用NandFlash做爲系統的啓動盤,就須要CPU具有特殊的功能。如s3c2410具備 一個stepping stone。架構設計

Note:設計

1>S3C2410 之因此能夠將loader代碼燒在NAND上從而boot,是因爲s3c2410有一個內置的SRAM,叫作stepping stone.當加電後,能夠自動將NAND的起始4K的內容拷貝到SRAM裏,而後在RAM裏執行,將NAND裏的代碼拷貝至SDRAM。也就是咱們就可 以講一個小於4K的loader燒至NAND Flash上就能夠了。blog

2> NorFlash   隨機存儲介質,適合作代碼存儲並EIP,讀取速度快。接口

NandFlash   連續型存儲介質,適合用來作大量數據存儲的。

2. NorFlash與NandFlash型讀寫的基本單位不一樣

NandFlash和NorFlash的共性首先表如今向芯片中寫數據必須先將芯片中對應的內容清空,而後再寫入,也就是一般說的先檫後寫」。只不過NorFlash只用檫寫一個字,而NandFlash須要擦寫整個塊

(1)應用程序對NorFlash操做以爲基本單位。爲了方便對大容量NOR閃存的管理,一般將NOR閃存分紅大小爲128KB或者64KB的邏輯塊,有時候塊內還分紅扇區。讀寫時須要同時邏輯塊號和塊內偏移。

(2)應用程序對NandFlash操做是」爲基本單位。NandFlash的塊比較小,通常是8KB,而後每塊又分紅頁,頁的大小通常是512字節。要修改NandFlash中一個字節,必須重寫整個數據塊。

So:

1>NorFlash 能夠對字進行操做,在處理小數據量的I/O操做的時候速度要比NandFlash快。

2>NandFlash只能對一個固定大小的區域進行清零操做

3>NAND 器件執行擦除操做是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內全部的位都寫爲1。擦除NOR器件時是以64~128KB的塊進行的,執行一個 擦除/寫入操做的時間約爲5s。擦除NAND器件是以8~32KB的塊進行的,執行一個擦除/寫入操做最多隻須要4ms(此處是大數據狀況下)。

3.NorFlash和NandFlash容量與成本對比

(1)NorFlash的容量相對要小,且成本較高。

(2)NandFlash的容量比較大,目前最大容量已經達到8G字節。爲了方便管理,NandFlash的存儲空間使用了塊和頁兩級存儲體。因爲對NandFlash的操做都是以塊和頁爲單位的,因此在向NandFlash進行大量數據讀寫時,NandFlash的速度要快於NorFlash閃存。而且NandFlash成本較低。

4.NorFlash和NandFlash可靠性對比

(1)NorFlash的可靠性要高於NandFlash,這主要是由於)NorFlash的接口簡單,數據操做少,所以可靠性高,極少出現塊區塊,於是通常用在對可靠性要求高的地方。

(2)NandFlash接口和操做均相對複雜,位交換操做也不少,關鍵性數據更是須要錯誤探測/錯誤更正算法來確保數據的完整性,所以出現問題的概率要大的多,壞區塊也是不可避免的,並且因爲壞區塊是隨機分佈的,連糾錯也沒法作到。

所以:建議在使用NandFlash時,要採用EDC/ECC等校驗算法

5. NorFlash和NandFlash壽命對比

Flash檫寫的次數都是有限的,當Flash的使用接近使用壽命的時候,常常會出現些操做失敗;到達使用壽命時,Flash內部存放的數據雖然能夠讀,可是不能再進行寫操做,因此爲了防止上面問題的發生,不能對某個特定的區域反覆進行寫操做。

一般NandFlash的可檫寫次數高於NorFlash,可是因爲NandFlash一般是整塊檫寫,塊內的頁面中若是有一位失效整個快就會失效,並且因爲檫寫過程複雜,失敗的機率相對較高,因此從總體上來講NorFlash的壽命較長。

Note:

在NandFlash中每一個塊的最大擦寫次數是一百萬次,而NorFlash的擦寫次數是十萬次。Flash的使用壽命同時和文件系統的機制也有關,要求文件系統具備損耗平衡功能

6.使用上差別

在使用性上體現出的差別也是與NOR和NAND自身的架構設計分不開的。

(1)接口方面:NOR的設計有明顯的傳統閃存的特徵,所以實際應用起來相對於NAND全新的複雜I/O設計要容易的多。並且,在使用NAND閃存時,必須先寫入驅動程序,才能繼續執行其餘操做

(2)NAND在使用中還存在者壞塊管理的問題,在NAND閃存中,因爲壞塊是隨機分佈的,所以須要進行掃描並將壞塊打上標記。壞塊的存在使得向NAND閃存寫入信息須要至關的技巧,由於毫不能向壞塊寫入,這意味着在NAND閃存上自始自終都必須進行虛擬映射。

(3)在NOR閃存上運行代碼不須要任何的軟件支持,在NAND閃存上進行一樣操做時,一般須要驅動程序,也就是內存技術驅動程序(MTD), NAND和NOR閃存在進行寫入和檫除操做時都須要MTD。

(4)使用NOR閃存時所須要的MTD要相對少一些,許多廠商都提供用於NOR閃存的更高及軟件,這其中包括M-System的TrueFFS驅動。

7.如何抉擇:

(1)通常的原則是:在大容量的多媒體應用用選用NandFlash,而在數據/程序存儲應用中選用NorFlash。

(2)咱們通常用NorFlash存儲程序,用NandFlash存儲數據,使兩種閃存的優點互補。

舉例:

採 用支持XIP技術的NOR閃存可以直接運行OS,速度很快,既簡化了設計,又下降了成本,因此許多手機都採用NOR+RAM的設計。NOR閃存的不足之處 是存儲密度較低,因此也有采用NAND+RAM的設計。對於這兩種方案,很難說哪種更好,由於咱們不能離開具體的產品而從某一個方面單純地去評價。追求 小巧優雅的手機將須要NOR閃存支持;追求大存儲容量的手機則將更多地選擇NAND閃存;而同時追求功能和速度的手機則會採用NOR+NAND+RAM的 設計,這種取長補短的設計可以發揮NOR和NAND各自的優點。

(4) 除了速度、存儲密度的因素,在選擇閃存芯片時,還須要考慮接口設計、即插即用設計和驅動程序等諸多問題,由於兩種類型的閃存在上述幾個方面也有不少的不 同。好比在驅動程序方面,NorFlash運行代碼不須要任何的軟件支持,而在NandFlash上進行一樣操做時就須要存儲技術驅動程序(MTD)的支 持。雖然NAND和NOR器件在進行寫入和擦除操做時都須要MTD, 但對於NAND來講驅動程序的開發難度更大,由於NAND閃存的糾錯和壞塊處理功能都須要經過驅動程序來實現

8補充知識點 SPI Flash

       SPI Flash即serial peripheral interface串行外圍設備接口是一種常見的時鐘同步串行通訊接口,是NorFlash的一種。

      NorFlash根據數據傳輸的位數能夠分爲並行(Parallel)NorFlash和串行(SPI)NorFlash(即SPI Flash)。

      SPI NorFlash每次傳輸一個bit位的數據,parallel NorFlash每次傳輸多個bit位的數據(有x8和x16bit兩種);SPI Flash便宜,接口簡單點,但速度慢。

相關文章
相關標籤/搜索