欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
NAND Flash控制器訪(fǎng)問(wèn)NAND Flash的方法

本章目標:

1)        了解NAND Flash芯片的接口

2)        掌握通過(guò)NAND Flash控制器訪(fǎng)問(wèn)NAND Flash的方法

 

u       Flash介紹

       常用的Flahs類(lèi)型有NOR FlashNAND Flash兩種。NOR FlashIntel公司在1988年發(fā)明,以替代當時(shí)在市場(chǎng)上占據主要地位的EPROME2PROM。NAND FlashToshiba公司在1989年發(fā)明的。

       NOR Flash支持XIP,即代碼可以直接在NOR Flash上執行,無(wú)需復制到內存中。這是由于NOR Flash的接口與RAM完全相同,可以隨機訪(fǎng)問(wèn)任意地址的數據。在NOR Flash上進(jìn)行讀操作的效率非常高,但是擦除和寫(xiě)操作的效率非常低。另外,NOR Flash的容量一般比較小,NAND Flash進(jìn)行擦除和寫(xiě)操作的效率更高,并且容量更大。一般頁(yè)言,NOR Flash用于存儲程序,NAND Flash用于存儲數據?;?/span>NAND Flash的設備通常也要搭配NOR Flash以存儲程序。

       Flash存儲器件由擦除單元(也稱(chēng)為塊)組成,當要寫(xiě)某個(gè)塊時(shí),需要確保這個(gè)塊已經(jīng)被擦除。NOR Flash的塊大小范圍為64KB - 128KB;NAND Flash的塊大小范圍為8KB - 64KB,擦/寫(xiě)一個(gè)NOR Flash塊需要4s,而擦/寫(xiě)一個(gè)NAND Flash塊僅需要2ms,NOR Flash的塊太大,不僅增加了擦寫(xiě)時(shí)間,對于給定的寫(xiě)操作,NOR Flash也需要更多的擦除操作——特別是小文件,比如一個(gè)文件只有1KB,但是為了保存它卻需要擦除大小為64KB-128KBNOR Flash塊。

       NOR Flash的接口與RAM完全相同,可以隨意訪(fǎng)問(wèn)任意地址的數據。而NAND Flash的接口僅僅包含幾個(gè)I/O引腳,需要串行地訪(fǎng)問(wèn)。NAND Flash一般以512字節為單位進(jìn)行讀寫(xiě)。這使得NOR Flash適合于運行程序,而NAND Flash更適合存儲數據。

       容量相同的情況下,NAND Flash的體積更小,對于空間有嚴格要求的系統,NAND Flash可以節省更多的空間。

       對于Flash存儲器件的可靠性需要考慮3點(diǎn):位反轉、壞塊和可擦除次數。所有Flash器件都遭遇位反轉的問(wèn)題:由于Flash固有的電器特性,在讀寫(xiě)數據過(guò)程中,偶然會(huì )產(chǎn)生一位或幾位的數據錯誤(這種概率很低),而NAND Flash出現的概率遠大于NOR Flash。當位反轉發(fā)生在關(guān)鍵代碼或數據上時(shí),有可能導致系統崩潰。當僅僅是報告位反轉,重新讀取即可;如果確實(shí)發(fā)生了位反轉,則必須有相應的錯誤檢測和恢復措施。在NAND Flash上發(fā)生位反轉的概率更高,推薦使用EDC/ECC進(jìn)行錯誤檢測和恢復。NAND Flash上會(huì )有壞塊隨機分布,在使用前需要將壞塊掃描出來(lái),確保不再使用它們,否則會(huì )使產(chǎn)品含有嚴重的故障。NAND Flash每塊的可擦除次數通常在100000次左右,是NOR Flash10倍。另外,因為NAND Flashr的塊大小通常是NOR Flash1/8,所以NAND Flash的壽命遠遠超過(guò)NOR Flash。

       嵌入式LinuxNOR、NAND Flash的軟件支持都很成熟。在NOR Flash上常用jffs2文件系統,而在NAND Flash上常用yaffs文件系統。在更底層,有MTD驅動(dòng)程序實(shí)現對它們的讀、寫(xiě)、擦除操作,它也實(shí)現了EDC/ECC校驗。

 

