新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > nandflash(K9F2G08U0A)的復(fù)習(xí)--APPLE的學(xué)習(xí)筆記

nandflash(K9F2G08U0A)的復(fù)習(xí)--APPLE的學(xué)習(xí)筆記

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
1,Nandflash的關(guān)鍵接口引腳 (要求:記?。?p>2,容量計(jì)算: (要求:理解如何計(jì)算)
3,讀寫(xiě)最基本時(shí)序 (要求:記住)
4,會(huì)配置讀寫(xiě)時(shí)序timing (要求:理解如何計(jì)算)
5,MCU的nandflash配置時(shí),主要使用的寄存器 (要求:記住)
6,常用操作 (要求:記住)
7,nandflash的boot模式 (要求:記住)
8,ecc工作原理 (待做)
9,壞塊基本處理方式 (要求:記住)
10,nandflash和norflash的基本區(qū)別 (要求:記住)

本文引用地址:http://butianyuan.cn/article/201611/317311.htm

基于2440+nandflash(K9F2G08U0A)的復(fù)習(xí)

1,Nandflash的關(guān)鍵接口引腳(要求:記?。?br />CE(片選),nWE(使能寫(xiě)),nWE(使能讀),ALE(地址/數(shù)據(jù)鎖存),CLE(命令鎖存),RnB(忙標(biāo)志),nWP(使能寫(xiě)

保護(hù))

2,容量計(jì)算:(要求:理解如何計(jì)算)
1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
= (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 2,048 Blocks
= 2,112 Mbits
注意單位為Mbits=264Mbyte

另外,列地址A0-A11共12根線,為2^12=4K,其實(shí)要么2K,比(2K + 64)大,那么就是4K,需要12根線。 行地址17根

線,即2^17=131072,也就是64Pages x 2,048 Blocks。

3,讀寫(xiě)基本最時(shí)序如下(要求:記?。?/p>

4,會(huì)配置讀寫(xiě)時(shí)序timing。(要求:理解如何計(jì)算)
對(duì)比如下圖后得知TACLS=tcls-twp=0;TWRPH0=twp;TWRPH1=tclh,接著根據(jù)公式自己算寄存器值等等。
TACLS [13:12] CLE & ALE duration setting value (0~3)
Duration = HCLK x TACLS

2440nandflash接口延時(shí)命名如下:

nandflash時(shí)序及延時(shí)命名如下:

5,MCU的nandflash配置時(shí),主要使用的寄存器(要求:記?。?br />a,配置寄存器:主要是配置timing。
b,控制寄存器:主要是控制nandflash使能等。
c,命令基礎(chǔ)器:向寄存器寫(xiě)入命令數(shù)據(jù)后。則接口會(huì)自動(dòng)產(chǎn)生一個(gè)寫(xiě)命令的時(shí)序。
d,地址寄存器:向寄存器寫(xiě)入地址數(shù)據(jù)后。則接口會(huì)自動(dòng)產(chǎn)生一個(gè)寫(xiě)地址的時(shí)序。
e,數(shù)據(jù)寄存器:向寄存器讀出數(shù)據(jù)后。則接口會(huì)自動(dòng)產(chǎn)生一個(gè)讀數(shù)據(jù)的時(shí)序。
f,狀態(tài)寄存器:顯示RnB的狀態(tài)。

6,常用操作(要求:記?。?br />1,reset流程
當(dāng)然先要片選使能,然后發(fā)生reset命令,檢測(cè)通過(guò)狀態(tài)寄存器檢測(cè)RnB腳從低到高。就算reset成功了。
2,read ID
使能片選,檢測(cè)RnB為閑后,寫(xiě)readid命令,延時(shí)后,讀取data寄存器中的數(shù)據(jù),讀5次后,則讓片選失效。
3,讀操作
使能片選,檢測(cè)RnB為閑后,寫(xiě)第一個(gè)讀命令,然后寫(xiě)地址(列+行),再寫(xiě)第二個(gè)讀命令,等待RnB由忙到閑,則

讀取data寄存器中的數(shù)據(jù)。最后讓片選失效。
注:其中有Read Operation with CE don’t-care,即CE連接在MCU的一個(gè)普通IO口上??梢圆挥霉?。
4,寫(xiě)操作
使能片選,檢測(cè)RnB為閑后,寫(xiě)第一個(gè)寫(xiě)命令,然后寫(xiě)地址(列+行),再寫(xiě)第二個(gè)寫(xiě)命令,等待RnB由忙到閑后,

再讀I/O bit0是否為0,為0則說(shuō)明編程沒(méi)錯(cuò)誤。即完成對(duì)nandflash的編程操作。
5,擦除操作
使能片選,檢測(cè)RnB為閑后,寫(xiě)第一個(gè)擦除命令,然后寫(xiě)地址(列+行),再寫(xiě)第二個(gè)擦除命令,等待RnB由忙到閑

后,再讀I/O bit0是否為0,為0則說(shuō)明擦除沒(méi)錯(cuò)誤。即完成對(duì)nandflash的擦除操作。

7,nandflash的boot模式(要求:記?。?br /> MCU可以控制外部nandflash的boot方式。OM【1:0】=0時(shí),則選擇從外部nandflash啟動(dòng)程序。
nandflash的啟動(dòng)機(jī)制:
a,前提:程序已經(jīng)燒錄到nandflash的0地址開(kāi)始處??梢杂胘link間接燒錄法等。
b,2440MCU上電后,會(huì)自動(dòng)讀取nandflash的前4K到它的內(nèi)部sarm(該區(qū)域名稱(chēng)為SteppingStone),然后在

SteppingStone中運(yùn)行程序。那么假設(shè)nandflash中的數(shù)據(jù)大于4K,而自動(dòng)復(fù)制大小僅為4K,怎么辦呢?所以,在這4K

代碼中需要加入copynand2ram。然后,拷貝完后,接著PC跳到下一個(gè)標(biāo)志位置繼續(xù)執(zhí)行。(解釋一下標(biāo)志位置,如何

一開(kāi)始在內(nèi)部sarm中,可能地址為0x100,但是當(dāng)copynand2ram函數(shù)運(yùn)行完后,此標(biāo)志位置就會(huì)變成

0x30000000+0x100。那么就可以繼續(xù)執(zhí)行,而不是重復(fù)執(zhí)行了)

8,ecc工作原理(待做)

9,壞塊基本處理方式(要求:記住)
當(dāng)檢測(cè)到壞塊后,nandflash會(huì)自動(dòng)使用預(yù)留的block來(lái)代替。并且為此壞塊做標(biāo)記。
* Step1
When an error happens in the nth page of the Block ’A’ during erase or program operation.
* Step2
Copy the data in the 1st ~ (n-1)th page to the same location of another free block. (Block ’B’)
* Step3
Then, copy the nth page data of the Block ’A’ in the buffer memory to the nth page of the Block ’B

’.
* Step4
Do not erase or program to Block ’A’ by creating an ’invalid block’ table or other appropriate

scheme.

10,nandflash和norflash的基本區(qū)別(要求:記?。?br />a,接口不同,nandflash是地址命令線共用的。norflash是分開(kāi)的。
b,速度不同,nandflash的寫(xiě)入是擦除速度比norflash快很多,norflash的讀取速度比nandflash快。
c,可靠性不同,nandflash容易出現(xiàn)壞塊
d,壽命不同,nandflash可擦除一百萬(wàn)次,norflash可擦除十萬(wàn)次。
e,文件系統(tǒng)不同。nandflash選用yaffs文件系統(tǒng),norflash選用jffs文件系統(tǒng)
f,價(jià)格容量不同。nandflash容量大,價(jià)格偏低。norflash容量小,價(jià)格偏高。



關(guān)鍵詞: nandflashK9F2G08U0

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