从开发板原理图可知,NANDFLASH K9G8G08
从datasheer可知,2G x 8 Bit NAND Flash Memory
2g的地址线,需要31根地址线,但是从原理图可知,只有8条,所以地址是多次发出。而且地址,数据,命令复用。从资料中找到下述定义
可知,地址分成5次发出。恰好31个数据。
继续向下看,同样有DDR类似的命令,毕竟一共就8条DATA线。所以是需要的
如果是单片机或者类似的没有NANDFLASH 控制器的处理器,则需要使用较为繁琐的时序图完成相应的读写操作。例下图。
6410内部集成了NANDFLASH控制器,使用起来较为简单。省略了设置相应使能的步骤,只需要将要发送的数据,命令,地址写到相应的寄存器就可以了。
下面来说点NANDFLASH的特点。
位反转:Nand Flash由于本身硬件的内在特性,会导致(极其)偶尔的出现位反转的现象。
所谓的位反转,bit flip,指的是原先Nand Flash中的某个位,变化了,即要么从1变成0了,要么从0变成1了。
位反转现象
Nand Flash的位反转现象,主要是由以下一些原因/效应所导致:
1.漂移效应(Drifting Effects)
漂移效应指的是,Nand Flash中cell的电压值,慢慢地变了,变的和原始值不一样了。
2.编程干扰所产生的错误(Program-Disturb Errors)
此现象有时候也叫做,过度编程效应(over-program effect)。
对于某个页面的编程操作,即写操作,引起非相关的其他的页面的某个位跳变了。
3.读操作干扰产生的错误(Read-Disturb Errors)
此效应是,对一个页进行数据读取操作,却使得对应的某个位的数据,产生了永久性的变化,即Nand Flash上的该位的值变了。
如果只是对于单个位的跳变,也许问题看起来并不是很严重。然而,如果恰巧是某个重要文件的某位变化了,那么问题就严重了。
如果位反转,只是读取数据出来时候报告出来的位反转,那么很简单,只需要重新再去读取一次数据,即可解决此问题。
但是,如果是Nand Flash物理上的某个位真正的翻转了,那么需要通过对应的ECC校验去解决。
相对Nor Flash来说,Nand Flash中,位反转的现象,相对更加容易发生。因此,Nand Flash厂家都推荐,在使用Nand Flash的时候,最好要应用ECC算法。
当Nand Flash应用于多媒体信息,比如存储音视频文件,那么位反转所造成的问题,并不严重。
当用于存储操作系统,配置文件和其他敏感信息的时候,必须要用ECC,以实现数据的校验,保证数据的正确性。
nandflash储存数据的时候是一页一页的储存,当读写数据时,首先接收列地址(column address)(2048+64-1),确定那一行,然后根据接下来行地址(row address)找到这个数据,每一页大小为2K
为了应对位反转现象,所以每一页2K外,还额外添加64bytes的字节,用于ECC校验。
当写入2K数据后,会自动生成64字节的校验码。
当读出2K数据,重新生成校验码。与64k校验码比较,如果不同,则发生了位反转,并且可以用校验码根据一定算法算出这一位。