Flash編程原理都是只能將1寫為0,而不能將0寫成1。所以在Flash編程之前,必須將對(duì)應(yīng)的塊擦除,而擦除的過程就是將所有位都寫為1的過程,塊內(nèi)的所有字節(jié)變?yōu)?xFF。因此可以說(shuō),編程是將相應(yīng)位寫0的過程,而擦除是將相應(yīng)位寫1的過程,兩者的執(zhí)行過程完全相反。
(1)閃存芯片讀寫的基本單位不同
應(yīng)用程序?qū)orFlash芯片操作以“字”為基本單位。為了方便對(duì)大容量NorFlash閃存的管理,通常將NOR閃存分成大小為128KB或64KB的邏輯塊,有時(shí)塊內(nèi)還分扇區(qū)。讀寫時(shí)需要同時(shí)指定邏輯塊號(hào)和塊內(nèi)偏移。應(yīng)用程序?qū)andFlash芯片操作是以“塊”為基本單位.NAND閃存的塊比較小,一般是8KB,然后每塊又分成頁(yè),頁(yè)大小一般是512字節(jié)。要修改NandFlash芯片中一個(gè)字節(jié),必須重寫整個(gè)數(shù)據(jù)塊。
(2)NorFlash閃存是隨機(jī)存儲(chǔ)介質(zhì),用于數(shù)據(jù)量較小的場(chǎng)合;NandFlash閃存是連續(xù)存儲(chǔ)介質(zhì),適合存放大的數(shù)據(jù)。
(3)由于NorFlash地址線和數(shù)據(jù)線分開,所以NorFlash芯片可以像SDRAM一樣連在數(shù)據(jù)線上。NOR芯片的使用類似于通常內(nèi)存芯片,傳輸效率高,可執(zhí)行程序可以在芯片內(nèi)執(zhí)行(XI P, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中.由于NorFlash的這個(gè)特點(diǎn),嵌入式系統(tǒng)中經(jīng)常將NOR芯片做啟動(dòng)芯片使用。NandFlash共用地址和數(shù)據(jù)總線,需要額外聯(lián)結(jié)一些控制的輸入輸出,所以直接將NAND芯片做啟動(dòng)芯片比較難。
(4)NandFlash閃存芯片因?yàn)楣灿玫刂泛蛿?shù)據(jù)總線的原因,不允許對(duì)一個(gè)字節(jié)甚至一個(gè)塊進(jìn)行的數(shù)據(jù)清空,只能對(duì)一個(gè)固定大小的區(qū)域進(jìn)行清零操作;NorFlash芯片可以對(duì)字進(jìn)行操作。所以在處理小數(shù)據(jù)量的I/O操作的時(shí)候的速度要快與NorFlash的速度。比如一塊NorFlash芯片通常寫一個(gè)字需要10us,在32位總線上寫512字節(jié)需要1280us;NandFlash閃存寫512字節(jié)需要的時(shí)間包括:512×每字節(jié)50ns+10us的尋頁(yè)時(shí)間+200us的片擦寫時(shí)間=234us。
(5)NandFlash閃存的容量比較大,最大容量己達(dá)到8G字節(jié).為了方便管理,NandFlash的存儲(chǔ)空間使用了塊和頁(yè)兩級(jí)存儲(chǔ)體系,也就是說(shuō)它的存儲(chǔ)空間是二維的,比如K9F5608UOA閃存塊的大小為16K,每頁(yè)大小是512字節(jié),每頁(yè)還16字節(jié)空閑區(qū)用來(lái)存放錯(cuò)誤校驗(yàn)碼空間(也稱為out-of-band,OOB空間)。在進(jìn)行寫操作時(shí),NandFlash閃存每次將一個(gè)字節(jié)的數(shù)據(jù)放入內(nèi)部的緩存區(qū),然后再發(fā)出“寫指令”進(jìn)行寫操作。由于對(duì)NandFlash閃存的操作都是以塊和頁(yè)為單位的,所以在向NandFlash閃存進(jìn)行大量數(shù)據(jù)的讀寫時(shí),NAND的速度要快于NOR閃存。
(6)可靠性
NorFlash閃存的可靠性要高于NandFlash閃存,是因?yàn)镹orFlash型閃存的接口簡(jiǎn)單,數(shù)據(jù)操作少,位交換操作少,因此可靠性高,極少出現(xiàn)壞區(qū)塊,一般用在對(duì)可靠性要求高的地方。NandFlash型閃存接口和操作均相對(duì)復(fù)雜,位交換操作也很多,關(guān)鍵性數(shù)據(jù)更是需安錯(cuò)誤探測(cè)/錯(cuò)誤更正(EDC/ECC)算法來(lái)確保數(shù)據(jù)的完整性,因此出現(xiàn)問題的幾率要大得多,壞區(qū)塊也是不可避免的,而且由于壞區(qū)塊是隨機(jī)分布的,連糾錯(cuò)也無(wú)法做到。
(7)NANDFlash一般地址線和數(shù)據(jù)線共用,對(duì)讀寫速度有一定影響;NORFlash閃存數(shù)據(jù)線和地址線分開,相對(duì)而言讀寫速度快一些。
NANDFlash和NORFlash芯片的共性
首先表現(xiàn)在向芯片中寫數(shù)據(jù)必須先將芯片中對(duì)應(yīng)的內(nèi)容清空,然后再寫入,即先擦后寫。只不過NORFlash芯片只用擦寫一個(gè)字,而NAND需要擦寫整個(gè)塊。其次,閃存擦寫的次數(shù)都是有限的。當(dāng)閃存使用接近使用壽命時(shí),經(jīng)常會(huì)出現(xiàn)寫操作失敗;到達(dá)使用壽命時(shí),閃存內(nèi)部存放的數(shù)據(jù)雖然可以讀,但不能再進(jìn)行寫操作了。所以為了防止上面問題的發(fā)生,不能對(duì)某個(gè)特定的區(qū)域反復(fù)進(jìn)行寫操作。通常NANDFlash可擦寫次數(shù)高于NORFlash芯片,但是由于NANDFlash通常是整塊擦寫,塊內(nèi)的頁(yè)面中如果有一位失效整個(gè)塊就會(huì)失效,而且由于擦寫過程復(fù)雜,失敗的概率相對(duì)較高,所以從整體上來(lái)說(shuō)NOR的壽命較長(zhǎng)。
另一個(gè)共性是閃存的讀寫操作不僅僅是一個(gè)物理操作,實(shí)際上在閃存上存放數(shù)據(jù)必須使用算法實(shí)現(xiàn),這個(gè)模塊一般在驅(qū)動(dòng)程序的MTD'(Memory Technology Drivers)模塊中或者在FTLZ (Flash Translation Layer)層內(nèi)實(shí)現(xiàn),具體算法和芯片的生產(chǎn)廠商以及芯片型號(hào)有關(guān)系。通過比較可以發(fā)現(xiàn),NAND更適用于復(fù)雜的文件應(yīng)用,但是由于NAND芯片的使用相對(duì)復(fù)雜,所以對(duì)文件系統(tǒng)有較高的要求。
(8)接口對(duì)比
NorFlash帶有通用的SRAM接口,可以輕松地掛接在CPU的地址、數(shù)據(jù)總線上,對(duì)CPU的接口要求低。NorFlash的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。如uboot中的ro段可以直接在NorFlash上運(yùn)行,只需要把rw和zi段拷貝到RAM中運(yùn)行即可。
NandFlash器件使用復(fù)雜的I/O口來(lái)串行地存取數(shù)據(jù),8個(gè)引腳用來(lái)傳送控制、地址和數(shù)據(jù)信息。由于時(shí)序較為復(fù)雜,所以一般CPU最好集成NandFlash控制器.另外由于NandFlash沒有掛接在地址總線上,所以如果想用NandFlash作為系統(tǒng)的啟動(dòng)盤,就需要CPU具備特殊的功能,如s3c2410在被選擇為NandFlash啟動(dòng)方式時(shí)會(huì)在上電時(shí)自動(dòng)讀取NandFlash的4k數(shù)據(jù)到地址0的SRAM中.如果CPU不具備這種特殊功能,用戶不能直接運(yùn)行NandFlash上的代碼,那可以采取其他方式,比如好多使用NandFlash的開發(fā)板除了使用NandFlash以外,還用上了一塊小的NorFlash來(lái)運(yùn)行啟動(dòng)代碼。
(9)容量和成本對(duì)比
相比起NandFlash來(lái)說(shuō),NorFlash的容量要小,一般在1~16MByte左右,一些新工藝采用了芯片疊加技術(shù)可以把NorFlash的容量做得大一些。在價(jià)格方面,NorFlash相比NandFlash來(lái)說(shuō)較高,如目前市場(chǎng)上一片4Mbyte的AM29lv320 NorFlash零售價(jià)在20元左右,而一片128MByte的k9f1g08 NandFlash零售價(jià)在30元左右。 NandFlash生產(chǎn)過程更為簡(jiǎn)單,NAND結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,這樣也就相應(yīng)地降低了價(jià)格。
(10)
NandFlash器件中的壞塊是隨機(jī)分布的,以前也曾有過消除壞塊的努力,但發(fā)現(xiàn)成品率太低,代價(jià)太高,根本不劃算。Nand器件需要對(duì)介質(zhì)進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用.在已制成的器件中,如果通過可靠的方法不能進(jìn)行這項(xiàng)處理,將導(dǎo)致高故障率。而壞塊問題在NorFlash上是不存在的.
在Flash的位翻轉(zhuǎn)(一個(gè)bit位發(fā)生翻轉(zhuǎn))現(xiàn)象上,NAND的出現(xiàn)幾率要比NorFlash大得多.這個(gè)問題在Flash存儲(chǔ)關(guān)鍵文件時(shí)是致命的,所以在使用NandFlash時(shí)建議同時(shí)使用EDC/ECC等校驗(yàn)算法。
(11)升級(jí)對(duì)比
NorFlash的升級(jí)較為麻煩,因?yàn)椴煌萘康腘orFlash的地址線需求不一樣,所以在更換不同容量的NorFlash芯片時(shí)不方便。通常我們會(huì)通過在電路板的地址線上做一些跳接電阻來(lái)解決這樣的問題,針對(duì)不同容量的NorFlash。 而不同容量的NandFlash的接口是固定的,所以升級(jí)簡(jiǎn)單。
(12)讀寫性能對(duì)比
寫操作:任何flash器件的寫入操作都只能在空或已擦除的單元內(nèi)進(jìn)行。
NAND器件執(zhí)行擦除操作是十分簡(jiǎn)單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為1。
擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)擦除/寫入操作的時(shí)間約為5s。擦除NAND器件是以8~32KB的塊進(jìn)行的,執(zhí)行一個(gè)擦除/寫入操作最多只需要4ms.
讀操作:NOR的讀速度比NAND稍快一些。
(13)文件系統(tǒng)比較
Linux系統(tǒng)中采用MTD來(lái)管理不同類型的Flash芯片,包括NandFlash和NorFlash。支持在Flash上運(yùn)行的常用文件系統(tǒng)有cramfs、jffs、jffs2、yaffs、yaffs2等。cramfs文件系統(tǒng)是只讀文件系統(tǒng)。如果想在Flash上實(shí)現(xiàn)讀寫操作,通常在NorFlash上我們會(huì)選取jffs及jffs2文件系統(tǒng),在NandFlash上選用yaffs或yaffs2文件系統(tǒng)。Yaffs2文件系統(tǒng)支持大頁(yè)(大于512字節(jié)/頁(yè))的NandFlash存儲(chǔ)器。
-
閃存
+關(guān)注
關(guān)注
16文章
1801瀏覽量
115115 -
讀寫
+關(guān)注
關(guān)注
0文章
28瀏覽量
15580 -
nandflash
+關(guān)注
關(guān)注
0文章
48瀏覽量
20273 -
NORFlash
+關(guān)注
關(guān)注
0文章
24瀏覽量
9276
原文標(biāo)題:NorFlash和NandFlash區(qū)別
文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論