CN104317671A - 一种提升非易失存储使用寿命的掉电数据保存恢复算法 - Google Patents
一种提升非易失存储使用寿命的掉电数据保存恢复算法 Download PDFInfo
- Publication number
- CN104317671A CN104317671A CN201410574614.0A CN201410574614A CN104317671A CN 104317671 A CN104317671 A CN 104317671A CN 201410574614 A CN201410574614 A CN 201410574614A CN 104317671 A CN104317671 A CN 104317671A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- segment
- byte
- power
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种掉电数据保存恢复算法。这种算法应用于包含微处理器和非易失存储器件的系统。其中非易失存储用于在系统意外掉电时,保存微处理器内易失存储中保存的关键现场数据;在下一次上电时,恢复现场,继续执行程序。根据非易失存储器擦除时块大小划分存储区,并按照关键现场数据量大小将每个存储区拆分为若干个相同容量的存储数据段和一个存储信息段。掉电时,系统迅速在一个存储段内保存恢复信息和关键现场数据。上电时,解析存储信息段内容,确定上次保存数据的存储数据段,恢复现场数据,并在必要的情况下擦除存储区。按照该算法可均衡存储器写入负载,避免每次启动时进行擦除,有效延长存储器使用寿命。
Description
技术领域
本发明涉及微控制器系统领域,特别是用于需要掉电时保存现场数据,并在下次上电时恢复现场数据,继续执行的系统中。
技术背景
随着嵌入式系统的广泛应用,在微控制器的程序控制下,产生了大量具有一定智能的电子设备,为人们的生活增加了诸多便利。然而,由于电网不稳定或误操作,常常导致系统意外下电,而程序的动态数据常常保存在SRAM或DRAM这类易失存储器中,掉电将导致信息丢失。为了保证再次上电时,设备能够接续上次掉电的状态继续执行,系统设计者常常在微控制器外另接一片非易失存储器,用于在掉电瞬间备份内存中的动态现场数据,并在下次上电时将现场数据读出并恢复程序从中断处执行。由于非易失存储器常常采用固定块大小进行管理,而进行块擦除的次数则受非易失存储的寿命限制。简单的数据保存、读出恢复和擦除过程会造成存储容量的浪费和系统寿命的减少,因而不能满足需要。为尽可能充分发挥非易失存储的性能,延长系统寿命,掉电保存和数据恢复的算法需要优化提升。
发明内容
本发明提供了一种掉电数据保存恢复算法,用以解决现有技术中用于存储掉电动态数据的非易失存储器寿命问题。本发明的设计主要目的是,通过优化掉电数据保存和上电数据恢复的算法,提升非易失存储器的使用寿命和使用效率。具体技术方案如下:
一种提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:将用于保存掉电现场数据的非易失存储器按照擦除块大小分为存储区,并进一步将每个存储区按照需要保存的掉电现场数据量分割为若干个数据段和一个信息段进行管理。
进一步的,每个所述数据段保存一次掉电现场数据。
进一步的,所述信息段容量字节数应大于每数据区存储的数据段数量加上4字节,其中每个数据段按顺序与信息段中的一个字节对应。
进一步的,所述信息段用来保存所在数据区中各数据段是否被写过的标记,且同时记录本数据段的写擦循环次数。
进一步的,所述掉电保存的步骤为:
A.硬件检测到系统掉电并产生掉电中断,进入中断服务例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,若是,则将掉电现场数据保存到该字节对应的数据段中;
进一步的,上电恢复的步骤为:
A.系统上电,首先进入系统恢复例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,选择取值0xff的第一个字节为当前信息字节,该字节所对应的数据段为当前数据段;
D. 从当前数据段中读取现场数据,恢复程序运行现场;
E. 若当前数据段为该存储区最后一个数据段,则擦除该数据区,将预先读出保存的信息段前四个字节整型数加一,并在擦除完毕后写回信息段。
附图说明
图1是具有微控制器和非易失存储的嵌入式系统硬件结构图;
图2是本发明的存储划分方式示意图;
图3是本发明的存储划分方式举例示意图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明的算法应用于具有微控制器和非易失存储的嵌入式系统,微控制器是理想的控制芯片,所需的存储资源并不需要很多。另外考虑到掉电瞬间可用于存储数据的时间很短,通常现场保存的数据量仅在1k字节以下,而更多则是在100字节以内。而非易失存储器则以EEPROM和NOR FLASH为主,这类存储器的擦除通常以数据块的形式进行,块大小通常在4k以上。少量数据保存后,若需要更新,需要将数据所在块整体擦除,因而造成了存储资源的浪费。
如图2所示,本发明按照擦除块大小进行数据管理,称每个块为数据区,并为充分利用数据区内存储资源,将数据区划分为多个数据段和一个信息段。其中每个数据段都用来保存一次掉电的现场数据。而信息段则用来保存所在数据区中各数据段是否被写过的标记,同时也记录本数据段的写擦循环次数,以保证任何一个数据区不会被过量磨损而失效,保证系统的可靠性。
合理的划分数据区、信息段和数据段后,系统掉电时的过程可表述为;
A.硬件检测到系统掉电并产生掉电中断,进入中断服务例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,若是,则将掉电现场数据保存到该字节对应的数据段中。
与此对应,系统再次上电时的步骤为;
A.系统上电,首先进入系统恢复例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,选择取值0xff的第一个字节为当前信息字节,该字节所对应的数据段为当前数据段;
D. 从当前数据段中读取现场数据,恢复程序运行现场,并将步骤C中所述当前信息字节改写为指定非0xff的数值;
E. 若当前数据段为该存储区最后一个数据段,则擦除该数据区,将预先读出保存的信息段前四个字节整型数加一,并在擦除完毕后写回信息段。
实施例
如图3所示,对于普通单片机来说片内Flash有数据存储区块A和块B,数据存储器擦除次数为10000次。数据存储器可用来在掉电时保存现场信息,每次掉电都会保存一次,意味着每次上电都会擦除一次。为了延长Flash的使用寿命,用以下算法可以提供更多的使用次数:
1、把Flash的1024字节分为48份,每份各20字节(需要保存的数据在20字节以内,如果超过20字节,则减少相应份数。)。这样总共还剩余64字节,其中前面4个字节存储擦除次数,如果超过10000次,则从数据存储区块A切换到块B 。从第五个字节开始的48个字节分别对应前面的48份,0xff代表该份Flash空间没有写,0xa5代表已经写过。
2、每一次单片机上电后,程序依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数10000的第一个存储区为当前存储区。在该存储区中信息段的第五个字节开始,依次判断后面的64字节,如果该地址为非0xff,则说明该字节对应的块已经被写过,直到找到0xff,说明这一次保存的位置就是该块,如果超过48次还没有找到,则说明前面已经写了48次(掉电48次),应该执行擦除操作,否则不擦除。然后把本次写Flash的地址保存在一个变量里,同时把擦除次数写到前面4字节双字内。
3、掉电中断检测到后,中断服务程序会根据2里面的地址变量把现场数据保存到该变量对应的区块,同时对后面64字节Flash相对应的空间直接写0xa5;
4、如果擦除次数超过10000次(可以考虑用5000次或者8000次),那么切换到块B,读写操作重复上述操作。
在这一优选方案中,2块Flash可以擦除次数为48*5000*2=48万次,按照每天掉电10次计算可以支持48000天/160年。否则只能支持5000*2/10/300=3年。
Claims (5)
1.一种提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:将用于保存掉电现场数据的非易失存储器按照擦除块大小分为存储区,并进一步将每个存储区按照需要保存的掉电现场数据量分割为若干个数据段和一个信息段进行管理。
2.根据权利要求1所述的提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:每个所述数据段保存一次掉电现场数据。
3.根据权利要求1所述的提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:所述信息段容量字节数应大于每数据区存储的数据段数量加上4字节,其中每个数据段按顺序与信息段中的一个字节对应。
4.根据权利要求2所述的提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:所述信息段用来保存所在数据区中各数据段是否被写过的标记,且同时记录本数据段的写擦循环次数。
5.根据权利要求1所述的提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:所述掉电保存的步骤为:
A.硬件检测到系统掉电并产生掉电中断,进入中断服务例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,若是,则将掉电现场数据保存到该字节对应的数据段中;
根据权利要求1所述的提升非易失存储使用寿命的掉电数据保存恢复算法,其特征在于:上电恢复的步骤为:
A.系统上电,首先进入系统恢复例程;
B. 依次检测各数据区中信息段内第一个整型双字,选择取值小于指定最大擦除次数的第一个存储区为当前存储区;
C. 从当前存储区信息段第5个字节开始,依此判断每一个字节的值是否为0xff,选择取值0xff的第一个字节为当前信息字节,该字节所对应的数据段为当前数据段;
D. 从当前数据段中读取现场数据,恢复程序运行现场;
E. 若当前数据段为该存储区最后一个数据段,则擦除该数据区,将预先读出保存的信息段前四个字节整型数加一,并在擦除完毕后写回信息段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410574614.0A CN104317671A (zh) | 2014-10-24 | 2014-10-24 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410574614.0A CN104317671A (zh) | 2014-10-24 | 2014-10-24 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104317671A true CN104317671A (zh) | 2015-01-28 |
Family
ID=52372906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410574614.0A Pending CN104317671A (zh) | 2014-10-24 | 2014-10-24 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317671A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881249A (zh) * | 2015-05-13 | 2015-09-02 | 深圳芯邦科技股份有限公司 | 一种eMMC的读写方法及装置 |
CN106227680A (zh) * | 2016-07-26 | 2016-12-14 | 成都三零嘉微电子有限公司 | 一种数据处理及防掉电数据保护方法 |
CN106354669A (zh) * | 2015-07-13 | 2017-01-25 | 国民技术股份有限公司 | 一种具有分级结构的存储器 |
CN107239408A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性存储器模块及其操作方法 |
CN107665096A (zh) * | 2016-07-29 | 2018-02-06 | 希捷科技有限公司 | 加权数据分条 |
CN108226590A (zh) * | 2017-12-27 | 2018-06-29 | 深圳市科陆电子科技股份有限公司 | 一种结算电能表掉电数据的方法及系统 |
CN110658981A (zh) * | 2019-04-19 | 2020-01-07 | 石家庄科林电气股份有限公司 | 一种提高Flash使用寿命的方法 |
CN111753337A (zh) * | 2020-07-02 | 2020-10-09 | 上海电器科学研究所(集团)有限公司 | 一种储能电池管理系统意外断电soc处理方法 |
CN113641307A (zh) * | 2021-08-12 | 2021-11-12 | 浙江华云信息科技有限公司 | 能掉电保存报文的远方电能量数据终端及其报文存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101874240A (zh) * | 2007-11-19 | 2010-10-27 | 三德动力有限公司 | 增加存储器的多个块的寿命 |
CN102929805A (zh) * | 2012-10-19 | 2013-02-13 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存数据掉电保护方法 |
-
2014
- 2014-10-24 CN CN201410574614.0A patent/CN104317671A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101874240A (zh) * | 2007-11-19 | 2010-10-27 | 三德动力有限公司 | 增加存储器的多个块的寿命 |
CN102929805A (zh) * | 2012-10-19 | 2013-02-13 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存数据掉电保护方法 |
Non-Patent Citations (2)
Title |
---|
YRBH07: ""延长EEPROM使用寿命的方法"", 《HTTP://WENKU.BAIDU.COM/VIEW/336DDE1DB7360B4C2E3F649F.HTML》 * |
上帝之骰: "延长EEPROM寿命的算法整理", 《HTTP://WWW.CNBLOGS.COM/WILLX/ARCHIVE/2011/11/30/2267329.HTML》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881249B (zh) * | 2015-05-13 | 2018-07-31 | 深圳芯邦科技股份有限公司 | 一种eMMC的读写方法及装置 |
CN104881249A (zh) * | 2015-05-13 | 2015-09-02 | 深圳芯邦科技股份有限公司 | 一种eMMC的读写方法及装置 |
CN106354669B (zh) * | 2015-07-13 | 2021-03-26 | 国民技术股份有限公司 | 一种具有分级结构的存储器 |
CN106354669A (zh) * | 2015-07-13 | 2017-01-25 | 国民技术股份有限公司 | 一种具有分级结构的存储器 |
CN107239408A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性存储器模块及其操作方法 |
CN106227680B (zh) * | 2016-07-26 | 2019-01-04 | 成都三零嘉微电子有限公司 | 一种数据处理及防掉电数据保护方法 |
CN106227680A (zh) * | 2016-07-26 | 2016-12-14 | 成都三零嘉微电子有限公司 | 一种数据处理及防掉电数据保护方法 |
CN107665096A (zh) * | 2016-07-29 | 2018-02-06 | 希捷科技有限公司 | 加权数据分条 |
CN107665096B (zh) * | 2016-07-29 | 2022-04-19 | 希捷科技有限公司 | 加权数据分条 |
CN108226590A (zh) * | 2017-12-27 | 2018-06-29 | 深圳市科陆电子科技股份有限公司 | 一种结算电能表掉电数据的方法及系统 |
CN110658981A (zh) * | 2019-04-19 | 2020-01-07 | 石家庄科林电气股份有限公司 | 一种提高Flash使用寿命的方法 |
CN110658981B (zh) * | 2019-04-19 | 2022-11-08 | 石家庄科林电气股份有限公司 | 一种提高Flash使用寿命的方法 |
CN111753337A (zh) * | 2020-07-02 | 2020-10-09 | 上海电器科学研究所(集团)有限公司 | 一种储能电池管理系统意外断电soc处理方法 |
CN111753337B (zh) * | 2020-07-02 | 2023-02-21 | 上海电器科学研究所(集团)有限公司 | 一种储能电池管理系统意外断电soc处理方法 |
CN113641307A (zh) * | 2021-08-12 | 2021-11-12 | 浙江华云信息科技有限公司 | 能掉电保存报文的远方电能量数据终端及其报文存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317671A (zh) | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 | |
CN110045913B (zh) | 垃圾收集的方法、记忆装置及其控制器和电子装置 | |
US9645894B2 (en) | Data storage device and flash memory control method | |
CN100462944C (zh) | 基于非易失性存储器两个以上连续逻辑块的掉电保护方法 | |
CN102043727B (zh) | 恢复固态硬盘映射表的方法及其装置 | |
US9817588B2 (en) | Memory device and operating method of same | |
KR100818797B1 (ko) | 메모리 용량 조절 방법과 메모리 용량 조절 장치 | |
CN102508785B (zh) | 一种磨损均衡方法及装置 | |
CN102135942B (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
CN102722455B (zh) | 一种闪存设备中数据存储的方法及装置 | |
CN101640069B (zh) | 用于闪速存储器的平均磨损方法与平均磨损系统 | |
US9652330B2 (en) | Method for data management and memory storage device and memory control circuit unit | |
CN101963891A (zh) | 数据存储处理方法与装置、固态硬盘系统与数据处理系统 | |
CN104063186A (zh) | 一种电子设备的数据访问方法 | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
US9965400B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
CN103377143A (zh) | 存储器管理方法、存储器控制器与存储器存储装置 | |
CN101625897A (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
CN103399520B (zh) | 用于可编程逻辑控制器系统的掉电数据存取方法及装置 | |
CN109840218B (zh) | 有效数据管理方法以及存储控制器 | |
US20190146909A1 (en) | Valid data management method and storage controller | |
CN103729143A (zh) | 多路电表电能数据存储的数据安全方法 | |
TWI517165B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN111737162A (zh) | 一种快速恢复数据的固态硬盘使用方法及计算机可读存储介质 | |
CN103425546A (zh) | 一种通用高效高可靠的Nor Flash数据存储管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150128 |