1. 程式人生 > >詳細剖析NorFlash和NandFlash的區別

詳細剖析NorFlash和NandFlash的區別

Flash程式設計原理都是隻能將1寫為0,而不能將0寫成1。所以在Flash程式設計之前,必須將對應的塊擦除,而擦除的過程就是將所有位都寫為1的過程,塊內的所有位元組變為0xFF。因此可以說,程式設計是將相應位寫0的過程,而擦除是將相應位寫1的過程,兩者的執行過程完全相反。

(1)快閃記憶體晶片讀寫的基本單位不同

應用程式對NorFlash晶片操作以“字”為基本單位。為了方便對大容量NorFlash快閃記憶體的管理,通常將NOR快閃記憶體分成大小為128KB或64KB的邏輯塊,有時塊內還分扇區。讀寫時需要同時指定邏輯塊號和塊內偏移。應用程式對NandFlash晶片操作是以“塊”為基本單位.NAND快閃記憶體的塊比較小,一般是8KB,然後每塊又分成頁,頁大小一般是512位元組。要修改NandFlash晶片中一個位元組,必須重寫整個資料塊。

(2)NorFlash快閃記憶體是隨機儲存介質,用於資料量較小的場合;NandFlash快閃記憶體是連續儲存介質,適合存放大的資料。

(3)由於NorFlash地址線和資料線分開,所以NorFlash晶片可以像SDRAM一樣連在資料線上。NOR晶片的使用類似於通常記憶體晶片,傳輸效率高,可執行程式可以在晶片內執行(XI P, eXecute In Place),這樣應用程式可以直接在flash快閃記憶體內執行,不必再把程式碼讀到系統RAM中.由於NorFlash的這個特點,嵌入式系統中經常將NOR晶片做啟動晶片使用。NandFlash共用地址和資料匯流排,需要額外聯結一些控制的輸入輸出,所以直接將NAND晶片做啟動晶片比較難。

(4)NandFlash快閃記憶體晶片因為共用地址和資料匯流排的原因,不允許對一個位元組甚至一個塊進行的資料清空,只能對一個固定大小的區域進行清零操作;NorFlash晶片可以對字進行操作。所以在處理小資料量的I/O操作的時候的速度要快與NorFlash的速度。比如一塊NorFlash晶片通常寫一個字需要10us,在32位總線上寫512位元組需要1280us;NandFlash快閃記憶體寫512位元組需要的時間包括:512×每位元組50ns+10us的尋頁時間+200us的片擦寫時間=234us。

(5)NandFlash快閃記憶體的容量比較大,最大容量己達到8G位元組.為了方便管理,NandFlash的儲存空間使用了塊和頁兩級儲存體系,也就是說它的儲存空間是二維的,比如K9F5608UOA快閃記憶體塊的大小為16K,每頁大小是512位元組,每頁還16位元組空閒區用來存放錯誤校驗碼空間(也稱為out-of-band,OOB空間)。在進行寫操作時,NandFlash快閃記憶體每次將一個位元組的資料放入內部的快取區,然後再發出“寫指令”進行寫操作。由於對NandFlash快閃記憶體的操作都是以塊和頁為單位的,所以在向NandFlash快閃記憶體進行大量資料的讀寫時,NAND的速度要快於NOR快閃記憶體。

(6)可靠性

NorFlash快閃記憶體的可靠性要高於NandFlash快閃記憶體,是因為NorFlash型快閃記憶體的介面簡單,資料操作少,位交換操作少,因此可靠性高,極少出現壞區塊,一般用在對可靠性要求高的地方。NandFlash型快閃記憶體介面和操作均相對複雜,位交換操作也很多,關鍵性資料更是需安錯誤探測/錯誤更正(EDC/ECC)演算法來確保資料的完整性,因此出現問題的機率要大得多,壞區塊也是不可避免的,而且由於壞區塊是隨機分佈的,連糾錯也無法做到。

(7)NANDFlash一般地址線和資料線共用,對讀寫速度有一定影響;NORFlash快閃記憶體資料線和地址線分開,相對而言讀寫速度快一些。

NANDFlash和NORFlash晶片的共性

首先表現在向晶片中寫資料必須先將晶片中對應的內容清空,然後再寫入,即先擦後寫。只不過NORFlash晶片只用擦寫一個字,而NAND需要擦寫整個塊。其次,快閃記憶體擦寫的次數都是有限的。當快閃記憶體使用接近使用壽命時,經常會出現寫操作失敗;到達使用壽命時,快閃記憶體內部存放的資料雖然可以讀,但不能再進行寫操作了。所以為了防止上面問題的發生,不能對某個特定的區域反覆進行寫操作。通常NANDFlash可擦寫次數高於NORFlash晶片,但是由於NANDFlash通常是整塊擦寫,塊內的頁面中如果有一位失效整個塊就會失效,而且由於擦寫過程複雜,失敗的概率相對較高,所以從整體上來說NOR的壽命較長。