u       NAND Flash訪(fǎng)問(wèn)方法

       K9F1208U0M容量為528Mbit,分為131072行(頁(yè))、528列,每一頁(yè)大小為512字節,外加16字節的額外空間,這16字節額外空間的列地址為512 - 527。

       命令、地址、數據都是通過(guò)8個(gè)I/O口輸入/輸出,這種形式減少了芯片的引腳個(gè)數,并使得系統很容易升級到更大的容量。寫(xiě)入命令、地址和數據時(shí),都需要將WE#、CE#信號同時(shí)拉低。數據在WE#信號的上升沿被NAND Flash鎖存:命令鎖存信號CLE、地址鎖存信號ALE用來(lái)分辨、鎖存命令或地址。K9F1208U0M64MB存儲空間需要26位地址,因此以字節為單位訪(fǎng)問(wèn)Flash時(shí)需要4個(gè)地址序列:列地址、行地址的低位部分、行地址的高位部分。讀/寫(xiě)頁(yè)在發(fā)出命令后,需要4個(gè)地址序列,而擦除塊在發(fā)出擦除命令后僅需要3個(gè)地址序列。

       NAND FlashS3C2410/S3C2440的連線(xiàn)比較少,8個(gè)I/O引腳(IO0 - IO7)、5個(gè)使能信號(nWE、ALE、CLE、nCE、nRE)、1個(gè)狀態(tài)引腳(RDY/B)、1個(gè)寫(xiě)保護引腳(nWP)。地址、數據和命令都是在這些使能信號的配合下,通過(guò)8個(gè)I/O引腳傳輸。寫(xiě)地址,數據、命令時(shí),nCE、nWE信號必須為低電平,它們在nWE信號的上升沿被鎖存。命令鎖存使能信號CLE和地址鎖存信號ALE用來(lái)區分I/O引腳上傳輸的是命令還是地址。

       操作NAND    Flash時(shí),先傳輸命令,然后傳輸地址,最后讀/寫(xiě)數據,期間要檢查Flash的狀態(tài)。對于K9F1208U0M,它的容量為64MB,需要一個(gè)26位的地址。發(fā)出命令后,后面要緊跟著(zhù)4個(gè)地址序列。比如讀Flash時(shí),發(fā)出讀命令和4個(gè)地址序列后,后續的讀操作就可以得到這個(gè)地址及其后續地址的數據。相應的命令字和地址序列如表8.2、8.3所示。

       K9F1208U0M一頁(yè)大小為528字節,而列地址A0 - A7可以尋址的范圍是256字節,所以必須輔以其它手段才能完全尋址這528字節。將一頁(yè)分為A、B、C三個(gè)區,A區為0 - 255字節,B區為256 - 511字節,C區為512 - 527字節。訪(fǎng)問(wèn)某頁(yè)時(shí),需要選定特定的區,這稱(chēng)為“使地址指針指向特定的區”。這通過(guò)3個(gè)命令來(lái)實(shí)現:命令00h讓地址指針指向A區,命令01h讓地址指針指向B區,命令50h讓地址指針指向C區。命令00h50h會(huì )讓訪(fǎng)問(wèn)Flash的地址指針一直從A區或C區開(kāi)始,除非發(fā)出了其他的修改地址指針的命令。命令01h的效果只能維持一次,當前的讀、寫(xiě)、擦除、復位或者上電操作完成后,地址指針重新指向A區。寫(xiě)A區或C區的數據時(shí),必須在發(fā)出命令80h之前發(fā)出命令00h50h;寫(xiě)B區的數據時(shí),發(fā)出命令01h后必須緊接著(zhù)就發(fā)出命令80h。

 

u       下面講解表8.2的命令字

1Read 1:命令字為00h01h

       發(fā)出命令00h01h后,就選定了讀操作是從A區還是B區開(kāi)始。從表8.3可知,列地址A0 - A7可以尋址的范圍是256字節,命令00h01h使得可以在512字節大小的頁(yè)內任意尋址——這相當于A8被命令00h設為0,而被命令01h設定為1。

       發(fā)出命令字后,依據表8.3發(fā)出4個(gè)地址序列,然后就可以檢測R/nB引腳以確定Flash是否準備好。如果準備好,就可以發(fā)起讀操作依次讀入數據。

2Read 2:命令字為50h

       Read 1命令字類(lèi)似,不過(guò)讀取的是C區數據,操作序列為:發(fā)出命令字50h、發(fā)出4個(gè)地址序列、等待R/nB引腳為高,最后讀取數據。不同的是,地址序列中A0 - A3用于設定C區(大小為16字節)要讀取的起始地址,A4 - A7被忽略。

3Read ID:命令字為90h

       發(fā)出命令字90h,發(fā)出4個(gè)地址序列(都設定為0),然后就可以連續讀入5個(gè)數據,分別表示廠(chǎng)商代碼(對一SAMSUNG公司為Ech)、設備代碼(對于K9F1208U0M76h)、保留的字節(對于K9F1208U0MA5h)、多層操作代碼(C0h表示支持多層操作)。

