注明来自 http://www.ssdfans.com/?p=5589

以MLC为例:

对FGF(Floating Gate Flash)技术的,MLC programming一般分两步走:先program Lower page,然后program Upper Page。

对某个Cell来说,当写入1时,无需Programming,阈值电压保持不变,还是处于E状态;当写入0时,必须进行Programming,使它的阈值电压落到D范围 ,即E->D。

Programming某个page时,往其所在的WL控制极上施加高电平,衬底接地,对需要Programming的存储单元(如上图绿色圈起来的cell):1->0,其bitline接地;对不需要Programming的存储单元(如上图红色圈起来的cell):1->1,bitline拉高,就能抑制其Programming。

由于每个存储单元的体质不一样,有些cell很快就能让其阈值电压跳到D范围,而有些存储单元需要若干次Programming,才能使其到达D。flash采用Program + Verify的方式进行Programming,即开始在WL控制极上施加一个电压,如上图所示,假设Vpgm =19V,让这个电压持续一段时间,然后撤掉,对每个Programming的存储单元进行验证,看其阈值电压是否超过验证电压Vvfy,如果超过,说明达到D状态,这些存储单元的bitline从接地到拉高,让其不再继续Programming,而对那些没有达到D状态的存储单元,还需要继续Programming。Vpgm会加大,比如增加0.5V,Vpgm = 19.5V,继续Programming,verify,直到达到D状态。

在Programming upper page之前,flash需要读取该Page,获取page中所有cell的当前状态,然后根据输入,Programming cell到相应的目标状态。

如果当前cell状态处于E,如果写入1,无需Programming,E状态保持不变;如果写入0,则需要Programming该cell到状态D1;   如果当前cell状态处于D,如果写入1,program该cell到D2;如果写入0,则需要Programming该cell到状态D3;

比较一下lower page programming和upper page programming,有以下几个不同:

1.Program upper page时,需先知道当前cell的状态,在programming之前需要读所有的cells; Program lower page时候无需此操作,因为所有cell都处于擦除状态;

2.Program upper page时,需要verify好几个电平,而program lower page时,只需verify一个电平;

3.Program lower page时,E状态和D状态可以隔得比较远,因此program时候可以加更大的初始program电压和更大的步进(step)电压;而Program Upper page时,E,D1,D2,D3之间的间隔比较小,因此program需要更精细的控制电压,不然一下program过头了。比如本来期望从E状态跳跃到D1状态,不小心电压加大了,直接就跳到D2,那就麻烦了。

分两次写最大的问题是,如果在programming upper page时发生异常掉电,那么之前Lower page的数据也丢失。

《FLASH PROGRAMMING 那些事》总结的更多相关文章

  1. Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors

    Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...

  2. [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法

    MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦. 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以 ...

  3. Turtelizer 2 provide JTAG Flash programming and debugging of ARM based boards via USB

    http://www.ethernut.de/en/hardware/turtelizer/ Introducing Turtelizer 2 Overview Turtelizer 2 had be ...

  4. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...

  5. Programming Internal Flash Over the Serial Wire Debug <SWD> Interface -- EFM32

    1 Debug Interface Overview 1.1 Serial Wire Debug Serial Wire Debug (SWD) is a two-wire protocol for ...

  6. Error:Flash Download Failed-"Cortex-M3"

    Error:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/H ...

  7. STM32F4读写内部FLASH【使用库函数】

    STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多.平时写的代码,烧写完之后还有大量的剩余.有效利用这剩余的FLASH能存储不少数据.因此研究了一下S ...

  8. Flash Download Failed-"Cortex-M3"

    rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...

  9. Stm32_调试出现 Error:Flash Download Failed-"Cortex-M3"

    rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...

随机推荐

  1. 003杰信-在jsp页面输入数据,然后在oracle数据库中插入factory数据,当字段允许为空时要特殊处理

    本博客的内容全部来自于传智播客,特在此说明. 业务要求如下:在jsp页面(jFactoryCreate.jsp)上输入数据时,转到后台,并输入到数据库. jFactoryCreate.jsp页面:

  2. 图像处理之二维码生成-qr

    Javascript生成二维码(QR)   网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成.本着对服务器性能的考虑,这种小事情都让服务器 ...

  3. Worktile中百万级实时消息推送服务的实现

    Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/

  4. debugging openstack with pdb

    在要开始debug的地方导入pdb: class KeypairAPI(base.Base): """Sub-set of the Compute Manager API ...

  5. js获取url中指定参数的值(含带hash)

    function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&] ...

  6. Tomcat高并发配置优化

    用的JMeter在自己电脑上测试的.Ubuntu10.04(x64)内存2G,cpu E5400 主频2.7.jdk1.6.0_27(x64) , tomcat6.0.33(x64) , oracle ...

  7. STL容器:deque双端队列学习

    所谓deque,是"double-ended queue"的缩写; 它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速; 在中间插入元素比较费时,因为需要移动其它元 ...

  8. C++之类模板

    C++之类模板 代码如下:  C++ Code  123456789101112131415161718192021222324252627282930313233343536373839404142 ...

  9. 数据仓库与BI面试常见题目

    一. 数据库 1. Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用?materialized view 答:a:视图是虚拟表,提高了表的安全性,视图没有实际物理空间,而表 ...

  10. Linux环境下Apache配置多个虚拟主机挂载多站点同时运行

    博客地址: http://blog.csdn.net/ClydeKuo/article/details/69569474 这篇博客讲的很详细,很详细.