另一個共性是快閃記憶體的讀寫操作不僅僅是一個物理操作,實際上在快閃記憶體上存放資料必須使用演算法實現,這個模組一般在驅動程式的MTD'(Memory Technology Drivers)模組中或者在FTLZ (Flash Translation Layer)層內實現,具體演算法和晶片的生產廠商以及晶片型號有關係。通過比較可以發現,NAND更適用於複雜的檔案應用,但是由於NAND晶片的使用相對複雜,所以對檔案系統有較高的要求。

(8)介面對比

NorFlash帶有通用的SRAM介面,可以輕鬆地掛接在CPU的地址、資料匯流排上,對CPU的介面要求低。NorFlash的特點是晶片內執行(XIP,eXecute In Place),這樣應用程式可以直接在flash快閃記憶體內執行,不必再把程式碼讀到系統RAM中。如uboot中的ro段可以直接在NorFlash上執行,只需要把rw和zi段拷貝到RAM中執行即可。

NandFlash器件使用複雜的I/O口來序列地存取資料,8個引腳用來傳送控制、地址和資料資訊。由於時序較為複雜,所以一般CPU最好整合NandFlash控制器.另外由於NandFlash沒有掛接在地址總線上,所以如果想用NandFlash作為系統的啟動盤,就需要CPU具備特殊的功能,如s3c2410在被選擇為NandFlash啟動方式時會在上電時自動讀取NandFlash的4k資料到地址0的SRAM中.如果CPU不具備這種特殊功能,使用者不能直接執行NandFlash上的程式碼,那可以採取其他方式,比如好多使用NandFlash的開發板除了使用NandFlash以外,還用上了一塊小的NorFlash來執行啟動程式碼。

(9)容量和成本對比

相比起NandFlash來說,NorFlash的容量要小,一般在1~16MByte左右,一些新工藝採用了晶片疊加技術可以把NorFlash的容量做得大一些。在價格方面,NorFlash相比NandFlash來說較高,如目前市場上一片4Mbyte的AM29lv320 NorFlash零售價在20元左右,而一片128MByte的k9f1g08 NandFlash零售價在30元左右。 NandFlash生產過程更為簡單,NAND結構可以在給定的模具尺寸內提供更高的容量,這樣也就相應地降低了價格。

(10)

NandFlash器件中的壞塊是隨機分佈的,以前也曾有過消除壞塊的努力,但發現成品率太低,代價太高,根本不划算。Nand器件需要對介質進行初始化掃描以發現壞塊,並將壞塊標記為不可用.在已製成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。而壞塊問題在NorFlash上是不存在的.

在Flash的位翻轉(一個bit位發生翻轉)現象上,NAND的出現機率要比NorFlash大得多.這個問題在Flash儲存關鍵檔案時是致命的,所以在使用NandFlash時建議同時使用EDC/ECC等校驗演算法。

(11)升級對比

NorFlash的升級較為麻煩,因為不同容量的NorFlash的地址線需求不一樣,所以在更換不同容量的NorFlash晶片時不方便。通常我們會通過在電路板的地址線上做一些跳接電阻來解決這樣的問題,針對不同容量的NorFlash。 而不同容量的NandFlash的介面是固定的,所以升級簡單。

(12)讀寫效能對比

寫操作:任何flash器件的寫入操作都只能在空或已擦除的單元內進行。

NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為1。

擦除NOR器件時是以64~128KB的塊進行的,執行一個擦除/寫入操作的時間約為5s。擦除NAND器件是以8~32KB的塊進行的,執行一個擦除/寫入操作最多隻需要4ms. 

讀操作:NOR的讀速度比NAND稍快一些。

(13)檔案系統比較

Linux系統中採用MTD來管理不同型別的Flash晶片,包括NandFlash和NorFlash。支援在Flash上執行的常用檔案系統有cramfs、jffs、jffs2、yaffs、yaffs2等。cramfs檔案系統是隻讀檔案系統。如果想在Flash上實現讀寫操作,通常在NorFlash上我們會選取jffs及jffs2檔案系統,在NandFlash上選用yaffs或yaffs2檔案系統。Yaffs2檔案系統支援大頁(大於512位元組/頁)的NandFlash儲存器。

相關推薦

詳細剖析NorFlashNandFlash區別

Flash程式設計原理都是隻能將1寫為0,而不能將0寫成1。所以在Flash程式設計之前,必須將對應的塊擦除,而擦除的過程就是將所有位都寫為1的過程,塊內的所有位元組變為0xFF。因此可以說,程式設計是將相應位寫0的過程,而擦除是將相應位寫1的過程,兩者的執行過程完全相反。

詳細剖析I2CSPI通訊協議的區別

原文連結:http://m.elecfans.com/article/610220.html 1. 概述I2C與SPI協議 IIC vs SPI現今,在低端數字通訊應用領域,我們隨處可見IIC (Inter-Integrated Circuit) 和 SPI (Serial

pytest-22-fixture詳細介紹-errorfailed區別

setup 聲明 star 代碼 pla 詳細 詳細介紹 for ring fixture是pytest的核心功能,也是亮點功能,熟練掌握fixture的使用方法,pytest用起來才會得心應手! fixture簡介 fixture的目的是提供一個固定基線,在該基線上測

