首页> 中国专利> 一种嵌入式Linux系统中的断电时恢复闪存数据的方法

一种嵌入式Linux系统中的断电时恢复闪存数据的方法

摘要

一种嵌入式Linux系统中的断电时恢复闪存数据的方法,解决了闪存读写数据时突然掉电,数据就丢失或文件系统损坏的缺点,采用的技术方案是:将闪存中根文件系统定义分为固定区、修改区和备份区,通过系统文件JFFS2对分区赋予不同的加载方式,将根文件系统中配置信息分配到固定区中的目录下,根文件系统中系统运行时产生的临时文件被存储在内存中,当文件系统由于意外断电造成数据丢失时,Linux系统调用备份分区中的文件系统对其进行恢复默认配置,并判断当前文件系统是否被损坏,针对系统设置的重要参数的系统文件进行检查,决定是否对文件系统继续进行加载文件。本发明的有益效果是:解决了实现断电时对闪存进行数据恢复,避免闪存中的数据丢失。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-01-25

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F11/14 变更前: 变更后: 申请日:20081014

    专利权人的姓名或者名称、地址的变更

  • 2011-05-04

    专利实施许可合同备案的生效 IPC(主分类):G06F11/14 合同备案号:2011990000130 让与人:深圳市共进电子有限公司 受让人:太仓市同维电子有限公司 发明名称:一种嵌入式Linux系统中的断电时恢复闪存数据的方法 公开日:20090708 授权公告日:20110119 许可种类:独占许可 备案日期:20110308 申请日:20081014

    专利实施许可合同备案的生效、变更及注销

  • 2011-01-19

    授权

    授权

  • 2009-09-02

    实质审查的生效

    实质审查的生效

  • 2009-07-08

    公开

    公开

说明书

技术领域

本发明涉及一种闪存恢复数据设置方法,特别是一种嵌入式Linux系统中的断电时恢复闪存数据的方法。

背景技术

现有技术中运行在闪存上的文件系统,一般采用在文件系统和闪存之间提供一个闪存转换层,其功能就是将底层的闪存模拟成一个具有512字节扇区的标准块设备,将模拟的块设备一对一的映射到闪存上,对于文件系统来说,就像工作在一个普通的块设备上一样。JFFS2文件系统通过日志结构存储方式和垃圾收集机制,能够提高闪存的擦写效率和减少磨损,有一定的容错处理,常作为转换层应用于嵌入式Linux系统,在嵌入式Linux系统的部分方案中,闪存文件系统通常只有一个分区,即根文件系统,且此文件系统加载为可读写方式,如果在对该擦写块执行擦除操作,并将缓存中的数据写回该擦写块的同时发生了突然掉电,那么整个擦写块中的数据就全部丢失或导致文件系统损坏,或者文件系统检测到闪存中重要的配置信息被修改后,导致系统不能够正常启动的缺点,给使用造成很大的不便。

发明内容

为了解决现有技术的不足,本发明提出一种嵌入式Linux系统中的断电时恢复闪存数据的方法,该方法是在计算机,嵌入式Linux系统和闪存设备,以及在系统文件和闪存设备之间充当转换层的JFFS2文件系统共同实现的,在嵌入式Linux系统的部分方案中,闪存设备文件系统只有一个分区,即根文件系统,其加载方式为可读写,所述的保护断电时闪存数据的方法包括以下步骤:

①将闪存中根文件系统定义分为固定区、修改区和备份区,其中固定区中规定存储不会被修改的部分包括程序文件和库函数等与出厂时的配置文件信息一致数据内容,修改区规定存储可能被修改的部分包括配置文件和系统运行时产生的数据,备份区存储对修改区进行读写操作之前的修改区数据的备份内容,

②通过系统文件JFFS2对固定区、修改区和备份区赋予不同的加载方式,固定区赋予为只读加载方式,备份区赋予为复制加载方式,修改区为复制加载方式,

③将根文件系统中配置信息分配到以只读方式加载的固定区中的一个目录下;系统断电时该区下的数据信息不被擦除,根文件系统中系统运行时产生的临时文件被存储在内存中,系统断电时不需要保存这些临时文件,

④当文件系统由于意外断电造成数据丢失时,Linux系统调用备份分区中的文件系统对其进行恢复默认配置,

⑤进行恢复默认配置后,Linux系统判断当前文件系统是否被损坏,针对系统设置的重要参数的系统文件进行检查,包括检查当前文件系统有没有被加载、系统初始化程序的配置文件是否存在、以及系统在运行时经常被修改的文件是否存在的文件检查,同时对JFFS2文件系统的节点头部CRC校验值进行判断,

⑥对步骤⑤判断结果进行分析,若判断该闪存分区的修改区有数据丢失,可认为整个文件系统没有被损坏,继续进行加载文件系统,若不能通过认为是坏区,不再加载文件系统。

所述的将对文件系统的修改区内容也保存到备份分区里,如果系统突然调电,导致当前文件系统被损坏,就可以使用备份分区里的文件系统恢复到上一次所作的配置。

