EEPROM的应用
- 格式:doc
- 大小:468.00 KB
- 文档页数:14
2024年EEPROM市场规模分析1. 引言EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,具有电可擦除和可编程的特性。
EEPROM广泛应用于电子设备、汽车电子、通信设备等行业,因其存储容量大、读写速度快、可重写性强等特点受到市场的广泛关注。
本文将从全球和地区两个维度,对EEPROM市场规模进行分析。
2. 全球2024年EEPROM市场规模分析根据市场研究公司的数据显示,全球EEPROM市场具有稳定增长的趋势。
在过去几年中,EEPROM市场规模年均增速为5%以上。
主要原因包括电子设备普及以及对高性能和大容量存储需求的增加。
全球EEPROM市场根据产品类型划分,主要包括串行EEPROM和并行EEPROM。
其中,串行EEPROM市场占据主导地位,其市场规模预计将更进一步扩大。
串行EEPROM由于其小尺寸、低功耗,以及灵活性高等特点,被广泛用于便携式电子设备和无线通信设备等领域。
此外,全球主要制造商着眼于研发更高性能的EEPROM产品。
新的EEPROM产品不仅可以提供更大的容量,还有更高的读写速度和更低的功耗,以满足不断增长的市场需求。
因此,EEPROM市场的竞争将更加激烈。
3. 地区2024年EEPROM市场规模分析3.1 北美地区 EEPROM市场在北美地区具有较高的市场规模。
北美地区是全球电子设备和半导体行业的重要市场之一,这导致EEPROM的需求保持较高。
另外,北美地区的技术创新和新产品的引入也推动了EEPROM市场的发展。
3.2 欧洲地区欧洲地区的EEPROM市场同样显示出稳定增长的趋势。
欧洲的汽车电子行业发展迅猛,这进一步增加了对EEPROM的需求。
此外,欧洲地区的智能家居和物联网市场也对EEPROM市场的发展起到积极推动作用。
3.3 亚太地区亚太地区是全球EEPROM市场的最大消费地区之一。
该地区拥有庞大的电子产品制造业,因此对EEPROM的需求非常高。
eeprom原理
EEPROM原理及其应用
EEPROM是一种可擦写可编程只读存储器,它是一种非易失性存储器,可以在不需要电源的情况下保持数据。
EEPROM的工作原理是通过在存储器单元中存储电荷来存储数据。
当需要读取数据时,电荷被读取并转换为数字信号,然后传输到计算机或其他设备。
EEPROM的应用非常广泛,它可以用于存储各种类型的数据,包括程序代码、配置文件、用户设置等。
它还可以用于存储加密密钥和其他敏感信息,因为它可以在不需要电源的情况下保持数据,这使得它非常适合用于安全应用。
EEPROM的另一个重要应用是在微控制器和其他嵌入式系统中。
它可以用于存储程序代码和数据,这使得它非常适合用于小型设备和嵌入式系统。
由于EEPROM可以在不需要电源的情况下保持数据,因此它可以用于存储关键数据,例如系统配置和用户设置。
EEPROM的优点是它可以被多次擦写和编程,这使得它非常适合用于开发和测试。
它还可以在不需要电源的情况下保持数据,这使得它非常适合用于移动设备和其他需要长时间存储数据的应用。
EEPROM是一种非常有用的存储器,它可以用于各种应用,包括安全应用、嵌入式系统和移动设备。
它的优点是它可以被多次擦写和编程,并且可以在不需要电源的情况下保持数据。
因此,它是一种
非常有用的存储器,可以帮助开发人员和制造商开发出更好的产品。
2024年EEPROM市场前景分析简介EEPROM(Electrically Erasable Programmable Read-Only Memory),又称电可擦除可编程只读存储器,是一种非易失性存储器。
它能在断电的情况下保持数据,并且具有擦除和编程的能力。
EEPROM广泛应用于各种电子设备中,例如智能手机、电视、计算机、汽车和工业设备等。
本文将对EEPROM市场的前景进行分析。
市场趋势1. 增长势头EEPROM市场目前正处于稳定的增长阶段。
随着智能设备市场的不断扩大,对于存储器需求的增加使EEPROM得到了广泛的应用。
特别是随着物联网技术的发展,对于数据的存储和传输变得越来越重要,这进一步推动了EEPROM市场的增长。
2. 技术进步EEPROM技术不断地进行改进和创新,新一代的EEPROM产品具有更高的存储容量、更快的读写速度和更低的功耗。
这些技术进步提供了更好的用户体验,并促进了EEPROM市场的发展。
3. 应用领域扩展除了传统的消费电子产品,EEPROM在其他行业中也得到了广泛应用。
例如,汽车行业对于存储器的需求越来越高,用于车载设备和车辆控制系统。
工业设备、医疗设备和安全系统等领域也对EEPROM有着持续的需求增长。
这些新的应用领域将进一步推动EEPROM市场的发展。
市场挑战1. 价格竞争EEPROM市场面临着激烈的价格竞争。
随着市场竞争的加剧,EEPROM产品的价格持续下降,这对厂商的利润率构成了压力。
价格竞争可能导致市场份额的争夺和产品降价,影响市场的整体发展。
2. 替代技术随着存储器技术的不断发展,一些新的存储器技术逐渐成熟并进入市场。
例如,闪存和非挥发性存储器等技术提供了更高的存储密度和更低的成本。
这些替代技术可能对EEPROM市场构成一定的威胁。
3. 环境法规电子产品的环保性成为越来越重要的问题。
许多国家和地区制定了相关法规来限制电子产品中有害物质的使用。
例如,欧盟的RoHS指令限制电子产品中铅、汞等有害物质的含量。
2024年EEPROM市场分析现状1. 引言EEPROM(Electrically Erasable Programmable Read-Only Memory)作为一种非易失性存储设备,在现代电子技术中扮演着重要的角色。
本文旨在对EEPROM市场的现状进行分析,并讨论EEPROM在各个行业中的应用和未来发展趋势。
2. EEPROM市场概述EEPROM市场在过去的几年中呈现出稳定增长的趋势。
电子产品的快速发展、存储需求的增加以及技术的不断更新是EEPROM市场增长的主要推动力。
此外,智能手机、电子游戏机、汽车电子等行业对EEPROM的需求也在不断扩大,为市场提供了更多的机遇。
3. EEPROM应用领域分析3.1 智能手机随着智能手机的普及,对存储容量和性能的要求不断提高。
EEPROM作为存储设备的一种重要选择,被广泛应用于智能手机中,用于存储操作系统、应用程序和用户数据。
未来,随着智能手机市场的持续增长,EEPROM在该领域的需求将进一步增加。
3.2 汽车电子现代汽车中的电子装置数量快速增加,这包括了车辆控制单元、信息娱乐系统、导航系统等。
EEPROM在汽车电子中的应用越来越广泛,主要用于存储车辆的配置数据和用户偏好设置。
汽车电子市场的增长为EEPROM市场提供了新的发展机遇。
3.3 工业自动化工业自动化领域对高可靠性、耐久性和高温性能的存储设备需求量大。
EEPROM 凭借其非易失性和工作温度范围宽广的特点,被广泛应用于工业自动化设备中,如PLC(Programmable Logic Controller)和工业控制器。
随着工业自动化市场的发展,EEPROM市场也将有更多的增长潜力。
4. EEPROM市场竞争态势目前,EEPROM市场存在着多个主要竞争厂商。
其中,以Intel、STMicroelectronics、Microchip等为代表的大型半导体公司在EEPROM领域处于领先地位。
这些公司凭借其丰富的经验和技术实力,不断推出新的产品和解决方案,保持了市场的竞争优势。
eeprom名词解释
EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可擦
除和可编程的只读存储器,属于非易失性存储器的一种。
它能够在通电和非通电的情况下保持存储的数据,即使在断电的情况下也能保留数据。
EEPROM通过电子
电荷来存储数据,具有读取和写入数据的能力。
EEPROM在计算机和电子设备中广泛应用。
它常用于储存系统的配置信息、
固件升级程序、加密算法、数据存储等需要长期保存且需要经常更新的数据。
相比于传统的ROM芯片,EEPROM的重要特点在于它的可编程和可擦除性。
用户可以通过特定的编程器将数据写入EEPROM,并且可以根据需要随时擦除和重写其中
的数据。
EEPROM的擦除和写入操作是通过在芯片上施加高电压和地电压来实现的。
当需要擦除数据时,EEPROM会根据数据位的0和1在特定的位置存储电子电荷。
在写入新数据时,EEPROM会自动将原有的电子电荷擦除,并将新的电荷存储到
相关位置。
由于EEPROM具有可擦除和可编程的特性,它在电子设备中的应用非常广泛。
它不仅被用于存储固件和程序代码,还可以用于存储关键性数据,如设备ID、序
列号、密钥和密码等。
这些数据的长期保存和保密性对于设备的正常运行和安全性至关重要。
总结来说,EEPROM是一种可擦除和可编程的只读存储器,用于长期保存数
据和程序代码。
由于其高度可靠性和可编程性,EEPROM成为了各类电子设备中
不可或缺的一部分。
EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可擦写的
非易失性存储器,常用于嵌入式系统中保存配置信息、历史数据等。
以下是一个简单的EEPROM应用实例,演示如何在Arduino上使用EEPROM来存储和读取数据。
示例:在Arduino上使用EEPROM存储和读取一个整数
这个简单的Arduino示例演示了以下步骤:
1.包含EEPROM库:#include <EEPROM.h>包含了Arduino的EEPROM库。
2.定义EEPROM地址和要存储的值:address是EEPROM的地址,value是要
存储的整数值。
3.在setup中读取EEPROM:在setup函数中,首先从EEPROM读取存储的
值。
如果EEPROM中没有有效数据(255表示未写入数据),则使用默认
值。
4.在loop中执行任务:在loop函数中,你可以执行其他任务。
这个例子中,
简单地模拟值的变化,将新值写入EEPROM,并在串口上打印当前值。
5.等待一段时间:为了能够观察到EEPROM的变化,使用delay(1000)在每次
循环中等待1秒。
这只是一个简单的示例,实际应用中,你可能会使用EEPROM来存储设备配置、历史数据、用户设置等信息。
请注意,EEPROM有限的写入寿命,过于频繁的写入可能会导致擦写次数用尽。
EEPROM---AT24Cxx应⽤介绍结论:1、读写AT24CXX芯⽚,根据容量有多种⽅式:⼀、容量为AT24C01~AT24C16,⾸先发送设备地址(8位地址),再发送数据地址(8位地址),再发送或者接受数据。
⼆、AT24C32/AT24C64~AT24C512,⾸先发送设备地址(8位地址),再发送⾼位数据地址,再发送地位数据地址,再发送或者接受数据。
三、容量AT24C1024的芯⽚,是把容量⼀和容量⼆的⽅法结合,设备地址中要⽤⼀位作为数据地址位,存储地址长度是17位。
2、它的设备地址根据容量不同有区别: 1)、AT24C01~AT24C16:这⼀类⼜分为两类,分别为AT24C01/AT24C02和AT24C04~AT24C16;他们的设备地址为⾼7位,低1位⽤来作为读写标⽰位,1为读,0为写。
*1*、AT24C01/AT24C02。
AT24C01/AT24C02的A0、A1、A2引脚作为7位设备地址的低三位,⾼4为固定为1010B,低三位A0、A1、A2确定了AT24CXX的设备地址,所以⼀根I2C线上最⼤可以接8个AT24CXX,地址为1010000B~1010111B。
*2*、AT24C04~AT24C16的 A0、A1、A2只使⽤⼀部分,不⽤的悬空或者接地(数据⼿册中写的是悬空不接)。
举例:AT24C04只⽤A2、A1引脚作为设备地址,另外⼀位A0不⽤悬空,发送地址中对应的这位(A0)⽤来写⼊页寻址的页⾯号,⼀根I2C线上最⼤可以接4个,地址为101000xB~101011xB 2)、AT24C32/AT24C64:和AT24C01/AT24C02⼀样,区别是,发送数据地址变成16位。
注意事项:对AT24C32来说,WP置⾼,则只有四分之⼀受保护,即0x0C00-0x0FFF。
也就是说保护区为1KBytes。
对于低地址的四分之三,则不保护。
所以,如果数据较多时,可以有选择地存储。
导读:1.EEPROM巧妙应用之单片机章程2.基于I2C串行通信的EEPROM在电视中的设计应用3.EEPROM的保护措施在MAXQ环境中1.EEPROM巧妙应用之单片机章程引言全球各单片机生产厂商在MCS-51内核基础上,派生了大量的51内核系列单片机,极大地丰富了MCS-51的种群,致使MCS-51单片机是目前国内应用最广泛的一种单片机型.其中STC公司推出了STC89系列单片机,增加了大量新功能,提高了51的性能,是MCS-51家族中的佼佼者.早期的单片机控制系统,采用单片机加片外EEPROM配合,来存储一些需要预置的重要参数,并在数码管上显示出来.由于单片机控制的整流器要求实时性很强,而早期EEPROM的写周期在10 ms左右,因此运行参数的预置是在整流器待机的情况下进行的.而很多情况下需要在运行的同时记录数据,如用单片机控制的12脉波汽车电泳整流器要求在运行的同时实时记录重要数据,而且在掉电时不丢失.由于在12脉波整流器中运行的单片机程序,其周期必须小于1.67ms(交流电网的1个周期是20 ms,除以12就是l_67 ms),这就要求实时记录的时间在1ms以下甚至更短(考虑到程序的执行时间).经查阅资料发现,目前很多EEPROM达不到这个要求[1],即使时间最短的AT89S8252单片机片内.EEP-ROM的写周期也是2.5 ms.本文通过对EEPROM的巧妙应用,实现了整流器在线记录数据的功能.1 寻找符合要求的单片机设备使用的是Atmel公司的AT89C52(40DIP封装)单片机和EEPROM芯片2817A.要想在不改变原设备电路板的情况下完成要求的功能,就只能在兼容的MCS-51系列单片机中想办法.AT89S8252片内含有2 KB的EEPROM,经编程测试发现,它虽然能实时记录数据并且断电不丢失,但是在向片内EEPROM中记录1个数据时,能引起输出电压和电流的波动,不能满足实际运行的需要.其原因是AT89S8252单片机片内EEPROM的写周期为2.5 ms,超过了1.67 ms的程序的执行周期,从而影响了程序的正常运行.所以执行周期是解决问题的关键.STC89C51RC/RD+系列单片机片内含有EEPROM(Data Flash),读1个字节/编程1个字节/擦除1个扇区(512字节)的时间分别为10/μs/60μs/10 ms.编程1个字节的时间为60μs,远小于AT89S8252片内EEPROM 2.5 ms的编程时间,这为解决问题提供了思路.2问题的解决单片机STC89C55RD+(40DIP封装),其引脚、功能完全与AT89C52兼容,与MCS-51程序也兼容,片内含有20KB的Flash程序存储器,16KB的EEPROM数据存储器.把原用于AT89C52中的程序写到STC89C255RD+中,放到原设备上运行,可长期稳定地运行.经修改的在整流器中运行的单片机程序,实时记录一些数据到STC289C55RD+的EEPROM中,整流器可正常运行,但不能执行扇区擦除操作.执行扇区擦除操作将严重影响整流器的正常运行,引起输出电压和电流的很大波动.执行扇区擦除操作时,从示波器来看整流器的输出间断了20 ms,电压电流显示很大的波动.用示波器捕捉到了EEPROM写时的波形,输出波形暂停了20 ms,1个周波电压,电压波形如图1所示,不执行扇区擦除操作时的波形如图2所示.从图中可以看出,问题得到了很好的解决.究其原因,这与EEPROM的特点有关.STC89C5lRC/RD+系列单片机片内的EEPROM,与普通的EEPROM不同.普通的EEPROM有字节读/写功能,不需要擦除,在字节写的时候自动擦除.而STC89C51RC/RD+系列单片机片内的EEPROM,具有Flash的特性,只能在擦除了扇区后进行字节写,写过的字节中不能重复写,只有待扇区擦除后才能重新写,而且没有字节擦除功能,只能扇区擦除.3 EEPROM(Data FIash)的巧妙应用基于以上EEPROM(Data Flash)不易擦除的特点,可以写后先不擦除.利用EEPROM(Data Flash)容易写、时间短(字节写只有60 μs)的特点,可以充分利用其写的功能.根据汽车电泳整流器的特点:每泳1辆汽车,整流器的输出电流就从0逐渐上升到最大电流,然后又逐渐回到0.从电流的变化可以准确地识别出电泳过的车的数量.每识别出1辆车,就在EEPROM(Data Flash)的1个字节中(起始地址为0000H)写入#01H(也可以是其他数,但不能为#OFFH),然后地址自动加1,等待识别出下一辆车.这样就通过EEPROM(Data Flash)字节地址的方式,间接记录了汽车电泳整流器电泳过的车辆总数,并可在数码管上显示出来.16 KB的EEPROM(Data Flash)可记录16 384辆车.待将计满时,可按擦除按钮擦除EEP-ROM(Data Flash)中的所有扇区,再重新计数.如按每10分钟电泳1辆车,1天工作16小时,可连续记录16 384/60/10×16)=170天.此种方法也可用于对电泳整流器连续工作时间的累计,如每10分钟记录1个数据,可连续记录16 384/(60/10)=2 730小时.整流器停机断电后,每次开机给单片机上电时,在初始化程序中,首先从地址#0000H读片内EEPROM的数据,如果数据不为#OFFH,地址自动加1,再读下一个字节,直到所读数据为#OFFH为止.此时EEPROM的地址指针数据,即为前面累加的电泳车辆数(或累计电泳工作时间),可在数码管上显示出来.整流器工作后,按前述结语结合上产的实际情况,在不改变原设备电路板的情况下,通过使用MCS-51系列兼容单片机STC89C55RD+,巧妙利用其片内EEPROM,实现了在整流器运行的同时记录数据的功能,切掉点情况下不丢失数据.这种方法有效地提高了原设备的功能,给用户的使用到来了极大的方便,并且通过实验验证了此方法是可行的.2.基于I2C串行通信的EEPROM在电视中的设计应用1 前言近年来,数字化电视技术迅猛发展,特别是遥控系统的面市,各厂商在电视机中加人微处理器(MCU),各种人工智能化彩电完全替代了老式电视手动(机械式)控制和记忆方式.随着电视专用MCU功能日益强大,用户使用的功能日趋丰富,所需存储的数据和刷新速度不断提高,先后涌现出各种型号和规格的存储器.目前,电视机中应用最为广泛的是E2PROM.因为E2PROM保存着大量与电视机工作状态密切相关的数据,其可靠性就遥控电视而言至关重要,视为第二核心器件.E2PROM与第一核心器件 (MCU)保持通信,并存储电视机的工作信息.有时由于存储数据的丢失造成重大损失,甚至导致数据无法修复.因此,在电视系统中,对于系统数据和用户数据的存储一般采用电可擦除存储器E2PROM.E2PROM具有操作简便、数据存储时间长、存储温度范围广、可擦写次数多等优点.以ATMEL公司推出的 AT24CXX系列为代表的串口通信E2PROM,以其质量可靠、接口简单等优点,逐渐成为电视产品设计中E2PROM的首选器件.2 AT24CXX系列简介与并行通信存储器相比,串行通信存储器以其占用很少的资源和I/O总线、体积小等优点而应用广泛.典型的串行通信E2PROM AT24CXX是I2C总线串行器件,具有工作电源宽(1.8~5.5 V),抗干扰能力强f输入引脚内置施密特触发器滤波抑制噪声),功耗低(写状态时最大工作电流3 mA),高可靠性(写次数100万次,数据保存100年),支持在线编程等特点.图1给出AT24CXX的内部结构框图,SDA引脚可实现双向串行数据传输,在SCL引脚输入时钟信号的上升沿将数据送入E2PROM,并在时钟的下降沿将数据读出.根据存储器空间地址的大小,AT24CXX分为C02/2K、C04/4K、C08(A)/8K、C16/16K等多种版本,各版本器件除存储空间不同外,其内部性能基本一致,用户可根据实际使用的条件合理选择相应器件.A2、A1和A0引脚为AT24CXX的硬件连接的器件地址输入引脚.一条总线上最多可挂接8个AT24C02或4个AT24C04或2个AT24C08(A)或1个AT24C16.另外,AT24CXX系列器件具有用于硬件数据写保护功能引脚.当该引脚接低电平时,允许器件正常读/写操作;当该引脚接高电平时,器件启动写保护功能.各版本器件的写保护功能说明及存储结构如表1所示.3 AT24CXX在彩电中的设计及应用虽然AT24CXX外围引脚和元件数很少,接口电路简单,但在实际CRT彩电应用中,由于电视机内存在高压跳火等干扰信号,E2PROM会出现一些"怪"现象,导致电视机工作异常.以下给出导致电视机异常工作的主要现象.3.1 非人为因素改变E2PROM部分数据这种现象表现为电视机的工作状态在某次开机后工作异常.如果在发现异常后无任何处理,将在一段时间内保持异常状态.最常见现象如系统关键数据 (行、场数据)的突变,这种现象一般是由开机时显像管打火或其他原因导致I2C总线数据线工作异常产生的误操作.出现这种现象时,如果在工厂菜单或用户菜单里根据标准数据调整这些突变的数据,则可以纠正解决;如果这些突变的数据无法调整,则必须采取软件复位、E2PROM赋初始值等方法解决.从硬件上预防这种现象的方法大多是在I2C总线的SDA、SCL数据线靠近E2PROM引脚处,与地线间加稳压二极管,从而起到保护总线端口的作用,如图2中的VD1、VD2.根据长期产品跟踪的结果表明,采用此方法E2PROM数据出错率小于3‰.但是此方法只能减小寄存器数据出错率,而不能从根本上消除数据出错,但一般也不会导致E2PROM相应数据区域物理损坏.这种方法的优点是简单易行,几乎不占用器件资源.目前最科学的方法是利用E2PROM的写保护功能,AT24C08A的第7引脚是数据通信写保护引脚WP(低电平有效),将其与MCU处理器 I/O接口连接,如图3所示.在E2PROM写操作期间,MCU处理器I/O接口输出低电平,E2PROM允许I2C总线写入数据,而在其他操作过程中,该I/O接口输出高电平,E2PROM不允许I2C总线写入数据.此方法成本低(省去两个稳压二极管),出错率更低,但需软件支持.根据统计,使用 E2FROM写保护功能,数据出错率小于1‰.如果同时使用上述这两种方法,E2PROM数据出错率则更低,效果更佳.3.2 E2PROM部分区域物理损坏常温下,短期内不会产生E2PROM部分区域物理损坏的现象.由于E2PROM在常温下的可擦写100万次.但在高温下,E2PROM的可擦写数大大降低.如果高温下频繁对E2PROM进行擦写操作,短期内易导致E2PROM部分区域物理损坏.其表现为特定数据无法正常存储,即使使用烧录器强制烧录也不能恢复.判定E2PROM部分区域物理损坏的方法:用烧录器将E2PROM中每个地址分别置0和1状态,可检查有无区域物理损坏.确认是 E2PROM损坏,则必须更换新的E2PROM才能排除电视机的故障.若软件处理不当则引起这种现象.要防止这种情况发生必须从软件着手,从而避免对特定区域频繁操作.典型实例是某高清CRT彩电AFT频率自动跟踪系统及其他一些判别系统的软件设计.以AFT频率自动跟踪系统为例,当环境工作温度及电源电压变化后,高频调谐器会有一定的频率点漂移.软件设计时,频率点偏移后,软件程序应即时记录下新的频率点偏移电压值并将其数值存储到E2PROM指定地址中.高温下,由于相关器件的参数发生变化,频点会随温度升高不断漂移,使E2PROM数据刷新异常频繁,从而导致电视机在高温负荷试验中出现E2PROM 物理损坏.在查明原因后,应对该软件进行修改,将实时存储频点数据方式改为频率跟踪掉电存储方式,即只在电视机关机掉电的情况下记录该数据,这样可减少 E2PROM数据刷新次数,从而解决上述问题.4 结语E2PROM作为一种通用存储器件,在设计时往往容易忽视一些对其细节方面的考虑,其中一些问题在设计试制阶段被发现并解决,还有一些问题是要在量产乃至售后一段时间后才暴露出来.因此,完整的现代电子产品系统,更多的是需要依靠软硬件相互配合开发,才能使产品的可靠性到达最佳状态.3.EEPROM的保护措施在MAXQ环境中介绍在嵌入式微控制器应用中,通常都要用到非易失性存储器.无论是掉电时维持需要保存的设置,还是存储公司的重要记录,可靠的非易失性存储器都是现代微控制器领域的一个基本单元.非易失性存储常常采用外部串行存储器实现.多年以来,该领域用到了数十亿颗类似存储器件,它们的可靠性得到了的广泛认可.目前,存储器可以做到几百字节到1兆字节甚至更大的容量,在每一个需要保持设置的设备中,都能找到这样一个紧凑、廉价的器件.包括EEPROM、闪存和旋转式存储器在内,所有类型的非易失性存储器都面临一个共同的问题:写周期被中断时,数据会丢失.一旦在写周期执行过程中掉电,那么即使再恢复电源,也很难修复损坏的数据. 本文提出了一种基于事务的提交-回退机制,用于保护一个外部串行EEPROM存储器件的内容.这些措施同样适用于大多数MAXQ微控制器的内置EEPROM.可以下载本应用的代码文件(ZIP,20.5kb).I2C EEPROM的特点串行存储器件有多种接口,但最常用的接口是I2C接口.这种总线接口有很多优点:高度标准化的接口;控制器和存储器之间只需两条线;而且具有灵活的时序要求,可以由软件驱动.一个I2C主机可以驱动很多I2C从机,从而最大程度减少了主机的引脚数.在所有EEPROM器件中,写周期都要比读周期长的多.因为在写周期过程中,电荷需要借助隧道效应并通过绝缘层进行转移,而这个过程很费时间.虽然增加电压可以加快这个过程,但是过高的电压会导致绝缘层的介质击穿,从而损坏器件.典型的EEPROM器件写周期持续10毫秒左右;而读周期通常需要几百个纳秒.为了显着缩短写周期的时间,许多I2C EEPROM器件采用页面模式.该模式允许将多个字节传送到缓存中,然后将数据一次性写入存储区.I2C存储器件的典型页面尺寸为32字节.因此,可以在一个写周期内向EEPROM填入32个字节.这一点非常重要,因为串行EEPROM器件都具有特定的耐久度:即每个页面所能承受的写周期次数上限.典型的写周期次数从10,000到1,000,000次.然而,即使存储器件能够承受1百万次写周期,软件也会很快将其损耗殆尽.软件每秒仅执行100次写周期,那么不到3个小时就会耗尽器件的写周期次数.考虑到这些基本的EEPROM特性,设计者为一个嵌入式处理器设计可靠的非易失存储系统时,需切记以下几点:不要在同一页面上反复执行写操作.尤其是不要将某个页面设置成写入任何其它页面时都要更新的"目录".如果在写周期过程中电源被中断,必须提供以下机制:(1) 检测被中断的写操作;(2) 完成被中断的操作;(3) 或者将事件回退至写操作之前的状态.必须通过某些数据校验机制(校验和、CRC或消息摘要)来保证数据的完整性.设计目标虽然上面提到的EEPROM问题可通过多种非易失文件系统加以解决,但这样的文件机制对于小型嵌入式微控制器来说负担过重.很多文件系统需要更多的RAM,远远超出了小型微控制器所能提供的容量,而且对于多数应用,也不需要一个完整的文件系统.考虑到这一点,下面列出了EEPROM数据保护机制的设计目标:精简:保护机制用于存储校验数据的空间不应超过EEPROM的10%,它应该只需要少量的计算开销.块大小:被保护的块大小,应该和EEPROM的写操作页面大小一样.由于EEPROM器件的页面大小通常是2的偶数次幂,因此与每个块保留1或2个字节的做法相比,相同的尺寸大小更便于软件编码.耐久性:每个保护周期不要对同一页面进行写操作.可靠性:每次掉电情况下,数据都应是可恢复的.这里提到的保护机制有6个接口函数:读、写、提交、回退、检查和清理.读函数接收一个块编号和一个指向32字节缓存的指针.如果缓存地址和块编号处于有效范围内,程序就会将指定的块数据读入缓存,并校验数据的有效性.它会返回如下状态:有效读(valid read)、无效读(invalid read)、无效缓存地址(invalid buffer address)、无效页面编号(invalid page number)或保护失败(protectiON failure).写函数接收一个块编号和一个指向填好数据的32字节缓存的指针.如果缓存地址和块编号处于有效范围内,程序就会将数据写入非易失性缓存,并标记缓存状态以准备提交.提交和回退函数,是可以在写操作之后执行的互补型操作.提交函数将最近被写入的缓存数据复制到对应的存储区最终位置,并为下一个待写入的数据块准备好缓存结构.回退函数实际上就是一个"取消"操作.它消除最近一次写操作产生的效果,并为下一个写操作准备好缓存子系统. 检查函数读取存储器件的每个数据块,并检查存储数据的有效性.该函数还检查缓存子系统,以确保没有未执行的写操作.任何无效块或未执行的写操作都会使检查函数返回一个错误状态.清理函数修复一个数据损坏的EEPROM.实际上,它将试图找出发生的错误,并采取相应的解决措施.关于这些函数的更多细节,参见下面的操作详解.图1. EEPROM存储器的结构.存储器被划分为3个区域:主存储区,包含实际用户数据;校验存储区,包含主存储区每1页的CRC;缓存,包含存储临时写入数据的四个缓存.EEPROM结构参考上面图1给出的EEPROM结构.EEPROM包含三个主要区域:主存储区:EEPROM的最大区域用于存储用户数据.在一个16kB器件内,包括512页、每页32字节的存储空间.在这样的器件中,开始的473个页面专门用来存储数据.校验存储区:EEPROM的第二个部分,用于校验主存储区每个页面的数据.校验存储区的每1页都包含15个16位的CRC值.每1页的最后1个CRC用于校验本页数据.校验存储区占用31页(从473到503页).缓存:EEPROM的最后部分,包含由8个页面构成的4个写缓存.每个缓存包含4个域:数据域,它包含32字节数据,执行下一个提交命令时,数据将被写入主存储区;地址域,它表示缓存数据要写入的页面地址;状态域,它表示缓存的状态(包括可用(available)、占用(occupied)和终止(expired)状态);16位CRC域,用来校验整个写缓存.缓存结构见图1所示.这种EEPROM结构可以实现主要的设计目标.首先,由于主存储区每1页数据的校验结果都存储在另一个位置,所以页面的所有位都用于存储用户数据.其次,由于主存储区的每1页都通过校验存储区的特定字来校验,因此校验存储区不会有单点错误,并且也不会在每个写周期中都去更新整个校验存储区的同一页面.最后,使用4个写缓存分散了写周期带来的损耗.操作详解对于一个不带保护功能的EEPROM,具体操作非常简单.一个读周期简单地将字节从所选择的地址传送给主机;一个写周期将字节从主机写入EEPROM,并等待操作完成(大多数器件需要几个毫秒的时间).然而,在一个提供保护的EEPROM环境下,读和写操作就比较复杂了.在以下各节中,对每个操作进行了分解,以便了解函数被调用时到底是如何操作的.读操作图2. 读操作的流程图读操作这个最简单的接口函数,也是相当复杂的.图2给出了操作流程:检查页面地址和缓存地址,以检验它们的有效性.如果地址无效,则就此结束操作,函数返回一个无效缓存地址或无效页面编号错误代码.将所选页面读入缓存.计算校验页面的地址,并将相应的校验页面读入暂存区.计算校验页面的CRC.如果校验页面的数据无效,则返回一个保护失败错误代码.计算数据缓存的CRC,并将其与暂存区中对应读取页面的CRC进行比较.如果CRC匹配,则程序返回有效读代码;如果CRC不匹配,则程序返回无效读代码.无论结果怎样,实际读取的数据都保存在返回缓存中,以供调用读操作的程序使用.写操作图3. 写操作的流程图如上所述,写操作并不是真正将数据写入主存储区.实际上,写操作是将数据写入4个缓存之一.在这种方式下,主存储区内原先的数据将一直保持到整个有效写操作流程完成后为止.图3的流程说明了以下几点:检查页面地址和缓存地址,以检验其有效性.如果地址无效,操作在这里结束,函数返回一个无效缓存地址或无效页面编号错误代码.读取每个写缓存的状态域.如果任何缓存处于占用状态,则操作失败并返回写过程(write sequence)错误代码.4个写缓存之一应处于终止状态.如果是这样,激活下一个缓存.数据被复制到写缓存的数据域.页面地址被写入地址域.计算CRC校验结果并将其写入CRC域.将状态改为占用.将前一个缓存置为可用状态(即更新原来的终止状态).需要注意,此时对新写的页面进行读操作,将返回页面原来的数值.只有等提交操作完成后,才会返回新值.提交操作图4. 提交操作的流程提交函数不需要参数.它的工作就是如实地将数据从写缓存传送到主存储区,然后将写缓存标记为终止状态.提交函数的操作流程如图4所示:读取每个写缓存的状态域.应该只有1个缓存标记为占用状态.否则,函数在此结束,并返回一个写过程错误代码.对被占用的缓存进行CRC校验.如果不匹配,则返回一个数据损坏错误代码.提取页面地址,并将数据写入主存储区的指定页面.计算缓存的数据部分的CRC.该值被保存在一个临时寄存器中.找到对应所选主存储区页面的校验页面,并读取该校验页面的内容.用前面计算的CRC更新校验页面,为校验页面计算新的CRC.将校验页面数据重新写回校验存储区.将写缓存更新为终止状态.回退操作图5. 回退操作的流程图如图5所示,回退函数是最简单的操作之一.由于主存储区只有在完成一个提交操作后才更新数据,而不是在一个写操作之后更新的,所以回退操作只需将写缓存置为无效状态即可.读取每个写缓存的状态域.应该只有一个缓存被标记为占用.否则,函数在此结束,并返回一个写过程错误代码.将所选的写缓存状态域置为终止.检查操作图6. 检查操作的流程图在任何上电情况下,都需要调用检查函数以确保EEPROM可以接受数据.检查函数检验存储系统的可用性,并报告任何发现的错误.该函数的检查操作如图6所示:读取每个写缓存.确认只有一个缓存不是可用状态.如果只有一个缓存含有未定义的状态代码,则返回一个写操作中断(interrupted write)错误代码.如果所有缓存均包含未定义的状态代码,则返回EEPROM未初始化(uninitialized EEPROM)错误代码.如果仅有一个缓存包含占用状态代码,计算此缓存的CRC.如果CRC不匹配,则返回一个写操作中断错误代码.检查校验存储区的每一个页面.如果任何页面没有通过CRC校验,则返回保护失败错误代码.最后,检查主存储区的每一页,并与存储的各页CRC进行对比.如果有1页未通过CRC校验,则返回一个提交中断(interrupted commit)错误代码.清理操作图7. 清理操作的流程清理函数解决EEPROM系统存在的任何问题.在清理操作退出时,无论EEPROM子系统先前是何种状态,都应该可以继续使用了.所有未提交的写操作将被回退,并且完成失败的提交操作.图7演示了清理操作是如何工作的:如果检查操作返回一个EEPROM未初始化的错误代码,则初始化EEPROM.清除所有数据页面,并且初始化所有校验页面.除最后一个写缓存被初始化为终止状态外,清除其它所有写缓存并置为可用状态.。