在嵌入式开发板中,nandflash就相当于电脑中的硬盘。
由图可知,一个nandflash有4096个block,每个block有128页,每页有4K的数据存储区和218B的校验存储区。要确定某一页的首地址,就要提供2个列地址和3个行地址,这样就可以得到这一页的首地址。
在nandflash中分两种,一种是单层式存储(SLC),每个单元格只有1位,比较贵,访问速度快(3倍),10w此擦写,功耗低
另外一种是多层式存储(MLC),每个单元格2位,便宜,访问速度慢,只有1w此擦写,功耗高
内存是参与统一编址,而nandflash是独立编址,也就是内存在地址空间分布中占有一席之地,但是nandflash没有,它需要地址线和数据线将nandflash连接到CPU的nandflash控制寄存器中,所以操作方式和一般单片机上的24C16很相似(个人觉得),都是1.传输地址2.传输命令3.数据传输
下面记录一下nandflash的内部分布
每一个nandflash有多个block块,每个block又有多个页,每个页由两个区域组成。
由图可知,一个nandflash有4096个block,每个block有128页,每页有4K的数据存储区和218B的校验存储区。要确定某一页的首地址,就要提供2个列地址和3个行地址,这样就可以得到这一页的首地址。
下面开始页读的操作,先在nandflash芯片数据手册里面找到read operation的流程图
1.发送命令0x00
2.发送2个列地址
3.发送3个行地址
4.发送命令0x30
5.等待RB信号从0变1
6.读取数据
但是对于一次对nandflash芯片的操作,我们必须还要做一些其他的必须做的事,那就是对于s3c6410来说选中芯片,清除RB信号,在读取完毕后还要取消选中芯片(注意P257)
在NFSTAT里面设置清空RB信号(bit 4),在NFCONT里面设置选中芯片/取消选中芯片