4Reset:命令字為FFh

       發(fā)出命令字FFh即可以復位NAND Flash芯片。如果芯片正處于讀、寫(xiě)、擦除狀態(tài),復位命令會(huì )終止這些命令。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

5Page Program(True):命令字分兩個(gè)階段,80h10h

       NAND Flash的寫(xiě)操作一般是以頁(yè)為單位的,但是可以只寫(xiě)一頁(yè)中的一部分。發(fā)出命令字80h后,緊接著(zhù)是4個(gè)地址序列,然后向Flash發(fā)送數據(最大可以達到528字節),然后就可以通過(guò)讀狀態(tài)命令70h獲知當前寫(xiě)操作是否完成、是否成功。

6Page Program(Dummy):命令字分兩階段,80h11h

       NAND Flash K9F1208U0M分為4 個(gè)128Mbit的存儲層(plane),每個(gè)存儲層包含1024個(gè)block528字節的寄存器。這使得可以同時(shí)寫(xiě)多個(gè)頁(yè)(page)或者同時(shí)擦除多個(gè)塊(block)。塊的地址經(jīng)過(guò)精心安排,可以在4個(gè)連續的塊內同時(shí)進(jìn)行寫(xiě)或者擦除操作。

       命令Page Program(Dummy)正是在這種結構下對命令Page Program(True)的擴展,后者僅能對一頁(yè)進(jìn)行寫(xiě)操作,前者可以同時(shí)寫(xiě)4頁(yè)。

       發(fā)出命令字80h、4個(gè)地址序列及最多528字節的數據之后,發(fā)出命令字11h11h稱(chēng)為“Dummy Page Program command”,相對地,10h被稱(chēng)為“True Page Program Command”);接著(zhù)對相鄰層(plane)上的頁(yè)進(jìn)行同樣的操作;僅在第4頁(yè)的最后使用10h替代11h,這樣即可啟動(dòng)Flash內部的寫(xiě)操作。此時(shí)可以通過(guò)命令71h獲知這些寫(xiě)操作是否完成、是否成功。

7Copy-Back Program(True):命令字分為3個(gè)階段,00h、8Ah、10h。

       此命令用于將一頁(yè)復制到同一層(plane)內的另一頁(yè),它省略了讀出數據源,新數據重新載入Flash,這使得效率大為提高。此命令有兩個(gè)限制:源頁(yè)、目的頁(yè)必須在同一個(gè)層(plane)中,并且源地址、目的地址的A14A15必須相同。

       首先發(fā)出命令Read 1(00h)、4個(gè)源地址序列,此時(shí)源頁(yè)的528字節數據很快就被讀入內部寄存器中;接著(zhù)發(fā)出命令字8Ah(Page-Copy Data-input command),隨之發(fā)出4個(gè)目的地址序列;最后發(fā)出命令字10h啟動(dòng)對目的頁(yè)的寫(xiě)操作。此后可以使用命令70h來(lái)查看此操作是否完成,是否成功。

8Copy-Back Program(Dummy):命令字分3個(gè)階段,03h、8Ah、11h。

       與命令Page Program(Dummy)類(lèi)似,Copy-Back Program(Dummy)可以同時(shí)啟動(dòng)對多達4個(gè)連續plane內的Copy-Back Program操作。

       首先發(fā)出命令字00h、源頁(yè)地址,這使得源頁(yè)的528字節數據被讀入所在plane的寄存器;對于隨后的其它plane的源頁(yè),發(fā)出命令字03h的相應的源頁(yè)地址將數據讀入該plane的寄存器;按照前面說(shuō)明讀出最多4個(gè)頁(yè)的數據到寄存器后,發(fā)出命令字8Ah、目的地址、命令字11h,在發(fā)出最后一頁(yè)的地址后,用10h代替11h以啟動(dòng)寫(xiě)操作。

9Block Erase:命令字分3個(gè)階段,60h、D0h。

       此命令用于擦除NAND Flash塊(block,大小為16KB)。發(fā)出命令字60h之后,發(fā)出block地址——僅需要3個(gè)地址序列,并且A9 - A13被忽略。

10Multi-Plane Block Erase60h ------60h D0h

       此命令用于同時(shí)擦除不同plane中的塊。發(fā)出命令字60h之后,緊接著(zhù)發(fā)出block地址序列,如此最多可以發(fā)出4個(gè)block地址,最后發(fā)出命令字D0h啟動(dòng)擦除操作。

11)讀狀態(tài)命令有以下兩種:

1、Read Status:命令字為70h