本发明的有益效果是:解决了闪存存储读写效率低的缺点,实现断电时对闪存进行数据恢复,避免闪存中的数据丢失和闪存设备由于配置信息的修改或读写块的损坏造成的系统无法使用的缺点。

附图说明

附图1为现有技术闪存文件结构配置图

附图2为本发明的闪存文件结构配制图

附图3为现有技术中闪存文件系统加载文件操作流程图

附图4为本发明的闪存文件系统加载文件操作流程图

具体实施方式

参看附图2,本发明旨在为可能被修改的配置信息创建与出厂配置信息内容相一致的备份,在检测到经过修改的配置信息不能使系统正常启动时,使用备份的配置信息,恢复出厂默认配置,使系统能够正常启动。主要采取了以下两步措施:发明提出一种嵌入式Linux系统中的断电时恢复闪存数据的方法,该方法是在计算机,嵌入式Linux系统和闪存设备,以及在系统文件和闪存设备之间充当转换层的JFFS2文件系统共同实现的,在嵌入式Linux系统的部分方案中,闪存设备文件系统只有一个分区,即根文件系统,其加载方式为可读写,所述的保护断电时闪存数据的方法包括以下步骤:

①将根文件系统中不会被修改的部分包括程序文件和库函数等,可能被修改的部分包括配置文件和系统运行时产生的临时文件,划分为各自独立的不同分区,同时对分区赋予不同的加载方式:将闪存中根文件系统定义分为固定区、修改区和备份区,其中固定区中规定存储不会被修改的部分包括程序文件和库函数等以及出厂时的配置文件信息一致数据内容,修改区规定存储可能被修改的部分包括配置文件和系统运行时产生的数据,备份区存储与出厂时的配置文件信息一致的内容,系统在运行的时侯不需要加载备份分区的内容,该配置信息都存放在一个目录下,将此目录单独划分为一个分区并以读写方式加载,备份区同时存储那些对修改区进行读写操作之前的修改区数据的备份内容,当前文件系统由于意外断电造成损伤时,系统可以使用备份区内容将系统文件恢复到读写前的内容状态,或者根据文件损坏程度使用原始备份分区中的将文件系恢复到出厂默认配置,此时根文件系统中系统运行时产生的临时文件就放在内存中,系统断电时不需要保存这些临时文件。

②通过系统文件对固定区、修改区和备份区赋予不同的加载方式,固定区赋予为只读加载方式,备份区赋予为复制加载方式,修改区为复制加载方式,这样所有对固定区的读写操作将被拒绝,保证了文件系统在断电后的备份操作的实现,

③将根文件系统中配置信息分配到以只读方式加载的备份区中的一个目录下;系统断电时该区下的数据信息不被擦除,根文件系统中系统运行时产生的临时文件被存储在内存中,系统断电时不需要保存这些临时文件,

④当文件系统由于意外断电造成数据丢失时,Linux系统调用备份分区中的文件系统根据文件的损坏程度选择对其进行恢复上一次操作时的内容或者选择恢复默认配置,使闪存设备的文件系统正常运行,

⑤进行恢复默认配置后,Linux系统判断当前文件系统是否被损坏,针对系统设置的重要参数的系统文件进行检查,包括检查当前文件系统有没有被加载、系统初始化程序的配置文件是否存在、以及系统在运行时经常被修改的文件是否存在的文件检查,同时对JFFS2文件系统的节点头部CRC校验值进行判断,

⑥对步骤⑤判断结果进行分析,若判断闪存修改区有数据丢失,可认为整个文件系统没有被损坏,继续进行加载文件,若不能通过认为是坏区,不再加载文件。其中判断当前文件系统是否被损坏,并不是对当前文件系统中所有的配置文件都进行校验,而是只针对几个比较重要的系统文件进行检查,比如检查当前文件系统有没有被加载、系统初始化程序的配置文件是否存在、以及系统在运行时经常被修改的文件是否存在等等,再加上对jffs2整个文件系统的CRC校验值的判断。如果这些检查都能通过,就可以认为整个文件系统没有被损坏。参看附图4,若修改区系统文件未被被损坏,则继续对闪存进行加载文件,多修改区内容被损坏,可调用备份区内容对其进行恢复设置,使闪存恢复出上一次读写操作时的数据配置信息。

本发明的优点是,解决了闪存存储读写效率低的缺点,实现断电时对闪存进行数据恢复,避免闪存中的数据丢失。对出现错误或损坏的擦写区,不再对其加载文件系统,避免了该擦写区块变成坏块,使闪存无法使用的缺点。

本发明采用的方法是一种用空间去换取安全性的方案,如果当前文件系统被损坏,就会恢复到出厂的配置。作为这种方案的进一步延伸,将对文件系统的修改内容也保存到备份分区里,如果系统突然调电,导致当前文件系统被损坏,就可以使用备份分区里的文件系统恢复到上一次所作的配置,这是一种用空间和时间换取安全性的方法,实现双备份。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号