通过数据缓冲提高eeprom使用寿命的方法

文档序号:6773274阅读:434来源:国知局
专利名称:通过数据缓冲提高eeprom使用寿命的方法
通过数据缓冲提高EEPROM使用寿命的方法
技术领域
本发明涉及一种嵌入式技术领域,特别是针对在EEPROM存储器上存储数据时,由 于受到器件本身特性的限制,在对某一单元存储数据达到一定次数以后该单元会失效的问 题提出的一种通过数据缓冲提高EEPROM使用寿命的方法。
背景技术
现有技术在嵌入式系统在初始化时配置系统各个模块,初始化外部存储器设备 后,确认访问存储器的首地址和存储空间大小,获得程序工作时所需要相应的访问地址。 电可擦写可编程只读存储器 EEPROM(ElectricalIyErasable Programmable Read-Only Memory)是一种掉电后数据不丢失的只读存储芯片。其做为系统的一个存储设备之一,一般 操作直接将主芯片对EEPROM存储器内部空间进行寻址。而一个嵌入式软件系统需要保存 的参数数据中,往往只有某些数据块是易变的,而其它数据则是相对不常变更的;这些易变 的数据参数一般表现为软件上定义的某些变量;数据结构固定,在不使用任何软件技术的 情况下,写入的地址也是固定的,这就容易造成EEPROM中某个固定的单元反复的擦除/写 入。EEPROM的每个单元一般只能保证承受十万次的擦除/写入,当有某个单元达到擦写的 次数极限,而无法对这个单元进行擦写时,就意味着这个EEPROM的使用寿命已经结束。所 以一个定时保存数据到EEPROM的嵌入式系统需要考虑EEPROM的寿命。

发明内容鉴于上述技术的不足,本发明的目的是提供一种通过数据缓冲提高EEPROM使用 寿命的方法。为实现上述的目的,本发明采用以下方案实现一种通过数据缓冲提高EEPROM使 用寿命的方法,其特征在于使用环形缓冲区保存数据,所述环形缓冲区包括复数个环形数 据缓冲区和与各环形数据缓冲区一一对应大小相同且具有的相同指针操作的环形状态缓 冲区;具体按以下步骤实现步骤10、初始化该环形缓冲区;步骤20、将需保存的数据按顺序写入环形数据缓冲区,使所述环形数据缓冲区的 每个存储单元都均勻循环使用;步骤30、在所述的复数个环形数据缓冲区分别提供一指针指向最后写入数据的存 储单元的位置,并在所述的状态缓冲区存储一数值,该数值等于对应的环形数据缓冲区最 后写入位置的地址值加1 ;步骤40、当系统复位后,系统读取状态缓冲区的数值,并将需保存的数据写入指针 指向该数值对应的数据缓冲区的位置。本发明具有如下优点可以使EEPROM的每个单元都承受到十万次擦除/写入,另 外当系统在一个复位环境中,如电源失效的情况,系统能够再次正确找到环形缓冲区的位 置,实现了在EEPROM中持久的保存参数的同时保证数据存储的安全高效。
图1是本发明实施例的环形缓冲区的结构图。图2是本发明实施例复位后找出数据缓冲区的当前位置的程序流程图。图3是本发明EEPROM读环形缓冲区的程序流程图。图4是本发明EEPROM写环形缓冲区的程序流程图。
具体实施方式下面结合附图及实施例对本发明做进一步说明。本发明提供一种通过数据缓冲提高EEPROM使用寿命的方法,其特征在于使用环 形缓冲区保存数据,如图1所示,是实施例的环形缓冲区的结构示意图,由该图可知,所述 环形缓冲区包括复数个环形数据缓冲区和与各环形数据缓冲区一一对应大小相同且具有 的相同指针操作的环形状态缓冲区;具体按以下步骤实现步骤10,初始化该环形缓冲区;步骤20,将需保存的数据按顺序写入环形数据缓冲区,使所述环形数据缓冲区的 每个存储单元都均勻循环使用;步骤30,在所述的复数个环形数据缓冲区分别提供一指针指向最后写入数据的存 储单元的位置,并在所述的状态缓冲区存储一数值,该数值等于对应的环形数据缓冲区最 后写入位置的地址值加1 (该数值表示记录数据缓冲区可用的最后地址值,加1只是逻辑上 需要在写入数据的基础上算出未占用数据空间的位置);步骤40,当系统复位后,系统读取状态缓冲区的数值,并将需要保存的数据写入指 针指向该数值对应的数据缓冲区的位置。本发明在使用环形缓冲区在EEPROM中保存数据,可以增加数据在EEPROM中保存 的次数。如果缓冲区有两级,那么数据可以保存的次数就是单个EEPROM单元的两倍。使用 这个方法增加环形缓冲区的大小就可以增加数据保存的次数。换句话说,将数据分散存储 到多个EEPROM位置可以增加数据存储的次数。当使用环形缓冲区时,数据保存的次数等于 使用的环形缓冲区数量乘以单个EEPROM单元的次数。这里要说明的是,本发明提供状态缓冲区,是为了在电源掉电后恢复指针的位置, 这个环形状态缓冲区不是用于保存特别的地址,只是一个“记号”显示数据缓冲区的保存位 置状态。因此,所述的环形数据缓冲区和环形状态缓冲区具有相同的大小和相同的指针操 作,具体的复位后找出数据缓冲区的当前位置的程序流程如图2所示,首先先查找EEPROM 位置地址,其地址addr =状态缓冲区起始地址,并判断状态缓冲区当前地址是否等于状态 缓冲区下一地址的值+1 ?是,则EEPROM位置地址addr =缓冲区的单元n+1,并返回继续判 断,否则EEPROM位置地址addr = EEPROM当前位置地址addr减去缓冲区的大小值再减1, 再返回。请参照图3和图4,图3、图4是本实施例EEPROM读/写环形缓 冲区的程序流程 图,当写入环形数据缓冲区时,环形状态缓冲区也要同时更新所述的指针指向数据缓冲区 和状态缓冲区的相同位置,状态缓冲区的数值等于数据缓冲区最后写入位置的地址值加1, 当缓冲区从最后回绕到起始时也是这样。系统复位后,就可以从环形状态缓冲区中搜索,如果相邻两个单元的内容之差大于1,就可以找出最后修改过的位置。这里要注意的是在第一次使用前需要初始化环形状态缓冲区EEPR0M,因此,上述的步骤10是很重要。否则可能无法正确找到缓冲区最后更新的位置。这种问题只会发生于 在环形缓冲区完成漫游整个缓冲区之前被复位。最好的解决办法是保证缓冲区被初始化, 在Flash擦除/编程时一起擦除/编程。值得一提的是,本发明的方法可通过ST Embedded Toolset R2. 1. 2开发环境编写 程序代码,可用以Sti5105为主芯片的数字电视机顶盒作为目标设备,本发明的一 EEPROM 中包含有多个的环形数据缓冲区和与各环形数据缓冲区一一对应大小相同且具有的相同 指针操作的环形状态缓冲区。以上所述仅为本发明之较佳实施例,凡依本发明申请专利范围所做之均等变化与 修饰,皆应属本发明之涵盖范围。
权利要求
一种通过数据缓冲提高EEPROM使用寿命的方法,其特征在于使用环形缓冲区保存数据,所述环形缓冲区包括复数个环形数据缓冲区和与各环形数据缓冲区一一对应大小相同且具有的相同指针操作的环形状态缓冲区;具体按以下步骤实现步骤10、初始化该环形缓冲区;步骤20、将需保存的数据按顺序写入环形数据缓冲区,使所述环形数据缓冲区的每个存储单元都均匀循环使用;步骤30、在所述的复数个环形数据缓冲区分别提供一指针指向最后写入数据的存储单元的位置,并在所述的状态缓冲区存储一数值,该数值等于对应的环形数据缓冲区最后写入位置的地址值加1;步骤40、当系统复位后,系统读取状态缓冲区的数值,并将需保存的数据写入指针指向该数值对应的数据缓冲区的位置。
2.根据权利要求1所述的通过数据缓冲提高EEPR0M使用寿命的方法,其特征在于该 方法用以Sti5105为主芯片的数字电视机顶盒作为目标设备。
全文摘要
本发明提供一种通过数据缓冲提高EEPROM使用寿命的方法,使用环形缓冲区缓冲保存数据的方法,使EEPROM的每个单元都均匀使用,并建立一个断点复位机制保证该方法的正常运作。本发明可以使EEPROM的每个单元都承受到十万次擦除/写入,另外当系统在一个复位环境中,如电源失效的情况,系统能够再次正确找到环形缓冲区的位置,实现了在EEPROM中持久的保存参数的同时保证数据存储的安全高效。
文档编号G11C16/10GK101989459SQ201010521400
公开日2011年3月23日 申请日期2010年10月27日 优先权日2010年10月27日
发明者郭鑫俊 申请人:福建新大陆通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1