NAND Flash的驅(qū)動程序設(shè)計方案
NAND Flash的驅(qū)動程序設(shè)計方案
以三星公司K9F2808UOB為例,設(shè)計了NAND Flash與S3C2410的接口電路,介紹了NAND Flash在ARM嵌入式系統(tǒng)中的設(shè)計與實現(xiàn)方法,并在UBoot上進行了驗證。所設(shè)計的驅(qū)動易于移植,可簡化嵌入式系統(tǒng)開發(fā)。
關(guān)鍵詞 ARM UBoot NAND Flash K9F2808UOB 驅(qū)動程序
引言
當(dāng)前各類嵌入式系統(tǒng)開發(fā)設(shè)計中,存儲模塊設(shè)計是不可或缺的重要方面。NOR和 NAND是目前市場上兩種主要的非易失閃存技術(shù)。NOR Flash存儲器的容量較小、寫入速度較慢,但因其隨機讀取速度快,因此在嵌入式系統(tǒng)中,常用于程序代碼的存儲。與NOR相比,NAND閃存的優(yōu)點是容量大,但其速度較慢,因為它的I/O端口只有8或16個,要完成地址和數(shù)據(jù)的傳輸就必須讓這些信號輪流傳送。NAND型Flash具有極高的單元密度,容量可以比較大,價格相對便宜。
本文以三星公司的 K9F2808UOB芯片為例,介紹了NAND Flash的接口電路與驅(qū)動的設(shè)計方法。文中介紹了開發(fā)NAND Flash驅(qū)動基本原理,意在簡化嵌入式系統(tǒng)開發(fā)過程。
1 NAND Flash工作原理
S3C2410板的NAND Flash支持由兩部分組成:集成在S3C2410 CPU上的NAND Flash控制器
和NAND Flash存儲芯片。要訪問NAND Flash中的數(shù)據(jù),必須通過NAND Flash控制器發(fā)送命令才能完成。所以, NAND Flash相當(dāng)于S3C2410的一個外設(shè),并不位于它的內(nèi)存地址區(qū)。
1.1 芯片內(nèi)部存儲布局及存儲操作特點
一片NAND Flash為一個設(shè)備, 其數(shù)據(jù)存儲分層為:1設(shè)備=4 096塊;1塊=32頁;1頁=528字節(jié)=數(shù)據(jù)塊大小(512字節(jié))+OOB塊大小(16字節(jié))。在每一頁中,最后16字節(jié)(又稱OOB,Out?of?Band)用于NAND Flash命令執(zhí)行完后設(shè)置狀態(tài)用,剩余512字節(jié)又分為前半部分和后半部分??梢酝ㄟ^NAND Flash命令00h/01h/50h分別對前半部、后半部、OOB進行定位,通過NAND Flash內(nèi)置的指針指向各自的首地址。
存儲操作特點有: 擦除操作的最小單位是塊;NAND Flash芯片每一位只能從1變?yōu)?,而不能從0變?yōu)?,所以在對其進行寫入操作之前一定要將相應(yīng)塊擦除(擦除即是將相應(yīng)塊的位全部變?yōu)?);OOB部分的第6字節(jié)(即517字節(jié))標(biāo)志是否是壞塊,值為FF時不是壞塊,否則為壞塊。除OOB第6字節(jié)外,通常至少把OOB的前3字節(jié)用來存放NAND Flash硬件ECC碼。
1.2 NAND Flash接口電路
首先介紹開發(fā)板的硬件設(shè)計,圖1為NAND Flash接口電路。其中開關(guān)SW的1、2連接時R/B表示準(zhǔn)備好/忙,2、3連接時nWAIT可用于增加讀/寫訪問的額外等待周期。在S3C2410處理器中已經(jīng)集成了NAND Flash控制器,圖2為微控制器與NAND Flash連接的方式。
圖1 NAND Flash接口電路
1.3 控制器工作原理
NAND Flash控制器在其專用寄存器區(qū)(SFR)地址空間中映射有屬于自己的特殊功能寄存器,就是通過將NAND Flash芯片的內(nèi)設(shè)命令寫到其特殊功能寄存器中,從而實現(xiàn)對NAND Flash芯片讀、檢驗和編程控制。特殊功能寄存器有:NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT、NFECC。
評論