没有合适的资源?快使用搜索试试~ 我知道了~
NandFlash的读写过程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 138 浏览量
2022-07-11
20:17:34
上传
评论
收藏 270KB PDF 举报
温馨提示
试读
5页
NandFlash的读写过程.pdf 学习资料 复习资料 教学资源
资源推荐
资源详情
资源评论
NandFlash读写过程
本文转自:百度
blog.c hin aunix /u id- 30222118-id-5576971 .
摘 要:本文以 S3C2410 处理器和 k9f1208 系统为例,讲述了 NandFlash 的读写方法。读操作
的过程为: 1、发送读取指令;2、发送第 1 个 cycle 地址;3、发送第 2 个 cycle 地址;4、发送第 3
个 cycle 地址;5、发送第 4 个 cycle 地址;6、读取数据至页末;写操作的过程为: 1、发送写开始指
令;2、发送第 1 个 cycle 地址;3、发送第 2 个 cycle 地址;4、发送第 3 个 cycle 地址;5、发送第 4
个 cycle 地址;6、写入数据至页末;7、发送写结束指令。
关键词:S3C2410;k9f1208;NandFlash;读写方法
1 结构分析
S3C2410 处理器集成了 8 位 NandFlash 控制器。目前市场上常见的 8 位 NandFlash 有三星公
司 的 k9f1208 、 k9f1g08 、 k9f2g08 等 。 k9f1208 、 k9f1g08 、 k9f2g08 的 数 据 页 大 小 分 别 为
512Byte、2kByte、2kByte。它们在寻址方式上有一定差异,所以程序代码并不通用。本文以
S3C2410 处理器和 k9f1208 系统为例,讲述 NandFlash 的读写方法。
NandFlash 的数据是以 bit 的方式保存在 memory cell 里的,一般来说,一个 cell 中只能存储
一个 bit,这些 cell 以 8 个或者 16 个为单位,连成 bit line,形成所谓的 byte(x8)/word(x16),这
就是 NAND Device 的位宽。这些 Line 组成 Page, page 再组织形成一个 Block。k9f1208 的相
关数据如下:
1block=32page;1page=528byte=512byte(Main Area)+16byte(Spare Area)。
总容量为=4096(block 数量)*32(page/block)*512(byte/page)=64Mbyte
NandFlash 以页为单位读写数据,而以块为单位擦除数据。按照 k9f1208 的组织方式可以分
四类地址: Column Address、halfpage pointer、Page Address 、Block Address。A[0:25]表示数据
在 64M 空间中的地址。
Column Address 表示数据在半页中的地址,大小范围 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] 表示;
2 读操作过程
K9f1208 的寻址分为 4 个 cycle。分别是:A[0:7]、A[9:16]、A[17:24]、A[25]。
读操作的过程为: 1、发送读取指令;2、发送第 1 个 cycle 地址;3、发送第 2 个 cycle 地址;
4、发送第 3 个 cycle 地址;5、发送第 4 个 cycle 地址;6、读取数据至页末。
K9f1208 提供了两个读指令,‘0x00’、‘0x01’。这两个指令区别在于‘0x00’可以将 A[8]
置为 0,选中上半页;而‘0x01’可以将 A[8]置为 1,选中下半页。
虽然读写过程可以不从页边界开始,但在正式场合下还是建议从页边界开始读写至页结束。
下面通过分析读取页的代码,阐述读过程。
static void ReadPage(U32 addr, U8 *buf) //addr 表 示 flash 中 的 第 几 页 , 即 ‘ flash 地址
>>9’(右移)
{
U16 i;
NFChipEn(); //使能 NandFlash
RdNFCmd(READCMD0); //发送读指令‘0x00’,由于是整页读取,所以选用指令‘0x00’
RdNFAddr(0); //写地址的第 1 个 cycle,即 Column Address,由于是整页读取所以取 0
RdNFAddr(addr); //写地址的第 2 个 cycle,即 A[9:16]
RdNFAddr(addr>>8); //写地址的第 3 个 cycle,即 A[17:24]
RdNFAddr(addr>>16); //写地址的第 4 个 cycle,即 A[25]。
1 / 5
NandFlash 读写过程
资源评论
努力搬砖的小王
- 粉丝: 16
- 资源: 7706
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功