




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、NOR與NAND非易失閃存技術的原理與區別NOR和NAND是現在市場上兩種主要的非易失閃存技術。 Intel于1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接著,1989年,東芝公司發表了NAND flash結構,強調降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級。但是經過了十多年之后,仍然有相當多的硬件工程師分不清NOR和NAND閃存。簡單的來說,NAND規格快閃記憶體像硬碟,以儲存數據為主,又稱為Data Flash,晶片容量大,目前主流容量已達二Gb;NOR規格記憶體則類似DRAM,以儲存程序代碼為主,又稱為Co
2、deFlash,所以可讓微處理器直接讀取,但晶片容量較低,主流容量為512Mb。相“flash存儲器”經常可以與相“NOR存儲器”互換使用。許多業內人士也搞不清楚NAND閃存技術相對于NOR技術的優越之處,因為大多數情況下閃存只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案。NOR的特點是芯片內執行(XIP, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。NOR的傳輸效率很高,在14MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND結構能提供極高的單元
3、密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于flash的管理和需要特殊的系統接口。1.性能比較flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為0。 由于擦除NOR器件時是以64128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以832KB的塊進行的,執行相同的操作最多只需要4ms。執行擦除時塊尺寸的不同
4、進一步拉大了NOR和NADN之間的性能差距,統計表明,對于給定的一套寫入操作(尤其是更新小文件時), 更多的擦除操作必須在基于NOR的單元中進行。這樣,當選擇存儲解決方案時,設計師必須權衡以下的各項因素。 NOR的讀速度比NAND稍快一些。 NAND的寫入速度比NOR快很多。 NAND的4ms擦除速度遠比NOR的5S快。 大多數寫入操作需要先進行擦除操作。 NAND的擦除單元更小,相應的擦除電路更少。2.接口差別NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。NAND器件使用復雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引
5、腳用來傳送控制、地址和數據信息。NAND讀和寫操作采用512字節的塊,這一點有點像硬盤管理此類操作,很自然地,基于NAND的存儲器就可以取代硬盤或其他塊設備。3.容量和成本NAND flash的單元尺寸幾乎是NOR器件的一半,由于生產過程更為簡單,NAND結構可以在給定的模具尺寸內提供更高的容量,也就相應地降低了價格。 NOR flash占據了容量為116MB閃存市場的大部分,而NAND flash只是用在8128MB的產品當中,這也說明NOR主要應用在代碼存儲介質中,NAND適合于數據存儲,NAND在CompactFlash、 Secure Digital、PC Cards和MMC存儲卡市場
6、上所占份額最大。4.可靠性和耐用性采用flahs介質時一個需要重點考慮的問題是可靠性。對于需要擴展MTBF的系統來說,Flash是非常合適的存儲方案。可以從壽命(耐用性)、位交換和壞塊處理三個方面來比較NOR和NAND的可靠性。5.壽命(耐用性) 在NAND閃存中每個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND存儲器除了具有10比1的塊擦除周期優勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND存儲器塊在給定的時間內的刪除次數要少一些。位交換所有flash器件都受位交換現象的困擾。在某些情況下(很少見,NAND發生的次數要比NOR多),一個比特位會發生反轉或被報告反
7、轉了。一位的變化可能不很明顯,但是如果發生在一個關鍵文件上,這個小小的故障可能導致系統停機。如果只是報告有問題,多讀幾次就可能解決了。當然,如果這個位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見于NAND閃存,NAND的供應商建議使用NAND閃存的時候,同時使用EDC/ECC算法。這個問題對于用NAND存儲多媒體信息時倒不是致命的。當然,如果用本地存儲設備來存儲操作系統、配置文件或其他敏感信息時,必須使用EDC/ECC系統以確保可靠性。6.壞塊處理NAND器件中的壞塊是隨機分布的。以前也曾有過消除壞塊的努力,但發現成品率太低,代價太高,根本不劃算。NAND
8、器件需要對介質進行初始化掃描以發現壞塊,并將壞塊標記為不可用。在已制成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。7.易于使用可以非常直接地使用基于NOR的閃存,可以像其他存儲器那樣連接,并可以在上面直接運行代碼。 由于需要I/O接口,NAND要復雜得多。各種NAND器件的存取方法因廠家而異。在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其他操作。向NAND器件寫入信息需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬映射。8.軟件支持當討論軟件支持的時候,應該區別基本的讀/寫/擦操作和高一級的用于磁盤仿真和閃存管理算法的軟件
9、,包括性能優化。在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行同樣操作時,通常需要驅動程序,也就是內存技術驅動程序(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。使用NOR器件時所需要的MTD要相對少一些,許多廠商都提供用于NOR器件的更高級軟件,這其中包括M-System的TrueFFS驅動,該驅動被 Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所采用。驅動還用于對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。NOR與NAND技術的比
10、較及使用性差異1)閃存芯片讀寫的基本單位不同 應用程序對NOR芯片操作以“字”為基本單位。為了方便對大容量NOR閃存的管理,通常將NOR閃存分成大小為128KB或者64KB的邏輯塊,有時候塊內還分成扇區。讀寫時需要同時指定邏輯塊號和塊內偏移。應用程序對NAND芯片操作是以“塊”為基本單位。NAND閃存的塊比較小,一般是8KB,然后每塊又分成頁,頁的大小一般是512字節。要修改NAND芯片中一個字節,必須重寫整個數據塊。 2)NOR閃存是隨機存儲介質,用于數據量較小的場合;NAND閃存是連續存儲介質,適合存放大的數據。 3) 由于NOR地址線和數據線分開,所以NOR芯片可以像SRAM
11、一樣連在數據線上。NOR芯片的使用也類似于通常的內存芯片,它的傳輸效率很高,可執行程序可以在芯片內執行( XI P, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼 讀到系統RAM中。由于NOR的這個特點,嵌入式系統中經常將NOR芯片做啟動芯片使用。而NAND共用地址和數據總線,需要額外聯結一些控制的輸入輸出,所以直接將NAND芯片做啟動芯片比較難。 4) N AN D閃存芯片因為共用地址和數據總線的原因,不允許對一個字節甚至一個塊進行的數據清空,只能對一個固定大小的區域進行清零操作;而NOR芯片可以對字進行操作。所以在處理小數據量的I/O操作的時
12、候的速度要快與NAND的速度。比如一塊NOR芯片通常寫一個字需要10微秒,那么在32位總線上寫512字節需要1280毫秒;而NAND閃存寫512字節需要的時間包括:512×每字節50納秒+10微秒的尋頁時間+200微秒的片擦寫時間234微秒。 5)NAND閃存的容量比較大,目前最大容量己經達到8G字節。為了方便管理,NAND的存儲空間使用了塊和頁兩級存儲體系,也就是說閃存的存儲空間是二維的,比如K9F5608UOA閃存塊的大小為16K,每頁的大小是512字節,每頁還預留16字節空閑區用來存放錯誤校驗碼空間(有時也稱為out-of-band,OOB空間);在進行寫操作的時候NAND閃存
13、每次將一個字節的數據放入內部的緩存區,然后再發出“寫指令”進行寫操作。由于對NAND閃存的操作都是以塊和頁為單位的,所以在向NAND閃存進行大量數據的讀寫時,NAND的速度要快于NOR閃存。 6)NOR閃存的可靠性要高于NAND閃存,這主要是因為NOR型閃存的接口簡單,數據操作少,位交換操作少,因此可靠性高,極少出現壞區塊,因而一般用在對可靠性要求高的地方。相反的,NAND型閃存接口和操作均相對復雜,位交換操作也很多,關鍵性數據更是需安錯誤探測/錯誤更正EDC/ECC)算法來確保數據的完整性,因此出現問題的幾率要大得多,壞區塊也是不可避免的,而且由于壞區塊是隨機分布的,連糾錯也無法做到。 7)
14、NAND Flash一般地址線和數據線共用,對讀寫速度有一定影響;而NOR Flash閃存數據線和地址線分開,所以相對而言讀寫速度快一些。 NAND和NOR芯片的共性首先表現在向芯片中寫數據必須先將芯片中對應的內容清空,然后再寫入,也就是通常說的“先擦后寫”。只不過NOR芯片只用擦寫一個字,而NAND需要擦寫整個塊。其次,閃存擦寫的次數都是有限的.當閃存的使用接近使用壽命的時候,經常會出現寫操作失敗;到達使用壽命時,閃存內部存放的數據雖然可以讀,但是不能再進行寫操作了所以為了防止上面問題的發生,不能對某個特定的區域反復進行寫操作。通常NAND的可擦寫次數高于NOR芯片,但是由于NAND通常是整
15、塊擦寫,塊內的頁面中如果有一位失效整個塊就會失效,而且由于擦寫過程復雜,失敗的概率相對較高,所以從整體上來說NOR的壽命較長。 另一個共性是閃存的讀寫操作不僅僅是一個物理操作,實際上在閃存上存放數據必須使用算法實現,這個模塊一般在驅動程序的MTD' (Memory Technology Drivers)模塊中或者在FTLZ (Flash Translation Layer)層內實現,具體算法和芯片的生產廠商以及芯片型號有關系。 從使用角度來看,NOR閃存與NAND閃存是各有特點的:(1)NOR的存儲密度低,所以存儲一個字節的成本也較高,而NAND閃存的存儲密度和存儲容量均比較高;(2)
16、NAND型閃存在擦、寫文件(特別是連續的大文件)時速度非常快,非常適用于順序讀取的場合,而NOR的讀取速度很快,在隨機存取的應用中有良好的表現。NOR與NAND各有所長,但兩種優勢無法在一個芯片上得到體現。所以,設計人員在選用芯片時,只能趨其利而避其害,依照使用目的和主要功能在兩者之間進行適當的選擇。NAND與NOR技術的比較 一般的原則是:在大容量的多媒體應用中選用NAND型閃存,而在數據/程序存貯應用中選用NOR型閃存。根據這一原則,設計人員也可以把兩種閃存芯片結合起來使用,用NOR芯片存儲程序,用NAND芯片存儲數據,使兩種閃存的優勢互補。事實上,這種聰明的設計早已普遍應用于手
17、機、PocketPC、PDA及電子詞典等設備中了。在選擇存儲解決方案時,設計師必須在多種因素之間進行權衡,以獲得較高的性價比。以手機為例,采用支持XIP技術的NOR閃存能夠直接運行OS,速度很快,既簡化了設計,又降低了成本,所以許多手機都采用NORRAM的設計。NOR閃存的不足之處是存儲密度較低,所以也有采用NANDRAM的設計。對于這兩種方案,很難說哪一種更好,因為我們不能離開具體的產品而從某一個方面單純地去評價。追求小巧優雅的手機將需要NOR閃存支持;追求大存儲容量的手機則將更多地選擇NAND閃存;而同時追求功能和速度的手機則會采用NORNANDRAM的設計,這種取長補短的設計能夠發揮NO
18、R和NAND各自的優勢。除了速度、存儲密度的因素,設計師在選擇閃存芯片時,還需要考慮接口設計、即插即用設計和驅動程序等諸多問題,因為兩種類型的閃存在上述幾個方面也有很多的不同。譬如在驅動程序方面,NOR器件運行代碼不需要任何的軟件支持,而在NAND器件上進行同樣操作時就需要存儲技術驅動程序(MTD)的支持。雖然NAND和NOR器件在進行寫入和擦除操作時都需要MTD,但對于NAND來說驅動程序的開發難度更大,因為NAND閃存的糾錯和壞塊處理功能都需要通過驅動程序來實現。圖解NOR與NAND技術對于許多消費類音視頻產品而言,NAND閃存是一種比硬盤驅動器更好的存儲方案,這在不超過4GB的低容量應用
19、中表現得猶為明顯。隨著人們持續追求功耗更低、重量更輕和性能更佳的產品,NAND正被證明極具吸引力。 NAND閃存陣列分為一系列128kB的區塊(block),這些區塊是NAND器件中最小的可擦除實體。擦除一個區塊就是把所有的位(bit)設置為“1”(而所有字節(byte)設置為FFh)。有必要通過編程,將已擦除的位從“1”變為“0”。最小的編程實體是字節(byte)。一些NOR閃存能同時執行讀寫操作(見下圖1)。雖然NAND不能同時執行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統級實現這一點。這種方法在個人電腦上已經沿用多年,即將BIOS從速率較低的ROM加載到速率較高
20、的RAM上。 NAND的效率較高,是因為NAND串中沒有金屬觸點。NAND閃存單元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一個單元都需要獨立的金屬觸點。NAND與硬盤驅動器類似,基于扇區(頁),適合于存儲連續的數據,如圖片、音頻或個人電腦數據。雖然通過把數據映射到RAM上,能在系統級實現隨機存取,但是,這樣做需要額外的RAM存儲空間。此外,跟硬盤一樣,NAND器件存在壞的扇區,需要糾錯碼(ECC)來維持數據的完整性。 存儲單元面積越小,裸片的面積也就越小。在這種情況下,NAND就能夠為當今的低成本消費市場提供存儲容量更大的閃存產品。NAND閃存用于幾乎所有可擦除的存儲卡。NA
21、ND的復用接口為所有最新的器件和密度都提供了一種相似的引腳輸出。這種引腳輸出使得設計工程師無須改變電路板的硬件設計,就能從更小的密度移植到更大密度的設計上。 NAND與NOR閃存比較 NAND閃存的優點在于寫(編程)和擦除操作的速率快,而NOR的優點是具有隨機存取和對字節執行寫(編程)操作的能力(見下圖圖2)。NOR的隨機存取能力支持直接代碼執行(XiP),而這是嵌入式應用經常需要的一個功能。NAND的缺點是隨機存取的速率慢,NOR的缺點是受到讀和擦除速度慢的性能制約。NAND較適合于存儲文件。如今,越來越多的處理器具備直接NAND接口,并能直接從NAND(沒有NOR)導入數據。 NAND的真
22、正好處是編程速度快、擦除時間短。NAND支持速率超過5Mbps的持續寫操作,其區塊擦除時間短至2ms,而NOR是750ms。顯然,NAND在某些方面具有絕對優勢。然而,它不太適合于直接隨機存取。 對于16位的器件,NOR閃存大約需要41個I/O引腳;相對而言,NAND器件僅需24個引腳。NAND器件能夠復用指令、地址和數據總線,從而節省了引腳數量。復用接口的一項好處,就在于能夠利用同樣的硬件設計和電路板,支持較大的NAND器件。由于普通的TSOP-1封裝已經沿用多年,該功能讓客戶能夠把較高密度的NAND器件移植到相同的電路板上。NAND器件的另外一個好處顯然是其封裝選項:NAND提供一種厚膜的
23、2Gb裸片或能夠支持最多四顆堆疊裸片,容許在相同的TSOP-1封裝中堆疊一個8Gb的器件。這就使得一種封裝和接口能夠在將來支持較高的密度。 圖1 不同閃存單元的對比NOR閃存的隨機存取時間為0.12ms,而NAND閃存的第一字節隨機存取速度要慢得多 NAND基本操作 以2Gb NAND器件為例,它由2048個區塊組成,每個區塊有64個頁(見圖3)。 圖3 2GB NAND閃存包含2,048個區塊 每一個頁均包含一個2048字節的數據區和64字節的空閑區,總共包含2,112字節。空閑區通常被用于ECC、耗損均衡(wear leveling)和其它軟件開銷功能,盡管它在物理上與其它頁并沒有區別。N
24、AND器件具有8或16位接口。通過8或16位寬的雙向數據總線,主數據被連接到NAND存儲器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數據傳輸周期使用。 擦除區塊所需時間約為2ms。一旦數據被載入寄存器,對一個頁的編程大約要300s。讀一個頁面需要大約25s,其中涉及到存儲陣列訪問頁,并將頁載入16,896位寄存器中。 除了I/O總線,NAND接口由6個主要控制信號構成: 1.芯片啟動(Chip Enable, CE#):如果沒有檢測到CE信號,那么,NAND器件就保持待機模式,不對任何控制信號作出響應。 2.寫使能(Write Enable, WE#): WE#負責將數據、地址或
25、指令寫入NAND之中。 3.讀使能(Read Enable, RE#): RE#允許輸出數據緩沖器。 4.指令鎖存使能(Command Latch Enable, CLE): 當CLE為高時,在WE#信號的上升沿,指令被鎖存到NAND指令寄存器中。 5.地址鎖存使能(Address Latch Enable, ALE):當ALE為高時,在WE#信號的上升沿,地址被鎖存到NAND地址寄存器中。 6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號將變低。該信號是漏極開路,需要采用上拉電阻。 數據每次進/出NAND寄存器都是通過16位或8位接口。當進行編程操作的時候,
26、待編程的數據進入數據寄存器,處于在WE#信號的上升沿。在寄存器內隨機存取或移動數據,要采用專用指令以便于隨機存取。 數據寄存器輸出數據的方式與利用RE#信號的方式類似,負責輸出現有的數據,并增加到下一個地址。WE#和RE#時鐘運行速度極快,達到30ns的水準。當RE#或CE#不為低的時候,輸出緩沖器將為三態。這種CE#和RE#的組合使能輸出緩沖器,容許NAND閃存與NOR、SRAM或DRAM等其它類型存儲器共享數據總線。該功能有時被稱為“無需介意芯片啟動(chip enable don't care)”。這種方案的初衷是適應較老的NAND器件,它們要求CE#在整個周期為低(譯注:根據上
27、下文改寫)。 輸入寄存器接收到頁編程(80h)指令時,內部就會全部重置為1s,使得用戶可以只輸入他想以0位編程的數據字節 帶有隨機數據輸入的編程指令。圖中加亮的扇區顯示,該指令只需要后面跟隨著數據的2個字節的地址 所有NAND操作開始時,都提供一個指令周期(表1)。 當輸出一串WE#時鐘時,通過在I/O位7:0上設置指令、驅動CE#變低且CLE變高,就可以實現一個指令周期。注意:在WE#信號的上升沿上,指令、地址或數據被鎖存到NAND器件之中。如表1所示,大多數指令在第二個指令周期之后要占用若干地址周期。注意:復位或讀狀態指令例外,如果器件忙,就不應該發送新的指令。 以2Gb NAND器件的尋
28、址方案為例,第一和第二地址周期指定列地址,該列地址指定頁內的起始字節(表2)。 注意:因為最后一列的位置是2112,該最后位置的地址就是08h(在第二字節中)和3Fh(在第一字節中)。PA5:0指定區塊內的頁地址,BA16:6指定區塊的地址。雖然大多編程和讀操作需要完整的5字節地址,在頁內隨機存取數據的操作僅僅用到第一和第二字節。塊擦除操作僅僅需要三個最高字節(第三、第四和第五字節)來選擇區塊。 圖6:典型的存儲方法 圖7 頁讀緩存模式 總體而言,NAND的基本操作包括:復位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(Read Status, 70h)操作、編
29、程(Program)操作、隨機數據輸入(Random data input, 85h)操作和讀(Read)操作等。 將NAND連接到處理器 選擇內置NAND接口的處理器或控制器的好處很多。如果沒有這個選擇,有可能在NAND和幾乎任何處理器之間設計一個“無粘接邏輯(glueless)”接口。NAND和NOR閃存的主要區別是復用地址和數據總線。該總線被用于指定指令、地址或數據。CLE信號指定指令周期,而ALE信號指定地址周期。利用這兩個控制信號,有可能選擇指令、地址或數據周期。把ALE連接到處理器的第五地址位,而把CLE連接到處理器的第四地址位,就能簡單地通過改變處理器輸出的地址,任意選擇指令、地
30、址或數據。這容許CLE和ALE在合適的時間自動設置為低。 為了提供指令,處理器在數據總線上輸出想要的指令,并輸出地址0010h;為了輸出任意數量的地址周期,處理器僅僅要依次在處理器地址0020h之后輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號周圍指定若干時序參數,這對于建立合適的時序是至關重要的。利用該技術,你不必采用任何粘接邏輯,就可以直接從處理器存取指令、地址和數據。 多層單元 多層單元(MLC)的每一個單元存儲兩位,而傳統的SLC僅僅能存儲一位。MLC技術有顯著的密度優越性,然而,與SLC相比(表3),其速度或可靠性稍遜。因此,SLC被用于大多數媒體卡和無線應用,而MLC器
31、件通常被用于消費電子和其它低成本產品。 如上所述,NAND需要ECC以確保數據完整性。NAND閃存的每一個頁面上都包括額外的存儲空間,它就是64個字節的空閑區(每512字節的扇區有16字節)。該區能存儲ECC代碼及其它像磨損評級或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執行,但是,硬件執行有明顯的性能優勢。在編程操作期間,ECC單元根據扇區中存儲的數據來計算誤碼校正代碼。數據區的ECC代碼然后被分別寫入到各自的空閑區。當數據被讀出時,ECC代碼也被讀出;運用反操作可以核查讀出的數據是否正確。 有可能采用ECC算法來校正數據錯誤。能校正的錯誤的數量取決于所用算法的校正強度。在硬件或軟件
32、中包含ECC,就提供了強大的系統級解決方案。最簡單的硬件實現方案是采用簡單的漢明(Simple Hamming)碼,但是,只能校正單一位錯誤。瑞德索羅門(Reed-Solomon)碼提供更為強大的糾錯,并被目前的控制器廣為采用。此外,BCH碼由于比瑞德索羅門方法的效率高,應用也日益普及。 要用軟件執行NAND閃存的區塊管理。該軟件負責磨損評級或邏輯到物理映射。該軟件還提供ECC碼,如果處理器不包含ECC硬件的話。 編程或擦除操作之后,重要的是讀狀態寄存器,因為它確認是否成功地完成了編程或擦除操作。如果操作失敗,要把該區塊標記為損壞且不能再使用。以前已編寫進去的數據要從損壞的區塊中搬出,轉移到新
33、的(好的)存儲塊之中。2Gb NAND的規范規定,它可以最多有40個壞的區塊,這個數字在器件的生命周期(額定壽命為10萬次編程/擦除周期)內都適用。一些有壞塊的NAND器件能夠出廠,主要就歸根于其裸片面積大。管理器件的軟件負責映射壞塊并由好的存儲塊取而代之。 利用工廠對這些區塊的標記,軟件通過掃描塊可以確定區塊的好壞。壞塊標記被固定在空閑區的第一個位置(列地址2048)。如果在0或1頁的列地址2048上的數據是“non-FF”,那么,該塊要標記為壞,并映射出系統。初始化軟件僅僅需要掃描所有區塊確定以確定哪個為壞,然后建一個壞塊表供將來參考。 小心不要擦除壞塊標記,這一點很重要。工廠在寬溫和寬電
34、壓范圍內測試了NAND;一些由工廠標記為壞的區塊可能在一定的溫度或電壓條件下仍然能工作,但是,將來可能會失效。如果壞塊信息被擦除,就無法再恢復。NAND Flash結構與驅動分析摘一、NAND flash的物理組成NAND Flash 的數據是以bit的方式保存在memory cell,一般來說,一個cell 中只能存儲一個bit。這些cell 以8個或者16個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會再組成Page,(NAND Flash 有多種結構,我使用的NAND Flash 是K9F1208,下面內容
35、針對三星的K9F1208U0M),每頁528Bytes(512byte(Main Area)+16byte(Spare Area),每32個page形成一個Block(32*528B)。具體一片flash上有多少個Block視需要所定。我所使用的三星k9f1208U0M具有4096個block,故總容量為4096*(32*528B)=66MB,但是其中的2MB是用來保存ECC校驗碼等額外數據的,故實際中可使用的為64MB。NAND flash以頁為單位讀寫數據,而以塊為單位擦除數據。按照這樣的組織方式可以形成所謂的三類地址: Column Address:Starting Address of
36、 the Register. 翻成中文為列地址,地址的低8位Page Address :頁地址Block Address :塊地址對于NAND Flash來講,地址和命令只能在I/O7:0上傳遞,數據寬度是8位。二、NAND Flash地址的表示512byte需要9bit來表示,對于528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問由地址指針命令來選擇,A7:0就是所謂的column address(列地址),在進行擦除操作時不需要它,why?因為以塊為單位擦除。32個page需要5bit來
37、表示,占用A13:9,即該page在塊內的相對地址。A8這一位地址被用來設置512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來表示。例如64MB(512Mb)的NAND flash(實際中由于存在spare area,故都大于這個值),共4096block,因此,需要12個bit來表示,即A25:14,如果是128MB(1Gbit) 的528byte/page的NAND Flash,則block address用A26:14表示。而page address就是blcok address|page add
38、ress in block NAND Flash 的地址表示為: Block Address|Page Address in block|halfpage pointer|Column Address 地址傳送順序是Column Address,Page Address,Block Address。 由于地址只能在I/O7:0上傳遞,因此,必須采用移位的方式進行。 例如,對于512Mbit x8的NAND flash,地址范圍是00x3FF_FFFF,只要是這個范圍內的數值表示的地址都是有效的。 以NAND_ADDR 為例:第1 步是傳遞column address,就是NAND_ADDR7:
39、0,不需移位即可傳遞到I/O7:0上,而halfpage pointer即A8 是由操作指令決定的,即指令決定在哪個halfpage 上進行讀寫,而真正的A8 的值是不需程序員關心的。 第2 步就是將NAND_ADDR 右移9位,將NAND_ADDR16:9傳到I/O7:0上;第3 步將NAND_ADDR24:17放到I/O上;第4步需要將NAND_ADDR25放到I/O上;因此,整個地址傳遞過程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,因此尋址只需要3步。
40、下面,就x16 的NAND flash 器件稍微進行一下說明。 由于一個page 的main area 的容量為256word,仍相當于512byte。但是,這個時候沒有所謂的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒有意義了,也就是這個時候 A8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點之外,x16 的NAND使用方法和 x8 的使用方法完全相同。 三、NAND flash驅動解讀以前由于做移植多一些,那些工作很簡單(現在看來),從來都不用去關心驅動里面到底怎么實現的,這幾次面試才發現真的是學的太淺了,似乎我還在學習仰泳而那些牛人基本都
41、屬于潛水級的了,潛的不知有多深。我對照著開發板所帶的NAND flash驅動和k9f1208的芯片資料把這些代碼通讀了一遍,終于明白了NAND flash的讀寫過程是如何實現的了。我所參考的驅動是mizi公司為三星芯片所寫的,我看看了,大概和官方內核的nand.c差不多。在s3c2410處理器中有專門的NAND flash控制器,他們位于SFR區,具體可以參看s3c2410用戶手冊。以下的這些代碼均可以在vivi或者kernel里面找到,文中會標明程序出自何處。在vivi中,有關NAND flash的驅動都在driver/mtd/nand/下,該目錄中包含的源文件:smc_core.c是NAN
42、D flash的主要驅動。NAND flash 芯片定義了一個很長的結構,這個結構中包含了操作NAND flash的函數和一些必要的變量(include/mtd/nand.h)。struct nand_chip #ifdef CONFIG_MTD_NANDY /* =y */ void (*hwcontrol)(int cmd); void (*write_cmd)(u_char val); void (*write_addr)(u_char val); u_char (*read_data)(void); void (*write_data)(u_char val); void (*wait
43、_for_ready)(void); int page_shift; u_char *data_buf; u_char *data_cache; int cache_page; struct nand_smc_dev *dev; u_char spareSMC_OOB_SIZE;#else /* CONFIG_MTD_NANDY */ #ifdef CONFIG_MTD_NAND_ECC u_char ecc_code_buf6; u_char reserved2;#endif#endif /* CONFIG_MTD_NANDY */;縱觀對NAND flash的各種操作(read、write
44、、erase),無外乎如下幾種操作:1選擇flash nand_select()2發送命令 nand_command()3進行相應操作 read,write4反選NAND flash nand_deselect()下面是以上四步的實現代碼:1、選擇NAND flash#define nand_select() this->hwcontrol(NAND_CTL_SETNCE); nand_command(mtd, NAND_CMD_RESET, -1, -1); udelay (10);hwcontrol(NAND_CTL_SETNCE)的作用是設置2410的NAND FLASH CONF
45、IGURATION (NFCONF) REGISTER的NAND Flash Memory chip enable位為0,這位寄存器在自動重啟后就被系統自動清零。如果要訪問NAND flash的內存,這位必須置1。nand_command(mtd, NAND_CMD_RESET, -1, -1);向flash發送命令,此命令為reset,即為重置NAND flash。然后是10us的延遲,給flash個反應時間。2、發送命令Nand_command()同樣在smc_core.c中實現。NAND flash的命令有如下幾種: 命令 命令值 描述NAND_CMD_READ0 0 讀操作NAND_C
46、MD_READ1 1 讀操作NAND_CMD_PAGEPROG 0x10 頁編程操作NAND_CMD_READOOB 0x50 讀寫OOBNAND_CMD_ERASE1 0x60 讀寫操作NAND_CMD_STATUS 0x70 讀取狀態NAND_CMD_STATUS_MULTI 0x71 讀取狀態NAND_CMD_SEQIN 0x80 寫操作NAND_CMD_READID 0x90 讀Flash ID號NAND_CMD_ERASE2 0xd0 擦寫操作NAND_CMD_RESET oxff 復位操作按照程序的注釋,可以將該函數的實現分為如下幾步:1、Begin command latch cycle實現代碼:this->hwcontrol(NAND_CTL_SETCLE); this->hwcontrol(NAND_CTL_DAT_OUT);找到第二條語句的定義,發現什么都么做,不解!希望達人解答。我猜想可能是一個數據讀出的使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省南通市如皋市2025年高三2月網上月考(開學)生物試題含解析
- 建筑材料采購合同資料
- 新疆維吾爾烏魯木齊市沙依巴克區2024-2025學年四年級數學第二學期期末質量檢測模擬試題含解析
- 企業人力資源服務合同外包協議2025
- 版云存儲倉庫租賃合同
- 河南省濮陽市清豐縣2024-2025學年八年級下學期4月期中地理試題(含答案)
- 二手住宅式房屋買賣合同
- 小學政治 (道德與法治)人教部編版四年級上冊7 健康看電視獲獎第一課時教案設計
- 初中數學現實中的變量教學課件 2024-2025學年七年級數學下冊(北師大版2024)
- 中國古典舞身段訓練
- 六年級整本書閱讀交流課課件湯姆索亞歷險記
- 普外科教學查房案例
- 考勤排查方案
- GH-T 1388-2022 脫水大蒜標準規范
- 金屬材料成形工藝及控制課件:軋制理論與工藝 (2)-
- 《我與集體共成長》的主題班會
- 六年級趣味數學活動課堂課件
- imo中的問題定理與方法
- 新能源汽車運用與維修專業人才培養方案
- 氨吹脫塔單元設計示例
- 中國移動-安全-L3
評論
0/150
提交評論