嵌入式開發之NorFlash 和NandFlash

嵌入式開發之NorFlash 和NandFlash




Author:tiger-john
Time:2013-07-11(
重新修改)
mail:[email protected]
Blog:http://blog.csdn.net/tigerjb/article/details/9322035

轉載請註明出處!



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

 

 

前言:

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

1. NorFlash和NandFlash啓動方式

(1)NorFlash有自己的數據和地址總線,因此可採用類似RAM的隨機訪問。NorFlash的特點是芯片內執行(XIP: eXecute In Place),這樣應用程序應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。如果uboot中的ro段就可以直接在NorFlash上運行,只需要把rw段和zi段拷貝到RAM中運行即可。

(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上就可以了。

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便宜,接口簡單點,但速度慢。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章