国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

S3C2410讀寫NandFlash分析

發(fā)布時間:2011-3-24 13:47    發(fā)布者:techshare
關(guān)鍵詞: nandflash , S3C2410
一、結(jié)構(gòu)分析

S3C2410處理器集成了8位NandFlash控制器。目前市場上常見的8位NandFlash有三星公司的k9f1208、k9f1g08、k9f2g08等。k9f1208、k9f1g08、k9f2g08的數(shù)據(jù)頁大小分別為512Byte、2kByte、2kByte。它們在尋址方式上有一定差異,所以程序代碼并不通用。本文以S3C2410處理器和k9f1208系統(tǒng)為例,講述NandFlash的讀寫方法。

NandFlash的數(shù)據(jù)是以bit 的方式保存在memory cell里的,一般來說,一個cell 中只能存儲一個bit,這些cell 以8 個或者16 個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device 的位寬。這些Line 組成Page, page 再組織形成一個Block。k9f1208的相關(guān)數(shù)據(jù)如下:

1block=32page;1page=528byte=512byte(Main Area)+16byte(Spare Area)。

總?cè)萘繛?4096(block數(shù)量)*32(page/block)*512(byte/page)=64Mbyte

NandFlash以頁為單位讀寫數(shù)據(jù),而以塊為單位擦除數(shù)據(jù)。按照k9f1208的組織方式可以分四類地址: Column Address、halfpage pointer、Page Address 、Block Address。A[0:25]表示數(shù)據(jù)在64M空間中的地址。

Column Address表示數(shù)據(jù)在半頁中的地址,大小范圍0"255,用A[0:7]表示;

halfpage pointer表示半頁在整頁中的位置,即在0"255空間還是在256"511空間,用A[8]表示;

Page Address表示頁在塊中的地址,大小范圍0"31,用A[13:9]表示;

Block Address表示塊在flash中的位置,大小范圍0"4095,A[25:14] 表示;

二、讀操作過程

K9f1208的尋址分為4個cycle。分別是:A[0:7]、A[9:16]、A[17:24]、A[25]。

讀操作的過程為: 1、發(fā)送讀取指令;2、發(fā)送第1個cycle地址;3、發(fā)送第2個cycle地址;4、發(fā)送第3個cycle地址;5、發(fā)送第4個cycle地址;6、讀取數(shù)據(jù)至頁末。

K9f1208提供了兩個讀指令,‘0x00’、‘0x01’。這兩個指令區(qū)別在于‘0x00’可以將A[8]置為0,選中上半頁;而‘0x01’可以將A[8]置為1,選中下半頁。
雖然讀寫過程可以不從頁邊界開始,但在正式場合下還是建議從頁邊界開始讀寫至頁結(jié)束。下面通過分析讀取頁的代碼,闡述讀過程。
static void ReadPage(U32 addr, U8 *buf) //addr表示flash中的第幾頁,即‘flash地址>>9’
{
U16 i;
NFChipEn(); //使能NandFlash
WrNFCmd(READCMD0); //發(fā)送讀指令‘0x00’,由于是整頁讀取,所以選用指令‘0x00’
WrNFAddr(0); //寫地址的第1個cycle,即Column Address,由于是整頁讀取所以取0
WrNFAddr(addr); //寫地址的第2個cycle,即A[9:16]
WrNFAddr(addr>>8); //寫地址的第3個cycle,即A[17:24]
WrNFAddr(addr>>16); //寫地址的第4個cycle,即A[25]。
WaitNFBusy(); //等待系統(tǒng)不忙
for(i=0; i<512; i++)
buf[ i] = RdNFDat(); //循環(huán)讀出1頁數(shù)據(jù)
NFChipDs(); //釋放NandFlash
}

三、寫操作過程

寫操作的過程為: 1、發(fā)送寫開始指令;2、發(fā)送第1個cycle地址;3、發(fā)送第2個cycle地址;4、發(fā)送第3個cycle地址;5、發(fā)送第4個cycle地址;6、寫入數(shù)據(jù)至頁末;7、發(fā)送寫結(jié)束指令

下面通過分析寫入頁的代碼,闡述讀寫過程。
static void WritePage(U32 addr, U8 *buf) //addr表示flash中的第幾頁,即‘flash地址>>9’
{
U32 i;
NFChipEn(); //使能NandFlash
WrNFCmd(PROGCMD0); //發(fā)送寫開始指令’0x80’
WrNFAddr(0); //寫地址的第1個cycle
WrNFAddr(addr); //寫地址的第2個cycle
WrNFAddr(addr>>8); //寫地址的第3個cycle
WrNFAddr(addr>>16); 寫地址的第4個cycle
WaitNFBusy(); //等待系統(tǒng)不忙
for(i=0; i<512; i++)
WrNFDat(buf[ i]); //循環(huán)寫入1頁數(shù)據(jù)
WrNFCmd(PROGCMD1); //發(fā)送寫結(jié)束指令’0x10’
NFChipDs(); //釋放NandFlash
}

四、總結(jié)

本文以S3C2410處理器和k9f1208系統(tǒng)為例講述了nand flash的讀寫過程。在讀寫過程中沒有考慮到壞塊問題,有關(guān)ecc及壞塊處理問題將在下個專題中講述。
本文地址:http://m.qingdxww.cn/thread-59735-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • FPGA設(shè)計流程培訓(xùn)教程
  • Chiptorials ——如何將CryptoAuthLib庫用于Microchip安全身份驗證IC
  • 無線充電基礎(chǔ)知識及應(yīng)用培訓(xùn)教程
  • Chiptorials——如何使用ATECC608 TrustFLEX實現(xiàn)公鑰輪換
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美人与动牲高清 | 香蕉精品高清在线观看视频 | 日韩国产成人精品视频 | 欧美在线一区二区三区 | 日本天堂视频 | 久久99精品久久久久子伦小说 | 国产一级在线免费观看 | 国产免费不卡v片在线观看 国产免费播放一区二区三区 | 国产一区二区日韩欧美在线 | 精品视频vs精品视频 | 青青草一区 | 国产白色视频在线观看w | 性战美乳洋妞 | 深夜久久 | 91热爆在线精品 | 四虎最新紧急入口 | 欧美日韩精品一区三区 | 高清国产欧美一v精品 | 国产中日韩一区二区三区 | 亚洲区在线播放 | 1000部又爽又黄无遮挡的视频 | 精品久久久久久中文字幕一区 | 欧美久久久久久久一区二区三区 | 99视频在线观看高清 | 国产三级网站在线观看播放 | 手机在线看片国产 | 色yeye在线观看 | 亚洲精品永久www嫩草 | 毛片基地看看成人免费 | 老司机亚洲精品影院在线 | 国产精品线在线精品国语 | 无人视频在线观看完整版免费下载 | 国产精品午夜寂寞视频 | 99精品国产在热久久 | 久久精品国产国产精品四凭 | 青青青国产精品国产精品美女 | 日本高清乱码中文字幕 | 三级国产在线 | 精品小视频在线 | www.日本在线播放 | 亚洲国产欧美在线不卡中文 |