NORFlash数据丢失分析

李俊渠NORFlash数据丢失分析
摘要:FLASH器件因其突出的优点在嵌入式系统中广泛使用,但所有FLASH都受数据丢失困扰,数据丢失造成的产品故障现象通常不易复现,难以排查。本文通过对FLASH数据丢失的现象和原因进行分析,提供几种降低数据丢失引起产品故障的措施。为FLASH的设计和使用,提供提高数据安全性的方法。满城都是金字塔
关键词:数据丢失现象;数据丢失原因;降低数据丢失引起产品故障的措施
1.
概述
FLASH存储器作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等优点,成为嵌入式系统中主要的数据和程序载体。当前比较主流的两种闪存芯片结构类型为:NOR FLASH和NAND FLASH,这两类芯片都是非易失存储器。NAND FLASH具有容量大,擦写速度快的特点,适用于大容量数据存储,使用前需要写入驱动。NOR FLASH具有可靠性高、随机读取速度快、程序可以直接在芯片内执行的优势,在擦除和编程操作较少
而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用。
所有的FLASH器件都受数据丢失(也称为数据翻转)的困扰。当FLASH用于存储操作系统、配置文件、执行程序等敏感信息时,发生数据丢失会引起产品严重故障。在本人参与的某项目中,使用ATMEL公司的AT49BV802AT型NOR FLASH作为DSP程序存储器,发生了由于FLASH数据丢失造成产品故障的问题。本文以AT49BV802AT为参考,对NOR FLASH的存储机制、访问方式、故障模式、解决措施等进行分析论述。
1.
存储机制
NOR FLASH使用浮栅场效应管作为基本存储单元来存储数据。浮栅场效应管共有4个端电极,分别为源极、漏极、控制栅极和浮置栅极,前3个端电极的作用与普通MOSFET是一样的,区别仅在于浮栅,FLASH利用浮栅是否存储电荷来表征数字“0”和“1”。当向浮栅注入电荷后,D和S之间存在导电沟道,从D极读到“0”;当浮栅中没有电荷时,D和S间没有导电沟道,从D极读到“1”。
FLASH中,常用的向浮栅注入电荷的技术有两种:热电子注入(hot electron injection)和F-N隧道效应(Fowler Nordheim tunneling)。
NOR FLASH通过热电子注入方式向浮栅注入电荷(这种方法的电荷注入效率较低,因此NOR FLASH的写速率较低),写操作就是向浮栅注入电荷的过程。由于浮栅层在电气上是受绝缘层独立的,所以进入的电子会被困在里面,在一般的条件下电荷经过多年都不会逸散,存储单元上的逻辑值保持长久稳定。
FLASH芯片内部由浮栅型MOS管进行数据管理,通常只有写入(编程)和擦除指令会对FLASH内部数据进行改变:擦除时MOS管先注入电子,将存储阵列从1变0,随后再释放电子,将存储阵列从0变1;写入时MOS管对需要改变的地址位注入电子,从而使该地址位的数据从1变为0。
1.
访问操作
NOR FLASH具有独立并行的控制总线、地址总线和数据总线。通过这些总线,能够实现
对FLASH的擦除、编程和读等访问操作。控制总线一般包含复位、片选使能、写使能、输出使能(或称为读使能)和字节/字选择等。
擦除操作是将存储单元数据变为1,擦除操作按照规定的指令周期序列完成,分为扇区擦除和芯片擦除,不能以位、字节或字为单位进行擦除操作。每个扇区可重复擦写次数一般不少于10万次。AT49BV802AT的擦除、编程和读访问操作指令周期序列如图1所示。
图1 AT49BV802AT访问操作指令周期序列
AT49BV802AT擦除操作时序要求如图2所示。
图2 AT49BV802AT擦除操作时序图
编程操作是将相应存储单元的数据变为0,且不能再通过编程将其变为1。编程操作必须按照器件规定的指令周期序列来完成,以字节或字为单位写入。编程前必须先进行擦除操作。
AT49BV802AT编程操作时序要求如图3所示。
图3 AT49BV802AT编程操作时序图
NOR FLASH由于具有独立并行的地址总线和数据总线,可以实现完全随机的读取。上电后自动进入读模式,在片选有效和输出使能有效而写使能禁止时,数据总线输出为地址线
相应的存储单元数据。在片选无效或输出使能禁止时,数据总线输出为高阻状态。
AT49BV802AT读操作时序要求如图4所示。
图4 AT49BV802AT读操作时序图
1.
数据丢失现象及原因分析
由于擦除操作是从存储单元上挪走电荷,使存储单元逻辑值为“1”,只能按扇区擦除或整片擦除,不能只擦除1位、1字节或一个字。编程操作以字节或字为单位进行,向需要改变的存储单元注入电荷,使该存储单元逻辑值为“0”,且不能再通过编程将其值变为“1”。因此认
为数据丢失现象中,发生少数bit“0”到“1”的改变,是由器件损坏或器件制造时的工艺缺陷导致的;而“1”到“0”变化的可能原因主要有:①用户代码对FLASH的误操作;②FLASH编程过程中掉电;③FLASH编程过程中发生硬件复位;④单粒子翻转。
(a) “0”变“1”的数据丢失现象
FLASH存储单元浮栅中存储的电荷量决定了存储单元的阈值电压,而存储单元的阈值电压决定了存储单元存储数据是“0”还是“1”。如果器件损坏或存在缺陷,个别存储单元注入的电荷量不足或漏电流过大,随着时间推移,存储单元电荷减少,电压下降,则存储在该单元上的逻辑“0”可能变为逻辑“1”。若重新进行擦除和编程操作,则对该存储单元重新注入了电荷,读取数据将与写入值一致,可以使用,但其数据保持时间缩短。
(b) “1”变“0”的数据丢失现象
①用户代码对FLASH的误操作
由于用户代码设计缺陷,在程序运行中对FLASH某些存储单元进行了随机的编程操作,或对FLASH的访问操作不满足时序要求,导致FLASH存储内容发生改变,相较于预期的存储
内容,发生了数据丢失现象。
②FLASH编程过程中掉电
控制器件与FLASH通过控制线、数据总线和地址总线连接。设备断电瞬间,这些总线在一段时间内处于不稳定状态,此时若正在对FLASH执行编程操作,则FLASH有一定概率识别出错误的地址信息,而将数据写入错误的地址中,导致该地址存储单元数据丢失。
③FLASH编程过程中发生硬件复位
AT49BV802AT手册中明确写道“If a hardware reset happens during programming,the data at the location being programmed will be corrupted.”即若在编程过程中发生硬件复位,则正在编程位置的数据有可能被损坏。也就是在编程过程中发生硬件复位,可能会造成该存储单元数据丢失。
④单粒子翻转
单粒子翻转是指单个高能粒子作用于半导体器件,引发器件的逻辑状态发生异常变化。单
粒子翻转是空间辐射造成的多种单粒子效应中最常见和最典型的一种,主要发生在数据存储和指令相关器件中。单粒子翻转造成的器件错误属“软错误”,即通过系统复位、重新加电或重新写入能够恢复到正常状态。
矩阵革命
1.
电炉软件降低数据丢失造成产品故障的措施
所有FLASH都受数据丢失困扰,数据丢失会引起产品故障,因此在设计中采取措施降低数据丢失造成产品故障很有必要。
宫调音乐上述数据丢失现象和原因中,用户代码对FLASH的误操作引起的数据丢失,为设计缺陷,故障容易复现,通过更改设计即可消除。
由器件制造时的工艺缺陷导致的“0”变“1”,FLASH编程过程中掉电、FLASH编程过程中发生硬件复位或单粒子翻转导致的“1”变“0”等数据丢失现象,属于偶发性故障,要进行预防或消除很困难。但可以采取一些措施来降低数据丢失引起产品故障的概率,常用的措施有:三模冗余、纠错码和周期性更新存储内容。
三模冗余简称TMR,是常用的一种容错设计技术。采用三个相同的存储器模块,分别接收三个相同的输入,产生的输出送至数据表决模块,数据表决模块以多数相同的输出作为系统的正确输出。三个存储器模块中只要不同时出现两个相同的错误,就能掩蔽掉故障模块的错误,保证系统正确的输出。由于三个存储器互相独立,两个模块同时出现错误是极小概率事件,因此可以大大降低数据丢失造成产品故障的概率。
三部六病

本文发布于:2024-09-22 16:32:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/8967.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   丢失   存储单元   电荷   操作   编程
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议