嵌入式開發之NorFlash 和NandFlash

2021-06-18 02:27:56 字數 3844 閱讀 2762

author:tiger-john

time:2013-07-11(重新修改)

mail:[email protected]

blog:

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

目前,各類ddr,sdram或者rdram都屬於 都屬於揮發性記憶體,只要停止電流**記憶體中的資料便無法保持。flash是一種非易失性( non-volatile )記憶體,在沒有電流**的條件下也能夠長久地保持資料,其儲存特性相當於硬碟,這項特性正是快閃儲存器得以成為各類便攜型數字裝置的儲存介質的基礎。

(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   連續型儲存介質,適合用來做大量資料儲存的。

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(此處是大資料情況下)。

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

(2)nandflash的容量比較大,目前最大容量已經達到8g位元組。為了方便管理,nandflash的儲存空間使用了塊和頁兩級儲存體。由於對nandflash的操作都是以塊和頁為單位的,所以在向nandflash進行大量資料讀寫時,nandflash的速度要快於norflash快閃儲存器。並且nandflash成本較低。

(1)norflash的可靠性要高於nandflash,這主要是因為)norflash的介面簡單,資料操作少,因此可靠性高,極少出現塊區塊,因而一般用在對可靠性要求高的地方。

(2)nandflash介面和操作均相對複雜,位交換操作也很多,關鍵性資料更是需安錯誤探測/錯誤更正演算法來確保資料的完整性,因此出現問題的機率要大的多,壞區塊也是不可避免的,而且由於壞區塊是隨機分布的,連糾錯也無法做到。

因此:建議在使用nandflash時,要採用edc/ecc等校驗演算法。

flash檫寫的次數都是有限的,當flash的使用接近使用壽命的時候,經常會出現些操作失敗;到達使用壽命時,flash內部存放的資料雖然可以讀,但是不能再進行寫操作,所以為了防止上面問題的發生,不能對某個特定的區域反覆進行寫操作。

通常nandflash的可檫寫次數高於norflash,但是由於nandflash通常是整塊檫寫,塊內的頁面中如果有一位失效整個快就會失效,而且由於檫寫過程複雜,失敗的概率相對較高,所以從整體上來說norflash的壽命較長。

note:

在nandflash中每個塊的最大擦寫次數是一百萬次,而norflash的擦寫次數是十萬次。flash的使用壽命同時和檔案系統的機制也有關,要求檔案系統具有損耗平衡功能。

在使用性上體現出的差異也是與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驅動。

(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快閃儲存器的糾錯和壞塊處理功能都需要通過驅動程式來實現

spi flash即serial peripheral inte***ce序列外圍裝置介面

是一種常見的時鐘同步序列通訊介面,是norflash的一種。

norflash根據資料傳輸的位數可以分為並行(parallel)norflash和序列(spi)norflash(即spi flash)。

spi norflash每次傳輸乙個bit位的資料,parallel norflash每次傳輸多個bit位的資料(有x8和x16bit兩種);spi flash便宜,介面簡單點,但速度慢。

嵌入式開發之NorFlash 和NandFlash

flash的不同分類 nand flash,nor flash,cfi flash,spi flash 之間的關係 摘要 作為乙個嵌入式工程師,要對norflash 和nandflash要有最起碼的認知。本文通過從啟動方式 讀寫方式 容量成本 可靠性 壽命以及是使用型上進行了全面的分析和對比。任何事...

嵌入式linux之NOR FLASH驅動

flash 儲存器介面還有兩個標準 cfi和jedec。cfi為公共flash介面 common flash inte ce 用來幫助程式從flash晶元中獲取操作方式資訊,而不用在程式中硬編碼flash的id。jedec用來幫助程式讀取flash的製造商id和裝置id,以確定flash的大小和演算...

嵌入式之yocto 開發

初學者,個人見解未必正確,此博文僅供交流,還望斧正。yocto與bsp兩者之間的關係 開發流程是怎樣的。修改配置檔案,編譯,燒寫。以上資訊是2017年的,今天20180623,完善一下它,強迫症犯了,而且對一些不能理解的東西,現在或許明白了。yocto的作用 yocto與bsp兩者之間的關係 它們兩...