2、Read Multi-P;ane Status:命令字為71h

Flash中有狀態(tài)寄存器,發(fā)出命令字70h或者71h之后,啟動(dòng)讀操作即可讀入此寄存器。

 

u       S3C2410/S3C2440 NAND Flash控制器介紹

       NAND Flash控制器提供幾個(gè)寄存器來(lái)簡(jiǎn)化對NAND Flash的操作,比如要發(fā)出讀命令時(shí),只需要往NFCMD寄存器中寫(xiě)入0即可,NAND Flash控制器會(huì )自動(dòng)發(fā)出各種控制信號。

       1、操作方法概述

       訪(fǎng)問(wèn)NAND Flash時(shí)需要先發(fā)出命令,然后發(fā)出地址序列,最后讀/寫(xiě)數據;需要使用各種使能信號來(lái)分辨是命令、地址還是數據。S3C2410NAND Flash控制器提供了NFCONF、NFCMD、NFADDR、NFDATA、NFSTATNFECC6個(gè)寄存器來(lái)簡(jiǎn)化這些操作。S3C2440NAND Flash控制器則提供了NFCONF、NFCONT、NFCMMD、NFADDR、NFDATA、NFSTAT和其它與ECC有關(guān)的寄存器。對NAND Flash控制器的操作,S3C2410S3C2440有一些小的差別:有些寄存器不一樣,有些寄存器內容不一樣,這在實(shí)例程序中會(huì )體現出來(lái)。

       NAND Flash的讀寫(xiě)操作次序如下:

1)設置NFCONF(對于S3C2440,還要設置NFCONT)寄存器,配置NAND Flash。

2)向NFCMD寄存器寫(xiě)入命令,這些命令可以參考表8.2。

3)向NFADDR寄存器寫(xiě)入地址。

4)讀/寫(xiě)數據:通過(guò)寄存器NFSTAT檢測NAND Flash的狀態(tài),在啟動(dòng)某個(gè)操作后,應該檢測R/nB信號以確定該操作是否完成、是否成功。

       下面講解這些寄存器的功能和用法:

1NFCONFNAND Flash配置寄存器

這個(gè)寄存器在S3C2410、S3C2440上功能有所不同。

S3C2410NFCONF寄存器被用來(lái)使能禁止NAND Flash控制器、使能禁止控制引腳信號nFCE、初始化ECC,設置NAND Flash的時(shí)序參數等。

2NFCONTNAND Flash控制寄存器,S3C2410沒(méi)有這個(gè)寄存器。

被用來(lái)使能/禁止NAND Flash控制寄存器,使能/禁止控制引腳信號nFCE、初始化ECC。它還有其它功能,在一般的應用中用不到,比如鎖定NAND Flash。

3NFCMDNAND Flash命令寄存器

對于不同型號的Flash,操作命令一般不一樣。對于本板使用的K9F1208U0M,可參考表8.2。

4NFADDRNAND Flash地址寄存器。

當寫(xiě)這個(gè)寄存器時(shí),它將對Flash發(fā)出地址信號。

5NFDATANAND Flash數據寄存器。

只用到低8位,讀、寫(xiě)此寄存器將啟動(dòng)對NAND Flash的讀數據、寫(xiě)數據操作。

6NFSTATNAND Flash狀態(tài)寄存器

只用到位0,0busy,1ready

 

u       NAND Flash控制器操作實(shí)例,讀Flash

       本實(shí)例講述如何讀取NAND Flash,擦除、寫(xiě)Flash的操作與讀Flash類(lèi)似,讀者可以自行編寫(xiě)程序。

       NAND Flash的步驟,假設讀地址為addr

1)設置NFCONF(對于S3C2440,還要設置NFCONT

本章實(shí)例中設為0x9830——使能NAND Flash控制器、初始化ECC、NAND Flash片選信號nFCE=1(inactive,真正使用時(shí)再讓它等于0),設置TACLS = 0,TWRPH0 = 3,TWRPH1 = 0。這些時(shí)序參數的含義為:TSCLS=1個(gè)HCLK時(shí)鐘,TWRPH0 = 4個(gè)HCLK時(shí)鐘,TWRPH1=1個(gè)HCLK時(shí)鐘。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Nand Flash存儲結構及控制方法(K9F1G08)
Nand Flash原理分析與編程
NAND FLASH
NAND Flash硬件讀寫(xiě)原理
【簡(jiǎn)介】如何編寫(xiě)linux下nand flash驅動(dòng)-1
【簡(jiǎn)介】如何編寫(xiě)linux下nand flash驅動(dòng)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久