如果我避开了已经写入的区域,该如何写入先前写入的页面?
如果我理解p。数据表中的16正确地说:使用这种特定芯片,即使您避开了已经写入的区域,也不得写入先前写入的页面。
细节
该SST25VF064C闪存芯片数据表p上。16说:“页面编程指令可在内存中编程多达256个字节的数据。在启动页面编程操作之前,所选页面地址必须处于擦除状态(FFH)。”
因此,我认为“在启动页面编程操作之前,整个选定页面必须处于擦除状态(页面FFh中的每个字节)。” SST或Microchip是否发布了任何文档来澄清这一令人发指的模棱两可的句子?
以我的经验,所有MLC闪存芯片和一些较新的SLC闪存芯片的制造商都要求,一旦写完一页,即使您只想将1位更改为1位,也必须在擦除该页面之前再次擦除该页面。 0位。(在YAFFS文章中,这称为“一次写入规则”。)
以我的经验,所有较旧的闪存芯片都允许您将任何1位更改为0位而没有擦除周期,即使该位在页面中,甚至是已经将其他位编程为0的字节也是如此-两次擦除之间可以多次编程闪存的页面。(在YAFFS文章中称为“多次写入”)。
制造商的数据表是制造商对您做出的有条件承诺。只要您遵循所有数据手册中的建议,制造商便会保证该芯片将按规定运行。我怀疑如果对以前编写的页面进行编程,避免已经写过的区域,那么比立即读回可能会给您期望的数据提供的机会更大-新写的字节就是您刚写的值,其他字节可能保持不变。但是,由于这不符合数据表中的建议,因此您不能再依赖数据表中的所有承诺。我听到有传言说,由于程序干扰,过度编程,电荷陷阱以及类似于DRAM行锤的影响,这种未经批准的活动会导致数据保留时间和持久性受到影响等。
“存储器的使用方案会影响误码率。部分页编程,块内的非顺序页编程,每个块的过度读取而没有擦除以及单个块内的读取操作次数不相等会增加读取次数干扰错误。” -米哈尔·杰德拉克(Michal Jedrak)。
“嵌入式系统中的NAND闪存”。
“在页面编程过程中,当某个位从“ 1”到“ 0”被无意编程时,将发生编程干扰。此位错误可能发生在正在编程的页面上或该块的另一页上。页面编程期间的块会导致少量电流隧穿到附近的存储单元中。重复进行的部分页面编程尝试将继续加剧这种情况。” -道格拉斯·谢尔顿(Douglas Sheldon)和迈克尔·弗赖(Michael Freie)。
“闪存中的干扰测试”。p。8、9
“在编程操作期间,如果对位进行了无意编程(从1到0),则会发生编程干扰。...通过在块中进行随机编程以及对页面进行多次部分写入,会使这种情况变得更糟。”
“ Yaffs NAND闪存故障缓解”