記憶體、ram、 rom、 norflashnandflash詳細區別

1.什麼是記憶體     什麼是記憶體呢?在計算機的組成結構中,有一個很重要的部分,就是儲存器。儲存器是用來儲存程式和資料的部件,對於計算機來說,有了儲存器,才有記憶功能,才能保證正常工作。儲存器的種類很多,按其用途可分為主儲存器和輔助儲存器,主儲存器又稱記憶體儲器(

mysql5.7:mysql安裝基於SSL加密的主從復制(詳細剖析

mysql ssl db 數據 加密傳輸 小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------謝謝您的參考,如有疑問,歡迎交流目錄:--------my

getParametergetAttribute區別(超詳細分析)

list 共享 ava 多個 設置 png 過程 技術分享 對象 getParameter和getAttribute區別(超詳細分析) (一)對getParameter過程,如下圖: (二)對getAttribute過程,如下圖 兩者區別: ①getPa

python文檔22-fixture詳細介紹-作為參數傳入,errorfailed區別

3.6 獨立 配置 組件 實現 win ssi html-1 int 前言 fixture是pytest的核心功能,也是亮點功能,熟練掌握fixture的使用方法,pytest用起來才會得心應手! fixture簡介 fixture的目的是提供一個固定基線,在該基線上測試可

Arm的啟動方式:NorFlash啟動NandFlash啟動(轉載 http://www.aiuxian.com/article/p-2796357.html)

arm啟動方式有從norfalsh啟動、nandflash啟動、SD卡啟動和UBS啟動等,但是他們的啟動原理都是大同小異的。 開始之前,先理清幾個概念: SDRAM(Synchronous Dynamic Random Access Memory):同步動態隨機存取儲存器,同步是指Memor

「c/c++專業知識講解」超詳細講解棧堆的區別

預備知識—程式的記憶體分配 一個由C/C++編譯的程式佔用的記憶體分為以下幾個部分   1、棧區(stack):由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其 操作方式類似於資料結構中的棧。 2、堆區(heap):一般由程式設計師分配釋放, 若程式

原始碼剖析signalsigaction的區別

        這兩個函式都是Linux下注冊訊號處理函式有關,但是它們的區別一般我們都是從書上、網上、man手冊得知,要想對它們的區別瞭然於胸,原始碼剖析才是徹底的方法。先來看這兩個函式的區別和實驗: 一、實驗         1、signal比sigaction簡單,但

詳細解析@Resource@Autowired的區別 , 以及@Qualifier的作用

首先 . @Resource是javax.annotation 包中的註解類 , 是jdk中封裝的 . @AutoWired是spring的中註解,依賴於spring上下文. 相同點: @Resource 和 @Autowired 都可以用在類中的fi

Linux下cpscp的詳細說明及其他們的區別

一、說明 cp:是在同一個linux系統上,在不同的目錄之間複製檔案; scp:是在不同linux系統之間來回複製檔案; 二、cp 用法 單個檔案複製: cp   原始檔   目標路徑  ~~從原路徑複製原始檔到目標路徑下;如果在目標路勁之後加檔名稱和格式意思就是複

Android ServiceIntentService區別及知識點詳細總結

Service 對於廣大的Android開發者來說算是耳熟能詳了,作為Android的四大元件之一,在我們的開發中也起著重要的作用,在Android面試中,Service相關的問題也是面試官問得比較多的,當別人問你,Service 到底是什麼的時候?你可能隨口就能答得上來,

norflash啟動nandflash啟動

S3C2440的啟動時讀取的第一條指令是在0x00上,分為成nand flash和nor flash上啟動。   1)nand flash:適合大容量資料儲存,類似硬碟;   2)nor flash:適合小容量的程式或資料儲存,類似小硬碟;   3)sdram:主要用於程式執行時的程式儲存、執行或計算,類似記

python requests 詳細學習content text 的區別

之前使用requests 不求甚解,一直使用content輸出文字。閱讀文件後記錄如下: import requests r=requests.get('http://www.baidu.com') print r.content print r.text

JDK中常用包及其類功能詳細剖析

JDK所提供的所有標準Java類都存放在Java包中,如java.lang包中包含了執行Java必不可少的系統類。由於系統會自動將java.lang引入,所以不需要在原始檔中用import語句來顯示地引入這個包。另外,Java跪地過java.util和java.

深度剖析postget的區別

過濾 出了 打開 資源 優點 基本 禁止 自己的 rest 剛步入前端的你 學習html和css表單 你可能就會聽到post和get的區別。那麽究竟get和post有什麽樣的區別呢?     1、get是從服務器上獲取數據;而post是向服務器發送數據;      

GETPOST區別總結

get 、post 、區別一、GET和POST區別的普遍看法:HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,如果我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:1)Get, 它用於獲取信息,註

JS中const、varlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

equals == 的區別

strong 都是 什麽 brush -s 新的 equals方法 實現 繼承 首先 看比較的對象是否為字符串,若為(String)字符串用equals 比較, 比較的是他們的值。相同返回 true ,不相同返回false. package one; p