spinand之data buffer
data buffer简介
spinand一般会有一个内置的data buffer。
以W25N01GV为例,一个page是2048bytes外加64bytes的spare数据,其data buffer就有2048+64=2112bytes。
data buffer与读写
在写数据到spinand时,需要分为两步。
第一步,Load Program Data (02h),将数据写到data buffer中。此时spinand除了会将接收到spi的波形解码出来写到buffer,还会计算对应的ecc校验码,并覆盖到spare区域的指定位置。即在buffer中准备好要写入cell的数据。
第二步,Program Execute (10h),将数据从data buffer真正写到cell中,固化起来。
在从spinand中读数据时,也需要分为两步
第一步,Page Data Read (13h),将数据从cell中读取到data buffer中。此时spinand会读取cell数据,并计算ecc,进行纠错。如果cell中发生了位翻转,那么经过ecc纠错后写到data buffer中的就已经是正确的数据了
第二步,Read Data (03h),将数据从data buffer中读出来。
可以看到,data buffer是读写的必经之路。
data buffer 读写测试
当出现flash数据读写错误,可以专门构建一个buffer读写测试。
简单来讲,就是只执行上述读写步骤的第一步,把数据写到buffer,但不写入cell,而是直接再读出校验。
这样的实验,省去了读写cell的时间,效率很高。且不会真正读写cell,因此对flash的寿命是没有影响的。可以帮助快速复现排查问题。
如果buffer读写测试可以复现问题,那么就可以确认问题跟cell无关了。
最新文章
- C语言 回文
- 【Linux学习】Vi 操作命令集合
- Win10 UI入门窗口由默认500px to 320px
- 在Json解析过程中,我为什么用object1.optInt ,和 object1.optString
- hdu 1517 博弈 **
- 动态SQL基础
- jsp开发知识
- Codeforces Round #188 (Div. 2) C. Perfect Pair 数学
- JSP JS 日期控件的下载、使用及注意事项
- JS常见的字符串操作
- UVA11992 Fast Matrix Operations
- python新建txt文件,并逐行写入数据
- 整理 oracle异常错误处理
- 自己实现一个一致性 Hash 算法
- Visual Studio 2010详细安装过程
- linux批量修改文件名
- SpringBoot Mybatis 执行自定义SQL
- Ubuntu16.04中MySQL之中文不能插入问题
- jquery显示、隐藏div的方法
- mybatis foreach标签的解释 与常用之处