1、擦除过程:擦除过程是将0变成1的过程,即充电的过程(比如SLC中,当低于某个电压值表示0,高于这个电压值则表示1;而对于MLC来说可以有多个阈值,所以可以保存更多bit)。擦除过程是按块进行的,但启始地址是页地址,不过擦除过程在内部是有边界对齐的,也就是说当擦除启始地址不是块对齐时,只能擦除本块,而不能垮越到第二个块继续擦除,也就是无论我们给的地址是否页对齐,本块都将擦除,不会有任何保留。
2、写入过程:写入过程就是将1变成0的过程,即,放电降压的过程,理论上在写之前一定要先擦除,但实际上只要之前的值为1,不用擦也可以写入(举个例子,比如某一存储单元存放的值为7,那么可以写入比7小的值,比如6,然而反过来则不行,即,未擦之前是不能将6改写成7的)。写入过程可以是任意地址,如果不满一页(开头、中间、结尾都可以任意写入),剩下没有写入的存储单元不会因为未写而变成1,而是保持之前的状态不变(因为只有擦除才会变成1)。写入过程在内部也是有边界对齐的,也就是说写入起始地址不是页对齐时,只能从当前字节写到本页结尾,而不能垮越到第二个页继续写,即使写入长度够长,也不能一次写入垮越两页。
3、读取过程:读取过程只是通过解码电路将存储阵列中的电压信号变换成数字信号,并输出到nand的页缓冲器中,然后依次按一个或多个字节顺序读出的过程。读取过程在nand内部也是有边界对齐的,也就是读取起始地址不是页对齐时,只能从当前字节开始读到本页结尾,而不能垮越到第二页继续读取,即使读取长度够长,也不能一次垮越两页读取。
4、读写过程:前面的读写过程中的页大小问题,假如:page=2048Byte,oob=64Byte,那么,理论上要读写oob时,需要给出大于2048的列地址,但实际上在读取前面的2048字节数据区时,如果在不重新下达命令并给出列地址的情况下而继续向后读写数据,是可以直接读写oob区的,除非是要单独对oob区进行操作。其实对于oob区来说,nand并没有做过多特殊处理,就是多出来的数据区而已,只是大家约定在这里可以存放一些校验和坏块信息等,如果不存放这些信息,那么oob就是普通数据区。
5、操作地址:对一个1GByte的nand,可以用30位二进制来表示地址,即A0-A29,当我们希望读取某一个地址中的数据时,那么应该怎样给出这个地址呢,比如我要访问0x9000000这个地址开始的数据,那么这个地址又是否包含oob区域呢(实际上并不包含)。
以上信息只是在s5pv210作为主控,操作K9K8G08U0B得出的结论,不同主控和nand型号可能会略有不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。