CN101436158A - 一种基于嵌入式设备闪存的参数管理方法和系统 - Google Patents
一种基于嵌入式设备闪存的参数管理方法和系统 Download PDFInfo
- Publication number
- CN101436158A CN101436158A CNA2008102465332A CN200810246533A CN101436158A CN 101436158 A CN101436158 A CN 101436158A CN A2008102465332 A CNA2008102465332 A CN A2008102465332A CN 200810246533 A CN200810246533 A CN 200810246533A CN 101436158 A CN101436158 A CN 101436158A
- Authority
- CN
- China
- Prior art keywords
- parameter
- memory block
- flash
- flash memory
- data
- 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.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种基于嵌入式设备闪存的参数管理方法,该方法将参数按照固定格式进行封装,获得参数数据块,并将参数数据块依次存入参数存储区中;依据准备写入的新参数的参数ID检索在参数存储区中是否存在含有相同参数ID的参数,如果存在,则将当前参数标记为垃圾数据,然后判断参数存储区的剩余空间是否能够容纳新参数;如果不存在,则直接判断参数存储区的剩余空间是否能够容纳新参数;当参数存储区的剩余空间能够容纳新参数时,在参数存储区中最后一个参数的结束位置写入新参数;本发明还公开了一种基于嵌入式设备闪存的参数管理系统,通过该方法和系统可以提高闪存空间的利用率,延长闪存的使用寿命,提高写入或修改参数时的安全性。
Description
技术领域
本发明涉及嵌入式设备的参数记录技术,特别是指一种基于嵌入式设备闪存的参数管理方法和系统。
背景技术
嵌入式电子设备一般没有硬盘这样的存储设备,而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置。Flash闪存是目前嵌入式系统中广泛采用的主流存储器,它的主要特点是按整体或块单元擦除和按字节编程,具有低功耗、高密度、小体积等优点。
目前,Flash闪存分为或非(NOR)和与非(NAND)两种类型。NOR型Flash闪存可以直接读取闪存芯片内存储的数据,因而运行速度比较快;NOR型Flash闪存芯片的地址线与数据线是分开的,所以它可以像静态随机存储器(SRAM,Static Random Access Memory)一样连在数据线上,以字为基本单位进行操作,因此传输效率很高;应用程序可以直接在NOR型Flash闪存内运行,不必再把代码读取到系统随机存储器(RAM,Random Access Memory)中运行。NOR型Flash闪存芯片与SRAM的最大不同在于:NOR型Flash闪存芯片重复写入时需要经过擦除和写入两个过程,其中擦除以Flash块为单位进行,即擦除操作至少需要擦除一个Flash块的区域,一个NOR型Flash块区尺寸通常是64K或128K,其中Flash块区的大小是由Flash闪存的物理特性决定的。
嵌入式系统中的参数是要求非易失性的、可修改和可删除的,一般可以借助通用的Flash文件系统的管理将参数以文件的形式存储在Flash闪存上,以此来实现参数的安全读、写、修改和删除操作。通用的Flash文件系统如jffs2,要求一个Flash分区至少包含五个Flash块区,以保证闪存的正常运行,但实际上嵌入式系统的参数所占用的空间一般只有几十K,不需要用一个专门的Flash分区如此大的空间来存储参数,这样,对于低成本的嵌入式电子设备,不利于控制产品的价格。
另一种折中的做法是:不使用通用的Flash文件系统管理参数,而是在每次参数变更时将Flash闪存中的所有参数备份到RAM中,然后擦除相应的Flash块区,最后将在RAM中更新了的参数和未改变的参数再写入Flash块区,但这种做法的问题在于:即使仅改变一个参数,也必须将整个Flash块区擦除再重新写入,若擦除或写入过程中设备掉电,那么会因为没有通用Flash文件系统的数据保护功能而导致参数的丢失;另外,NOR型Flash闪存的每个Flash块区的寿命大约为10万次擦写,因此,这种方式会导致产品的使用年限缩短。
发明内容
有鉴于此,本发明的主要目的在于提供一种记录参数的方法和系统,可以明显减少对Flash块区的擦除次数,减少参数所占用的Flash块区,增加闪存的空间利用率,提高写入或修改参数时的安全性。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种基于嵌入式设备闪存的参数管理方法,该方法包括:
将参数按照参数ID字段、控制字段、校验字段、参数长度字段和参数内容字段的格式进行封装,获得参数数据块,并将所述参数数据块依次存入参数存储区中;
依据准备写入的新参数的参数ID检索在所述参数存储区中是否存在含有相同参数ID的参数,如果存在,则将所述检索到的参数标记为垃圾数据,然后判断参数存储区的剩余空间是否能够容纳新参数;如果不存在,则判断参数存储区的剩余空间是否能够容纳新参数;
当参数存储区的剩余空间能够容纳新参数时,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
其中,所述参数存储区位于闪存中一段连续的Flash区域,所述一段连续的Flash区域至少包含闪存的一个Flash块区。
所述检索在所述参数存储区中是否存在含有相同参数ID的参数为:
从参数存储区中的第一个参数开始依据所述参数的存储格式读取参数;
依据所述读取的参数ID字段、参数长度字段、参数内容字段和校验字段对参数进行校验;如果校验错误,则从当前参数的参数ID字段结束处继续读取参数;如果校验正确,则判断当前参数和新参数的参数ID是否相同;如果相同,则将该参数标记为垃圾数据;如果不同,则继续读取下一个参数。
当参数存储区的剩余空间不能够容纳新参数时,该方法还包括:
将参数存储区的参数整理成无垃圾数据的状态;
判断整理后的参数存储区的剩余空间是否能够容纳新参数,如果能够容纳,则在所述参数存储区中最后一个参数的结束位置写入所述新参数;如果不能够容纳,则写入操作失败。
需要彻底删除参数、或所述将参数存储区的参数整理成无垃圾数据的状态时,具体操作包括:
将参数存储区所在的Flash块区的所有数据备份到随机存储器RAM中,在RAM中将所述垃圾数据删除;
将所述闪存中参数存储区所在的Flash块区擦除;
将所述RAM中删除了垃圾数据的备份数据写回到闪存中参数存储区所在的Flash块区。
需要对参数进行格式化时,该方法还包括:
将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将参数存储区全部填充为0xFF;
将所述闪存中参数存储区所在的Flash块区擦除;
将所述RAM中参数存储区全部填充为0xFF的备份数据写回到闪存中参数存储区所在的Flash块区。
本发明还提供了一种基于嵌入式设备闪存的参数管理系统,该系统包括:
参数处理模块,用于将参数按照参数ID字段、控制字段、校验字段、参数长度字段和参数内容字段的格式进行封装,获得参数数据块,并将所述参数数据块依次存入参数存储区中;
参数ID判断模块,用于依据准备写入的新参数的参数ID检索在所述参数存储区中是否存在含有相同参数ID的参数,并得到判断结果;
第一判断模块,用于依据所述参数ID判断模块的判断结果,将与新参数的参数ID相同的参数标记为垃圾数据,还用于判断参数存储区的剩余空间是否能够容纳新参数,并得到判断结果;
参数写入模块,用于依据所述第一判断模块的判断结果,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
其中,所述参数ID判断模块包括:
参数读取子模块,用于从参数存储区中的第一个参数开始依据所述参数的存储格式读取参数;
参数校验子模块,用于依据所述读取的参数ID字段、参数长度字段、参数内容字段和校验字段对参数进行校验,并得到校验结果;
参数ID比较子模块,用于依据所述参数校验子模块的校验结果,判断当前参数和新参数的参数ID是否相同,得到判断结果;并在当前参数和新参数的参数ID相同时,将所述当前参数标记为垃圾数据。
该系统还包括:
参数整理模块,用于依据所述第一判断模块的判断结果,将参数存储区的参数整理成无垃圾数据的状态;
第二判断模块,用于判断整理后的参数存储区的剩余空间是否能够容纳新参数,并得到判断结果。
其中,所述参数读取子模块,还用于依据所述参数校验子模块的校验结果,从当前参数的参数ID字段结束处继续读取参数;还用于依据所述参数ID比较子模块的判断结果,继续读取下一个参数;
所述参数写入模块,还用于依据所述第二判断模块的判断结果,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
该系统还包括:
操作反馈模块,用于在所述参数写入模块写入参数之后,或者依据所述第二判断模块的判断结果,反馈对参数的操作结果。
所述参数整理模块包括:
数据删除子模块,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将所述垃圾数据删除;
第一擦除子模块,用于将所述闪存中参数存储区所在的Flash块区擦除;
第一写入数据子模块,用于将所述RAM中删除了垃圾数据的备份数据写回到闪存中参数存储区所在的Flash块区。
该系统还包括:
数据格式化模块,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将参数存储区全部填充为0xFF;
数据擦除模块,用于将所述闪存中参数存储区所在的Flash块区擦除;
写入数据模块,用于将所述RAM中参数存储区全部填充为0xFF的备份数据写回到闪存中参数存储区所在的Flash块区。
本发明对于嵌入式设备闪存中参数的管理,不使用通用的Flash文件系统,而是通过专门的Flash闪存驱动将NOR型Flash闪存驱动起来,然后将参数分类,按照固定的格式储存于闪存中,对参数进行管理,如此,本发明的参数可以存储于闪存中任何一段连续的Flash块区,且参数存储区的大小可以根据需要设置,这样,就节省了闪存空间,提高了闪存空间的利用率。
另外,通过本发明的方法,对参数进行操作时,不需要每次都对参数存储区所在的Flash块区进行擦除再重写的操作,而是当需要单独地彻底删除某个参数,或者在写入参数、修改参数的过程中,当前参数存储区的剩余空间不够容纳新参数,需要将垃圾数据彻底删除或需要格式化参数时,才需要通过对Flash块区进行擦除再重写的方法来实现对数据的彻底删除或者格式化,如此就可以减少对NOR型Flash闪存的擦除次数,不仅可以延长闪存的使用寿命,而且由于擦除、重写次数的减少,可以降低擦除、重写过程中因为掉电而导致参数丢失的风险。
本发明还提供了参数格式化的功能,使NOR型Flash闪存更具实用性。
附图说明
图1为本发明参数存储区实施例一的结构示意图;
图2为本发明参数存储格式实施例一的结构示意图;
图3为本发明写入、修改参数的方法流程示意图;
图4为本发明删除参数的方法流程示意图;
图5为本发明格式化参数的方法流程示意图;
图6为本发明基于嵌入式设备闪存的参数管理系统的结构关系示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
在通过专门Flash驱动使Flash闪存能正常工作,并能为闪存提供写入接口,使数据可以直接写入闪存的条件下,本发明将参数进行分类,并按照固定的格式存入闪存中,对参数进行管理。
本发明中,可以选择NOR型Flash闪存中任意一段连续的Flash区域作为参数存储区,参数存储区相对于其所处的Flash块起始位置的偏移地址为SA,参数存储区的大小可以根据实际情况设置,如可以设置为L,其中,参数依次存放在参数存储区中。图1所示为本发明参数存储区实施例一的结构示意图,图1中,SA是一个地址偏移,用来表示参数存储区的开始地址;参数存储区根据其占用的空间大小,可以存在于一个Flash块中,也可以跨越两个或多个连续的Flash块,但是实际上,需要管理的全部参数一般只有几十K,而一个NOR型Flash块的大小一般为64K或128K,所以,一般情况下一个参数存储区最多能跨越两个连续的Flash块。
图2所示为本发明参数存储格式实施例一的结构示意图,如图2所示,将每个参数按照:参数ID字段、控制字段、校验字段、参数长度字段、参数内容字段的格式封装成一个数据块,存储到参数存储区中。
其中,参数ID字段用来存储参数ID,参数ID根据参数的分类来定义,参数的分类可以根据需要设定。如,根据需要可以用十六进制来设置参数ID,IP地址类的参数对应的参数ID可以定义为0x000A;子网掩码类的参数对应的参数ID可以定义为0x000B;默认网关类的参数对应的参数ID可以定义为0x000C。其中,对于IP地址类的参数还可以继续分类,例如局域网1的IP地址的参数ID可以定义为:0x000A0001,局域网2的I的IP地址可以定义为:0x000A0002等。
控制字段用来表示该参数的状态,当控制字段为1时,表明该参数为有效数据;控制字段为0时,表明该参数为垃圾数据。
校验字段表示参数ID字段、参数长度字段和参数内容字段的校验和。
参数长度字段可以表示该参数所占用的空间大小,通过参数长度字段和SA可以得到参数的结束位置,从而可以读取参数内容字段。参数的结束位置就是参数内容字段的结束位置,也是下一个参数的开始位置。
参数内容字段包含了该参数的具体的内容。
下面通过具体的实施例来说明本发明参数管理的方法。
本发明基于嵌入式设备的NOR型Flash闪存的参数管理可以分为写入参数、修改参数、删除参数和参数存储区的格式化。
当需要写入新参数时,首先要检索闪存中是否存在与新参数的参数ID相同的参数。图3所示为本发明写入、修改参数的方法流程示意图,如图3所示,具体处理流程为:
步骤301,按照参数的存储位置读取参数,校验当前读取的参数。
从偏移地址SA开始,读取参数存储区中第一个参数的参数ID字段、控制字段、校验字段和参数长度字段,并根据参数长度字段读取参数内容字段;然后计算参数ID字段、参数长度字段和参数内容字段的校验和。校验和的计算为现有技术,此处不再赘述。
步骤302,判断参数校验是否正确,如果错误,执行步骤303;如果正确,执行步骤304。
将通过计算得到的参数ID字段、参数长度字段和参数内容字段的校验和与读取到的校验字段的校验和相比较,如果一致,说明该参数校验正确,执行步骤304;如果不一致,说明该参数校验错误,则执行步骤303,从当前参数的参数ID字段结束处继续读取参数。
如果校验错误,说明该参数是无效的,即该参数是垃圾数据,其控制字段为0,如果校验正确,那么控制字段为1。当参数校验错误时,无法确认该参数的参数长度字段是否有效,从而就无法确认该参数的结束位置,无法从该参数的结束处直接读取下一个参数。此时,需要从该参数的参数ID字段结束处继续读取参数,在该参数的参数内容字段结束处,可以开始读取下一个参数,返回步骤301。
需要指出的是,参数存储区中可能存储有参数ID相同的几个参数,这个几个参数中只有一个参数是有效数据,其他的都是垃圾数据。
步骤304~305,判断当前参数的参数ID与准备写入的新参数的参数ID是否相同,如果相同,则将当前参数标记为垃圾数据;如果不同,则执行步骤306。
如果校验正确,那么要将当前参数的参数ID与准备写入的新参数的参数ID比较,判断两者是否相同,如果相同,说明新参数与当前参数是同一类参数,只是参数内容不同,执行步骤305,将当前参数的控制字段置为0,即将该参数标记为垃圾数据,说明该参数已经被视为无效,表明该垃圾数据被删除,然后执行步骤306。需要指出的是,此处的删除不是彻底删除,当参数存储区的剩余空间不够容纳新参数时,才需要将垃圾数据彻底删除。
如果不同,则需要从当前参数的参数内容字段结束处开始读取下一个参数,直到检索到与新参数的参数ID相同的参数,执行步骤305~306;或者直到参数存储区结束处都没有检索到与新参数的参数ID相同的参数,执行步骤306。
步骤306,判断参数存储区剩余空间是否大于等于准备写入的新参数占用的空间,如果小于,执行步骤307;如果大于等于,执行步骤310。
在当前参数存储区中如果没有与新参数的参数ID相同的参数,或者已经将与新参数的参数ID相同的参数标记为垃圾数据,那么需要将新参数写入参数存储区。但是,之前要先判断目前参数存储区的剩余空间是否能够容纳新参数,即判断参数存储区的剩余空间是否大于或等于新参数所占用的空间,如果小于,则说明参数存储区的剩余空间不能容纳新参数,执行步骤307;如果大于或等于,则说明参数存储区的剩余空间可以容纳新参数,执行步骤310。
步骤307,整理参数存储区,将垃圾数据删除。
参数存储区的剩余空间不能容纳新参数时,需要将参数存储区进行整理,将垃圾数据彻底删除,即将控制字段为0的无效参数彻底删除。具体删除参数的流程将通过下面的实施例进行说明。
步骤308~309,判断参数存储区剩余空间是否大于准备写入的新参数占用的空间,如果小于,则提示写入参数的操作失败;如果大于等于,执行步骤310。
将垃圾数据彻底删除后,再次判断参数剩余空间是否能容纳新参数,如果不能,则执行步骤309,提示写入参数的操作失败,并结束整个流程;如果可以容纳,则执行步骤310。
步骤310,在参数存储区的最后一个参数结束处写入新参数。
将垃圾数据彻底删除后,且参数存储区的剩余空间可以容纳新参数时,将新参数写入参数存储区最后一个参数的参数内容字段之后。本发明通过专门的Flash闪存驱动提供写入接口,将参数写入参数存储区。
步骤311,提示操作成功。
写入新参数成功后,提示写入操作成功,并结束整个流程。
其中,在检索到与新参数的参数ID相同的参数的情况下,将该参数标记为垃圾数据,再将新参数写入参数存储区的操作也是修改参数的操作流程;在未检索到与新参数的参数ID相同的参数的情况下,将新参数写入参数存储区的操作,是写入参数的操作流程。
图4所示为本发明删除参数的方法流程示意图,如图4所示,具体的处理流程为:
步骤401,在参数存储区检索与准备删除的参数的参数ID相同的参数。
具体的检索过程如图3中的步骤310至304。
步骤402,将该参数标记为垃圾数据。
将当前与准备删除的参数的参数ID相同的参数的控制字段置为0,表明该参数被删除。
需要指出的是,这里所述的删除不是彻底的删除,虽然将该参数标记为垃圾数据,但是该参数还是占用了闪存空间,如果需要将垃圾数据彻底的删除,则执行步骤403、404。
步骤403,将参数存储区所在的Flash块的所有数据备份到RAM中,将参数整理成无垃圾数据的状态。
Flash闪存的物理特性决定,不能在闪存中直接将数据彻底删除,此时,需要将参数存储区所在的Flash块的所有数据备份到RAM中,在RAM中,将参数存储区的垃圾数据删除,这样参数存储区的参数就是无垃圾数据的状态。
步骤404,在闪存中将参数存储区所在的Flash块区擦除,将整理后的RAM中数据写回参数存储区所在的Flash块区。
在RAM中,将参数整理成无垃圾状态后,需要将包含无垃圾状态参数的数据重新写回闪存中。此时,需要先在闪存中将参数存储区所在的Flash块擦除,然后再将整理后的数据写回参数存储区所在的Flash块区。如此,闪存的参数存储区中的垃圾数据就被彻底删除了。
需要指出的是,因为NOR型Flash闪存的擦除是基于Flash块的,所以,需要将参数存储区所在的Flash块区中的所有数据备份到RAM中,因为Flash块区中可能不仅仅包含参数存储区,还可能有其他的数据。
由上面的描述可知,在写入参数或修改参数的过程中,当参数存储区的剩余空间不够容纳新参数,而需要整理参数存储区,将垃圾数据彻底删除时,或者单独需要将某个参数彻底删除时,才需要通过对Flash块区进行擦除再重写的方法来实现对数据的彻底删除。
图5所示为本发明格式化参数的方法流程示意图。
步骤501,将参数存储区所在的Flash块的所有数据备份到RAM中。
步骤502,在RAM中将参数存储区全部填充为0xFF。
在RAM中将参数存储区全部填充为0xFF,即将参数存储区全部填充为二进制的1,本发明中将参数存储区全部填充1即表示参数存储区被置空。
步骤503,在闪存中将参数存储区所在的Flash块区擦除,将RAM中的数据写回闪存中参数存储区所在的Flash块区。
在闪存中将参数存储区所在的Flash块区擦除,然后再将包含全部填充为1的参数存储区的数据写回到闪存中参数存储区所在的Flash块区。如此,闪存中的参数存储区为空,即表示被格式化。
图6所示为本发明基于嵌入式设备闪存的参数管理系统的结构关系示意图,如图6所示,该系统包括:参数处理模块10、参数ID判断模块20、第一判断模块30、参数写入模块40、参数整理模块50、第二判断模块60、操作反馈模块70、数据格式化模块80、数据擦除模块90和写入数据模块91,其中,
参数处理模块10,用于将参数按照参数ID字段、控制字段、校验字段、参数长度字段和参数内容字段的格式进行封装,获得参数数据块,并将参数数据块依次存入参数存储区中;
其中,参数存储区位于闪存中一段连续的Flash区域,一段连续的Flash区域至少包含闪存的一个Flash块区。
参数ID判断模块20,用于依据准备写入的新参数的参数ID检索在参数存储区中是否存在含有相同参数ID的参数,并得到判断结果。
参数ID判断模块20还包括:参数读取子模块21、参数校验子模块22和参数ID比较子模块23,其中,
参数读取子模块21,用于从参数存储区中的第一个参数开始依据参数的存储格式读取参数;
参数校验子模块22,用于依据读取的参数ID字段、参数长度字段、参数内容字段和校验字段对参数进行校验,并得到校验结果;
参数ID比较子模块23,用于依据参数校验子模块22的校验结果,判断当前参数和新参数的参数ID是否相同,并得到判断结果;并在当前参数和新参数的参数ID相同时,将当前参数标记为垃圾数据;
其中,参数读取子模块21,还用于依据参数校验子模块22的校验结果,从当前参数的参数ID字段结束处继续读取参数;还用于依据参数ID比较子模块23的判断结果,继续读取下一个参数。
第一判断模块30,用于依据参数ID判断模块20的判断结果,将与新参数的参数ID相同的参数标记为垃圾数据,还用于判断参数存储区的剩余空间是否能够容纳新参数,并得到判断结果。
参数写入模块40,用于依据第一判断模块30的判断结果,在参数存储区中最后一个参数的结束位置写入新参数。
参数整理模块50,用于依据第一判断模块30的判断结果,将参数存储区的参数整理成无垃圾数据的状态。
参数整理模块50还包括:数据删除子模块51、第一擦除子模块52和第一写入数据子模块53,其中,
数据删除子模块51,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将垃圾数据删除;
第一擦除子模块52,用于将闪存中参数存储区所在的Flash块区擦除;
第一写入数据子模块53,用于将RAM中删除了垃圾数据的备份数据写回到闪存中参数存储区所在的Flash块区。
第二判断模块60,用于判断整理后的参数存储区的剩余空间是否能够容纳新参数,并得到判断结果。
其中,参数写入模块40,还用于依据第二判断模块60的判断结果,在参数存储区中最后一个参数的结束位置写入新参数。
操作反馈模块70,用于在参数写入模块40写入参数之后,或者依据第二判断模块60的判断结果,反馈对参数的操作结果,即当写入参数后,提示写入成功;或者当整理后的参数存储区的剩余空间不能够容纳新参数时,提示写入操作失败。
数据格式化模块80,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将参数存储区全部填充为0xFF。
数据擦除模块90,用于将闪存中参数存储区所在的Flash块区擦除。
写入数据模块91,用于将RAM中参数存储区全部填充为0xFF的备份数据写回到闪存中参数存储区所在的Flash块区。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (13)
1、一种基于嵌入式设备闪存的参数管理方法,其特征在于,该方法包括:
将参数按照参数ID字段、控制字段、校验字段、参数长度字段和参数内容字段的格式进行封装,获得参数数据块,并将所述参数数据块依次存入参数存储区中;
依据准备写入的新参数的参数ID检索在所述参数存储区中是否存在含有相同参数ID的参数,如果存在,则将所述检索到的参数标记为垃圾数据,然后判断参数存储区的剩余空间是否能够容纳新参数;如果不存在,则判断参数存储区的剩余空间是否能够容纳新参数;
当参数存储区的剩余空间能够容纳新参数时,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
2、根据权利要求1所述基于嵌入式设备闪存的参数管理方法,其特征在于,所述参数存储区位于闪存中一段连续的Flash区域,所述一段连续的Flash区域至少包含闪存的一个Flash块区。
3、根据权利要求2所述基于嵌入式设备闪存的参数管理方法,其特征在于,所述检索在所述参数存储区中是否存在含有相同参数ID的参数为:
从参数存储区中的第一个参数开始依据所述参数的存储格式读取参数;
依据所述读取的参数ID字段、参数长度字段、参数内容字段和校验字段对参数进行校验;如果校验错误,则从当前参数的参数ID字段结束处继续读取参数;如果校验正确,则判断当前参数和新参数的参数ID是否相同;如果相同,则将该参数标记为垃圾数据;如果不同,则继续读取下一个参数。
4、根据权利要求3所述基于嵌入式设备闪存的参数管理方法,其特征在于,当参数存储区的剩余空间不能够容纳新参数时,该方法还包括:
将参数存储区的参数整理成无垃圾数据的状态;
判断整理后的参数存储区的剩余空间是否能够容纳新参数,如果能够容纳,则在所述参数存储区中最后一个参数的结束位置写入所述新参数;如果不能够容纳,则写入操作失败。
5、根据权利要求1至4任一项所述基于嵌入式设备闪存的参数管理方法,其特征在于,
需要彻底删除参数、或所述将参数存储区的参数整理成无垃圾数据的状态时,具体操作包括:
将参数存储区所在的Flash块区的所有数据备份到随机存储器RAM中,在RAM中将所述垃圾数据删除;
将所述闪存中参数存储区所在的Flash块区擦除;
将所述RAM中删除了垃圾数据的备份数据写回到闪存中参数存储区所在的Flash块区。
6、根据权利要求1至4任一项所述基于嵌入式设备闪存的参数管理方法,其特征在于,需要对参数进行格式化时,该方法还包括:
将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将参数存储区全部填充为0xFF;
将所述闪存中参数存储区所在的Flash块区擦除;
将所述RAM中参数存储区全部填充为0xFF的备份数据写回到闪存中参数存储区所在的Flash块区。
7、一种基于嵌入式设备闪存的参数管理系统,其特征在于,该系统包括:
参数处理模块,用于将参数按照参数ID字段、控制字段、校验字段、参数长度字段和参数内容字段的格式进行封装,获得参数数据块,并将所述参数数据块依次存入参数存储区中;
参数ID判断模块,用于依据准备写入的新参数的参数ID检索在所述参数存储区中是否存在含有相同参数ID的参数,并得到判断结果;
第一判断模块,用于依据所述参数ID判断模块的判断结果,将与新参数的参数ID相同的参数标记为垃圾数据,还用于判断参数存储区的剩余空间是否能够容纳新参数,并得到判断结果;
参数写入模块,用于依据所述第一判断模块的判断结果,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
8、根据权利要求7所述基于嵌入式设备闪存的参数管理系统,其特征在于,所述参数ID判断模块包括:
参数读取子模块,用于从参数存储区中的第一个参数开始依据所述参数的存储格式读取参数;
参数校验子模块,用于依据所述读取的参数ID字段、参数长度字段、参数内容字段和校验字段对参数进行校验,并得到校验结果;
参数ID比较子模块,用于依据所述参数校验子模块的校验结果,判断当前参数和新参数的参数ID是否相同,得到判断结果;并在当前参数和新参数的参数ID相同时,将所述当前参数标记为垃圾数据。
9、根据权利要求8所述基于嵌入式设备闪存的参数管理系统,其特征在于,该系统还包括:
参数整理模块,用于依据所述第一判断模块的判断结果,将参数存储区的参数整理成无垃圾数据的状态;
第二判断模块,用于判断整理后的参数存储区的剩余空间是否能够容纳新参数,并得到判断结果。
10、根据权利要求7、8或9所述基于嵌入式设备闪存的参数管理系统,其特征在于,
所述参数读取子模块,还用于依据所述参数校验子模块的校验结果,从当前参数的参数ID字段结束处继续读取参数;还用于依据所述参数ID比较子模块的判断结果,继续读取下一个参数;
所述参数写入模块,还用于依据所述第二判断模块的判断结果,在所述参数存储区中最后一个参数的结束位置写入所述新参数。
11、根据权利要求10所述基于嵌入式设备闪存的参数管理系统,其特征在于,该系统还包括:
操作反馈模块,用于在所述参数写入模块写入参数之后,或者依据所述第二判断模块的判断结果,反馈对参数的操作结果。
12、根据权利要求11所述基于嵌入式设备闪存的参数管理系统,其特征在于,所述参数整理模块包括:
数据删除子模块,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将所述垃圾数据删除;
第一擦除子模块,用于将所述闪存中参数存储区所在的Flash块区擦除;
第一写入数据子模块,用于将所述RAM中删除了垃圾数据的备份数据写回到闪存中参数存储区所在的Flash块区。
13、根据权利要求12所述基于嵌入式设备闪存的参数管理系统,其特征在于,该系统还包括:
数据格式化模块,用于将参数存储区所在的Flash块区的所有数据备份到RAM中,在RAM中将参数存储区全部填充为0xFF;
数据擦除模块,用于将所述闪存中参数存储区所在的Flash块区擦除;
写入数据模块,用于将所述RAM中参数存储区全部填充为0xFF的备份数据写回到闪存中参数存储区所在的Flash块区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102465332A CN101436158B (zh) | 2008-12-25 | 2008-12-25 | 一种基于嵌入式设备闪存的参数管理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102465332A CN101436158B (zh) | 2008-12-25 | 2008-12-25 | 一种基于嵌入式设备闪存的参数管理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101436158A true CN101436158A (zh) | 2009-05-20 |
CN101436158B CN101436158B (zh) | 2011-07-13 |
Family
ID=40710603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102465332A Active CN101436158B (zh) | 2008-12-25 | 2008-12-25 | 一种基于嵌入式设备闪存的参数管理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101436158B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609331A (zh) * | 2012-01-19 | 2012-07-25 | 苏州希图视鼎微电子有限公司 | Nand闪存的装载代码的文件格式 |
CN102932754A (zh) * | 2011-08-10 | 2013-02-13 | 国民技术股份有限公司 | 用于射频通信的数据发送、接收方法 |
CN103336749A (zh) * | 2013-05-31 | 2013-10-02 | 南京熊猫电子股份有限公司 | 嵌入式系统flash参数存取方法 |
CN103955513A (zh) * | 2014-04-30 | 2014-07-30 | 广东威创视讯科技股份有限公司 | 嵌入式系统及其数据删除的方法 |
CN104679551A (zh) * | 2013-12-03 | 2015-06-03 | 上海移为通信技术有限公司 | Mtk平台终端设备及其软件升级的参数配置方法 |
CN105528213A (zh) * | 2015-12-04 | 2016-04-27 | 上海斐讯数据通信技术有限公司 | 一种防止向Flash配置区域写入相同参数的方法 |
WO2016062051A1 (zh) * | 2014-10-23 | 2016-04-28 | 中兴通讯股份有限公司 | 一种移动终端参数的管理方法、装置及存储介质 |
CN105653402A (zh) * | 2016-01-12 | 2016-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种ssd以及用于ssd的数据恢复方法 |
CN106227620A (zh) * | 2016-07-20 | 2016-12-14 | 中国航空工业集团公司航空动力控制系统研究所 | 可恢复的Flash数据存储方法 |
CN106445722A (zh) * | 2016-10-20 | 2017-02-22 | 积成电子股份有限公司 | 一种嵌入式系统中基于闪存存储器进行参数存储的方法 |
CN110362526A (zh) * | 2019-06-19 | 2019-10-22 | 合肥致存微电子有限责任公司 | Spi从机设备、存储和适配方法及计算机存储介质 |
CN110764704A (zh) * | 2019-10-18 | 2020-02-07 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN110955615A (zh) * | 2019-10-23 | 2020-04-03 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284621B (zh) * | 2017-07-19 | 2022-10-25 | 阿里巴巴集团控股有限公司 | 数据保护/恢复方法和装置以及数据存储/保护方法 |
-
2008
- 2008-12-25 CN CN2008102465332A patent/CN101436158B/zh active Active
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932754A (zh) * | 2011-08-10 | 2013-02-13 | 国民技术股份有限公司 | 用于射频通信的数据发送、接收方法 |
CN102932754B (zh) * | 2011-08-10 | 2016-02-03 | 国民技术股份有限公司 | 用于射频通信的数据发送、接收方法 |
CN102609331A (zh) * | 2012-01-19 | 2012-07-25 | 苏州希图视鼎微电子有限公司 | Nand闪存的装载代码的文件格式 |
CN103336749A (zh) * | 2013-05-31 | 2013-10-02 | 南京熊猫电子股份有限公司 | 嵌入式系统flash参数存取方法 |
CN103336749B (zh) * | 2013-05-31 | 2016-01-20 | 南京熊猫电子股份有限公司 | 嵌入式系统flash参数存取方法 |
CN104679551A (zh) * | 2013-12-03 | 2015-06-03 | 上海移为通信技术有限公司 | Mtk平台终端设备及其软件升级的参数配置方法 |
CN103955513B (zh) * | 2014-04-30 | 2017-08-29 | 广东威创视讯科技股份有限公司 | 嵌入式系统及其数据删除的方法 |
CN103955513A (zh) * | 2014-04-30 | 2014-07-30 | 广东威创视讯科技股份有限公司 | 嵌入式系统及其数据删除的方法 |
WO2016062051A1 (zh) * | 2014-10-23 | 2016-04-28 | 中兴通讯股份有限公司 | 一种移动终端参数的管理方法、装置及存储介质 |
CN105528213A (zh) * | 2015-12-04 | 2016-04-27 | 上海斐讯数据通信技术有限公司 | 一种防止向Flash配置区域写入相同参数的方法 |
CN105653402A (zh) * | 2016-01-12 | 2016-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种ssd以及用于ssd的数据恢复方法 |
CN106227620A (zh) * | 2016-07-20 | 2016-12-14 | 中国航空工业集团公司航空动力控制系统研究所 | 可恢复的Flash数据存储方法 |
CN106227620B (zh) * | 2016-07-20 | 2019-03-29 | 中国航空工业集团公司航空动力控制系统研究所 | 可恢复的Flash数据存储方法 |
CN106445722A (zh) * | 2016-10-20 | 2017-02-22 | 积成电子股份有限公司 | 一种嵌入式系统中基于闪存存储器进行参数存储的方法 |
CN106445722B (zh) * | 2016-10-20 | 2019-08-06 | 积成电子股份有限公司 | 一种嵌入式系统中基于闪存存储器进行参数存储的方法 |
CN110362526A (zh) * | 2019-06-19 | 2019-10-22 | 合肥致存微电子有限责任公司 | Spi从机设备、存储和适配方法及计算机存储介质 |
CN110362526B (zh) * | 2019-06-19 | 2023-02-17 | 合肥致存微电子有限责任公司 | Spi从机设备、存储和适配方法及计算机存储介质 |
CN110764704A (zh) * | 2019-10-18 | 2020-02-07 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN110764704B (zh) * | 2019-10-18 | 2023-09-05 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN110955615A (zh) * | 2019-10-23 | 2020-04-03 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
CN110955615B (zh) * | 2019-10-23 | 2021-11-09 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101436158B (zh) | 2011-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101436158B (zh) | 一种基于嵌入式设备闪存的参数管理方法和系统 | |
US6839823B1 (en) | Increased reliability of data stored on flash memory in applications sensitive to power-loss | |
CN100435115C (zh) | 具有非循序更新区块管理的非易失性存储器及方法 | |
CN100419714C (zh) | 闪存存取方法、闪存文件系统的块替换方法及其管理装置 | |
CN101014929B (zh) | 使用nvram进行存储器管理的系统、方法和设备 | |
US7065608B2 (en) | Apparatus for recording data and method for writing data to flash memory | |
US6449625B1 (en) | Use of a two-way stack approach to optimize flash memory management for embedded database systems | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN101401076B (zh) | 针对具有可擦除/可重写存储器使用带有主机装置的一次或数次可编程存储器的方法及装置 | |
CN102081577B (zh) | 对Flash存储器的数据存储结构进行数据操作的方法 | |
CN100389406C (zh) | 在嵌入系统的非易失存储器中进行数据操作的方法 | |
US20010054129A1 (en) | Method, system and computer program | |
CN101324862B (zh) | 闪存存储管理方法 | |
CN106055489A (zh) | 存储器装置与其操作方法 | |
CN109558335B (zh) | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 | |
CN100543706C (zh) | 一种实现flash芯片数据安全的方法 | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
CN102981977A (zh) | 一种可延长flash使用寿命的数据存储方法 | |
CN103853669A (zh) | 一种基于NOR Flash的存储管理方法 | |
CN100364013C (zh) | 在闪存中存放校验码的方法及装置 | |
CN101887750A (zh) | 一种利用Flash存储器进行动态数据存储的方法 | |
EP2267725A1 (en) | Memory device for managing the recovery of a non volatile memory | |
JP2003036209A (ja) | 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法 | |
CN1937077B (zh) | 闪存介质中的数据多状态管理方法 | |
CN100489812C (zh) | 处理nor型闪存中数据记录的方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |