Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
INFORMATION STORAGE METHOD AND APPARATUS IN NONVOLATILE STORAGE DEVICE
Document Type and Number:
WIPO Patent Application WO/2014/015522
Kind Code:
A1
Abstract:
Disclosed are an information storage method and apparatus in a nonvolatile storage device. The storage device comprises two Blocks: a first Block and a second Block. The method comprises: determining whether the first Block is empty; if it is determined that the first Block is not empty, determining whether the second Block is empty; if it is determined that one of the Blocks is empty, storing into the empty Block information to be stored; and erasing the other Block. The two Blocks are used alternately to store the information, and it is ensured that one Block is empty and the other Block stores information. In this manner, before information is stored into the empty Block, the erasing operation does not need to be performed, which can avoid an accident in the erasing process to prevent the whole Block from forming a "bad data" area.

Inventors:
WANG WENXI (CN)
LIN QINGHE (CN)
Application Number:
PCT/CN2012/079288
Publication Date:
January 30, 2014
Filing Date:
July 27, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HISENSE BROADBAND MULTIMEDIA TECHNOLOGIES CO LTD (CN)
WANG WENXI (CN)
LIN QINGHE (CN)
International Classes:
G06F12/02
Foreign References:
CN101162608A2008-04-16
CN102789426A2012-11-21
US20030069671A12003-04-10
Attorney, Agent or Firm:
BEIJING KINGDAUNION LAW FIRM (CN)
北京市京大律师事务所 (CN)
Download PDF:
Claims:
权 利 要 求 书

1. 一种在非易失性存储器件中存储信息的方法, 其中所述存储器件包括 两个 Block: 第一 Block或第二 Block, 其特征在于, 所述方法包括:

对第一 Block查空; 若判断出第一 Block不为空, 则对第二 Block查空; 若判断出其中一个 Block为空, 则将待存入信息存储到其中一个为空的 Block中; 并对另一个 Block进行擦除操作。

2. 如权利要求 1所述的方法, 其特征在于, 在所述将待存入信息存储到 其中一个为空的 Block后, 还包括:

在该 Block的签名区域写入签名信息。

3. 如权利要求 2所述的方法, 其特征在于, 在该 Block的签名区域写入 签名信息后, 还包括:

在该 Block的校验区域写入校验信息。

4. 如权利要求 3所述的方法, 其特征在于, 在所述将待存入信息存储到 其中一个为空的 Block之前, 还包括:

判断第一 Block中的信息是否有效; 若第一 Block中的信息有效, 则读取 第一 Block中的信息作为 Block信息; 若第一 Block中的信息无效, 则: 判断第二 Block中的信息是否有效; 若第二 Block中的信息有效, 则读取 第二 Block中的信息作为 Block信息;

根据所述待存入信息修改所述 Block信息; 以及

所述将待存入信息存储到其中一个为空的 Block具体为:

将修改后的、携带有所述待存入信息的 Block信息存储到其中一个为空的 Block。

5. 如权利要求 3所述的方法, 其特征在于, 所述存储器件中还包括: 存 储有默认信息的第三 Block; 以及,

在所述判断第二 Block中的信息是否有效之后, 所述方法还包括: 若第二 Block中的信息无效, 则读取第三 Block中存储的默认信息作为 Block信息。 6. 如权利要求 5所述的方法, 其特征在于, 所述判断第一 Block中的信 息是否有效具体包括:

判断第一 Block中的签名区域是否有签名信息;若没有签名信息,则判断 出第一 Block中的信息无效; 若有签名信息, 贝 |J :

判断第一 Block中的校验区域中的校验信息是否正确; 若校验信息正确, 则判断出第一 Block中的信息有效; 若校验信息错误, 则判断出第一 Block中 的信息无效; 以及

所述判断第二 Block中的信息是否有效具体包括:

判断第二 Block中的签名区域是否有签名信息;若没有签名信息,则判断 出第二 Block中的信息无效; 若有签名信息, 贝 |J :

判断第二 Block中的校验区域中的校验信息是否正确; 若校验信息正确, 则判断出第二 Block中的信息有效; 若校验信息错误, 则判断出第二 Block中 的信息无效。

7. 如权利要求 3-6任一所述的方法, 其特征在于, 所述对第一 Block查 空具体包括:

判断第一 Block的签名区域中是否有签名信息;如果有签名信息,则判断 出第一 Block不为空; 如果没有签名信息, 贝' J :

判断第一 Block中所有的值是否都为 0XFF; 如果第一 Block中所有的值 都为 0XFF, 则判断第一 Block为空; 否则, 第一 Block不为空; 以及

所述对第二 Block查空具体包括:

判断第二 Block的签名区域中是否有签名信息;如果有签名信息,则判断 出第二 Block不为空; 如果没有签名信息, 贝' J :

判断第二 Block中所有的值是否都为 0XFF; 如果第二 Block中所有的值 都为 OXFF, 则判断第二 Block为空; 否则, 第二 Block不为空。

8. 如权利要求 7所述的方法, 其特征在于, 在所述对第二 Block查空之 后, 还包括:

若判断出第二 Block不为空, 则将第二 Block擦除为空。

9. 如权利要求 1所述的方法, 其特征在于, 所述存储器件中包括有第一 区域和第二区域,第一区域和第二区域中分别包括 N个 Block; 第一区域中的 第 m个 Block与第二区域中的第 m个 Block相对应, 其中, N为自然数, m 为小于 N的自然数; 以及

第一 Block和第二 Block为第一区域和第二区域中相对应的两个 Block。

10. 一种在非易失性存储器件中存储信息的装置, 包括:

查空模块, 用于对第一 Block查空; 若判断出第一 Block不为空, 则对第 二 Block查空;其中,第一 Block或第二 Block为所述存储器件中的两个 Block;

信息存储模块,用于若判断出其中一个 Block为空,则将待存入信息存储 到其中一个为空的 Block中; 并对另一个 Block进行擦除操作。

11. 如权利要求 10所述的装置, 其特征在于,

所述信息存储模块还用于在将待存入信息存储到其中一个为空的 Block 后, 在该 Block的签名区域写入签名信息。

12. 如权利要求 11所述的装置, 其特征在于,

所述信息存储模块还用于在该 Block 的签名区域写入签名信息后, 在该 Block的校验区域写入校验信息。

13. 如权利要求 12所述的装置, 其特征在于, 还包括:

信息读取模块, 用于判断第一 Block中的信息是否有效; 若第一 Block中 的信息有效, 则读取第一 Block中的信息作为 Block信息; 若第一 Block中的 信息无效,则判断第二 Block中的信息是否有效;若第二 Block中的信息有效, 则读取第二 Block中的信息作为 Block信息;

信息修改模块, 用于根据所述待存入信息修改所述 Block信息; 以及 所述信息存储模块将待存入信息存储到其中一个为空的 Block具体为:所 述信息存储模块将修改后的、携带有所述待存入信息的 Block信息存储到其中 一个为空的 Block。

14. 如权利要求 13所述的装置, 其特征在于,

所述信息读取模块还用于在判断第二 Block中的信息是否有效之后,若第 二 Block中的信息无效, 则读取第三 Block中存储的默认信息; 其中, 第三 Block为所述存储器件中存储默认信息的 Block。 15. 如权利要求 10-14任一所述的装置, 其特征在于, 所述存储器件中包 括有第一区域和第二区域,第一区域和第二区域中分别包括 N个 Block; 第一 区域中的第 m个 Block与第二区域中的第 m个 Block相对应, 其中, N为自 然数, m为小于 N的自然数; 以及

第一 Block和第二 Block为第一区域和第二区域中相对应的两个 Block。

Description:
在非易失性存储器件中存储信息的方法和装置 技术领域

本发明涉及存储技术, 尤其涉及一种在非易失性存储器件中存储信息 的 方法和装置。 背景技术

非易失性存储介质在各种智能产品或设备中是 不可或缺的。 具有存储功 能的介质有很多, EPROM、 EEPROM、 Flash EEPROM等等, 每种存储介质 根据其成本和性能运用在不同的技术领域。 例如, 普通的 EEPROM使用灵活, 可以单字节擦除, 但大容量的 EEPROM, 成本和尺寸都非常高。 因此,

在需要进行大容量信息存储时, 通过都采用 FLASH EEPROM (或筒称 FLASH )介质进行存储。 在使用 FLASH进行存储时, 通常都是以整个 Block (存储块)进行操作的: 例如, 需要修改 FLASH中存储的某几个字节, 则需 要擦除这几个字节所在的 Block之后, 再写入需要写入的值。

众所周知, 非易失性存储器的擦除过程比较耗时, 如果在此擦除过程中 有意外掉电或者 Reset等事件发生, 将会导致整个 Block的值被擦除或者部分擦 除, 而新写入的值却没有正常写入, 这样原来存储在 Flash中的值将不再完整, 形成一块 "坏数据" 区域。 如果有相关程序使用到上述 "坏数据" 区域, 会 对整个程序造成严重的后果, 例如程序跑飞或者执行错误, 对相关产品的稳 定性造成极大的隐患。

为防止上述问题, 现有技术的 Flash保存方法中, 多是先读取一块 Block中 所有值到 RAM区中备份, 然后擦除这块 Block, 最后在此 Block中写入最新更 新的值以及备份的值。这种方法在 Flash擦除 Block时意外断电,将会丢失 Block 中原来存储的信息, 导致信息丢失。 也有些方法是通过在 Flash中另外开辟一 块新的 Block用于存储备份信息, 当往 Flash保存时, 除了按照上述方法正常擦 除、 写入外, 同时, 在备份区 Block也进行如此操作: 擦除、 写入, 当其中一 块 Block在擦除过程中出现意外掉电时, 使用另外一块备份 Block中的信息, 从 而防止出现意外掉电而引起的信息丢失。 这种防止信息丢失的方法虽然可行, 但需要同时擦除、 写入两块 Block, 耗费时间过长。 在很多产品, 尤其是光模 块产品应用中, 需要快速保存一些信息到 Flash, 因此, 两块 Block同时擦除、 写入所耗时间不能满足要求。 综上所述, 现有技术的在 Flash中存储信息的方法, 或者在擦除过程中有 意外掉电或者 Reset等事件发生时, 将会导致整个 Block形成 "坏数据" 区域, 或者在存储信息过程中耗费时间过长。 发明内容

本发明的实施例提供了一种在非易失性存储器 件中存储信息的方法和装 置,用以在擦除过程中有意外掉电或者 Reset等事件发生时,既能避免形成 "坏 数据" 区域, 又不耗费过长时间进行信息存储。

根据本发明的一个方面, 提供了一种在非易失性存储器件中存储信息的 方法, 其中所述存储器件包括两个 Block: 第一 Block或第二 Block, 所述方 法包括:

对第一 Block查空; 若判断出第一 Block不为空, 则对第二 Block查空; 若判断出其中一个 Block为空, 则将待存入信息存储到其中一个为空的 Block中; 并对另一个 Block进行擦除操作。

进一步, 在所述将待存入信息存储到其中一个为空的 Block后, 还包括: 在该 Block的签名区域写入签名信息。

在该 Block的签名区域写入签名信息后, 还包括:

在该 Block的校验区域写入校验信息。

在所述将待存入信息存储到其中一个为空的 Block之前, 还包括: 判断第一 Block中的信息是否有效; 若第一 Block中的信息有效, 则读取 第一 Block中的信息作为 Block信息; 若第一 Block中的信息无效, 则:

判断第二 Block中的信息是否有效; 若第二 Block中的信息有效, 则读取 第二 Block中的信息作为 Block信息;

根据所述待存入信息修改所述 Block信息; 以及

所述将待存入信息存储到其中一个为空的 Block具体为:

将修改后的、携带有所述待存入信息的 Block信息存储到其中一个为空的

Block。

根据本发明的另一个方面, 提供了一种在非易失性存储器件中存储信息 的装置, 包括:

查空模块, 用于对第一 Block查空; 若判断出第一 Block不为空, 则对第 二 Block查空;其中,第一 Block或第二 Block为所述存储器件中的两个 Block; 信息存储模块,用于若判断出其中一个 Block为空,则将待存入信息存储 到其中一个为空的 Block中; 并对另一个 Block进行擦除操作。 进一步, 所述信息存储模块还用于在将待存入信息存储 到其中一个为空 的 Block后, 在该 Block的签名区域写入签名信息。

所述信息存储模块还用于在该 Block 的签名区域写入签名信息后, 在该 Block的校验区域写入校验信息。

进一步, 所述装置还包括:

信息读取模块, 用于判断第一 Block中的信息是否有效; 若第一 Block中 的信息有效, 则读取第一 Block中的信息作为 Block信息; 若第一 Block中的 信息无效,则判断第二 Block中的信息是否有效;若第二 Block中的信息有效, 则读取第二 Block中的信息作为 Block信息;

信息修改模块, 用于根据所述待存入信息修改所述 Block信息; 以及 所述信息存储模块将待存入信息存储到其中一 个为空的 Block具体为:所 述信息存储模块将修改后的、携带有所述待存 入信息的 Block信息存储到其中 一个为空的 Block。

本发明实施例由于利用两个 Block轮流进行信息存储,并同时保证其中一 个 Block为空, 即该 Block中的值都为 OxFF, 并且另外一个 Block存储了信 息。 这样, 在向空的 Block中存入信息前, 不必进行擦除操作, 从而可以避免 擦除过程中若意外掉电或者有 Reset等事件发生, 而导致整个 Block形成 "坏 数据" 区域; 而直接向 Block写入信息所耗时间较短, 因此, 大大降低了在存 储过程中出现意外情况而导致存储异常的几率 。

此外, 由于写入、存储信息的 Block与进行擦除操作的 Block不是同一个 Block, 则即使在耗时较长的擦除过程中出现意外情况 , 如掉电等情况, 也不 会影响到存储到另一个 Block中的信息,从而保证存储到 Block中的信息不受 影响。

而且, 由于在存储过程中只需擦除一个 Block, 而非现有技术的方法中需 要擦除两块 Block, 从而大大减少了非易失性存储器件的存储时间 , 既可以满 足产品中对非易失性存储器件写入的时间指标 要求, 又减少对非易失性存储 器件的擦除次数, 可以提高效率和非易失性存储器件的寿命, 降低功耗。 附图说明

图 la、 6 为本发明实施例的在非易失性存储器件中存储 信息的方法流程 图;

图 lb为本发明实施例的 Block中的签名区域和校验区域的示意图; 图 2a、 2b、 2c为本发明实施例的向 Block_A存储信息的示意图; 图 2d为本发明实施例的向 Block_A存储信息后,擦除 Block_B的示意图; 图 3a、 3b、 3c为本发明实施例的向 Block_B存储信息的示意图; 图 3d为本发明实施例的向 Block_B存储信息后,擦除 Block_A的示意图; 图 4a、 4b、 4c为本发明实施例的 Block_A或 Block_B存储异常的示意图; 图 5为本发明实施例的从非易失性存储器件中读 信息的方法流程图; 图 7 为本发明实施例的在非易失性存储器件中存储 信息的装置的内部结 构框图。

具体实施方式

为使本发明的目的、 技术方案及优点更加清楚明白, 以下参照附图并举 出优选实施例, 对本发明进一步详细说明。 然而, 需要说明的是, 说明书中 列出的许多细节仅仅是为了使读者对本发明的 一个或多个方面有一个透彻的

"本申请使用的 "模块"、、 "系统: 等 语旨在包括与计算机相关的实体, 例如但不限于硬件、 固件、 软硬件组合、 软件或者执行中的软件。 例如, 模 块可以是, 但并不仅限于: 处理器上运行的进程、 处理器、 对象、 可执行程 序、 执行的线程、 程序和 /或计算机。 举例来说, 计算设备上运行的应用程序 和此计算设备都可以是模块。 一个或多个模块可以位于执行中的一个进程和 / 或线程内, 一个模块也可以位于一台计算机上和 /或分布于两台或更多台计算 机之间。

本发明的主要思路为,利用非易失性存储器件 中的两个 Block来轮流进行 信息存储。例如,利用非易失性存储器件中的 两个 Block:第一 Block( Block_A ) 和第二 Block ( Block_B )来轮流进行信息存储。 同时保证其中一个 Block为 空,即该 Block中的值都为 OxFF,并且另外一个 Block存储了信息。根据 Flash 的特性可知, 由 "Γ 变 "0" 可以直接写入, 由 "0" 变 "1" 需要先擦除后 再写入。 所以当有信息需要保存时, 先分别判断非易失性存储器件中的 Block_A或 Block_B是否为空: 例如, 先对第一 Block查空; 若判断出第一 Block不为空, 则对第二 Block查空; 若判断出其中一个 Block为空, 则将待 存入信息存储到其中一个为空的 Block中; 而对另一个 Block进行擦除操作。 这样, 在向空的 Block中存入信息前, 不必进行擦除操作, 从而可以避免擦除 过程中若意外掉电或者有 Reset等事件发生,而导致整个 Block形成"坏数据" 区域; 并且, 由于在存储过程中只需擦除一个 Block, 而非现有技术的方法中 需要擦除两块 Block, 从而大大减少了非易失性存储器件的存储时间 , 既可以 满足产品中对非易失性存储器件写入的时间指 标要求, 又减少对非易失性存 储器件的擦除次数, 可以提高效率和非易失性存储器件的寿命, 降低功耗。

下面结合附图详细说明本发明实施例的技术方 案。 本发明实施例以非易 失性存储器件为 Flash 为例, 具体讲述在非易失性存储器件中存储信息的方 法: 在 Flash中以 Block_A和 Block_B轮流进行信息存储。 具体地, Flash中 可以划分出第一区域(或称区域 A )和第二区域(或称区域 B ), 区域 A和区 域 B中包括的 Block的个数相等; 比如, 区域 A和区域 B中分别包括有 N个 Block ( N为自然数 )。 区域 A中的第 m个 Block与区域 B中的第 m个 Block 相对应, 其中, m为小于 N的自然数。 那么, 区域 A和区域 B中相对应的两 个 Block, 可以如图 la所示的 Block_A和 Block_B的轮流存储方式进行信息 存储, 具体包括如下步骤:

S101: 对 Flash中的 Block_A进行查空; 若判断 Block_A为空, 则执行 步骤 S102; 否则, 执行步骤 S111;

Block_A和 Block_B可以是上述区域 A和区域 B中相对应的两个 Block, 例如, Block_A为区域 A中第 n个 Block, Block_B为区域 B中第 n个 Block, 或者, Block_B为区域 A中第 n个 Block, Block_A为区域 B中第 n个 Block, 其中 n为小于 N的自然数。也就是说, Block_A和 Block_B为 Flash中的两个 相对应的 Block。

如果待存入 Flash中的信息需要写入到第 n个 Block中, 那么可以区域 A 中第 n个 Block ( Block_A )或区域 B中第 n个 Block ( Block_B )进行存储; 因此, 先对 Block_A和 Block_B进行查空。

对 Block_A的查空具体包括: 判断 Block_A是否为空, 即判断 Block_A 中所有的值是否都为 OXFF。 如果 Block_A 中所有的值都为 OXFF, 则判断 Block_A为空; 否则, 81(^1^_ 不为空。

S102: 将待存入的信息存储到 Block_A中。

如果 Block_A为空, 则将需要待存入的信息写入到 Block_A中。

较佳地, Block_A中还可包括签名区域和校验区域。 具体地, 如图 lb所 示, Flash中的每个 Block通常有 M个字节 ( M可以是 256或 512 ), 将这 M 个字节分成三个区域: 其中, 前 M-2个字节用于存放保存信息, 称为信息区 域; 第 M-1个字节用于存放签名, 称为签名区域; 第 M个字节用于存放校验 和(校验信息), 称为校验区域。

在待存入的信息成功地写入到 Block_A的信息区域后, 在 Block_A的签 名区域写入签名信息,表明该 Block被成功写入;签名信息具体可以是 0X00, 或者其它值。

在待存入的信息成功地写入到 Block_A的信息区域后, 还可以将校验信 息写入到 Block_A的校验区域。

校验信息具体可以是 Block_A中的前 M-1个字节的校验和。 Block_A中 的第 M个字节中的校验信息具体根据如下公式 1得到:

第 M个字节 = OXFF - U 第 i个字节 (公式 1)

i=l 其中, 第 i个字节指的是 Block_A中的第 i个字节。

图 2a、 2b、 2c示出了向 Block_A存储信息的过程:

从图 2a所示的 Block_A和 Block_B, 可以看出 Block_A为空; 图 2b则 示出将 124值更改为 125值后的 Block_A和 Block_B , 其中, 125值被写入到 空的 Block_A中; 图 2c示出 125值被写入到 Block_A后,在 Block_A写入签 名信息和校验信息, 其中 S表示签名信息, C表示校验信息。

S103: 对 Block_B进行擦除操作后, 跳转到步骤 S151 , 结束此次信息存 储过程。

由于对 Block_B进行擦除的操作是在将待存入的信息存 到 Block_A之 后, 因此, 即使在擦除 Block_B 的过程中出现掉电等异常现象也不会影响 Block_A中存储的信息。 也就是说, 这不同于现有技术, 在现有技术中由于在 写入信息之前要擦除 Block, 如果在擦除过程中掉电, 则直接导致无法正常向 Block存入信息, 从而导致 Block中的信息错误。

较佳地, 在对 Block_B进行擦除之前, 可以先判断 Block_B是否为空; 如果 Block_B为空, 则不必再进行擦除操作, 而直接跳转到步骤 S151; 如果 81 0 ^8不为空, 再对 Block_B进行擦除操作后, 跳转到步骤 S151 , 结束此 次信息存储过程。 在对 Block_B进行擦除操作后, Block_B 中所有的值都为 OXFF。

图 2d示出了将 125值写入到 Block_A后, 将 Block_B擦除为空。

S111: 对 Flash中的 Block_B进行查空; 若判断 Block_B为空, 则执行步 骤 S112; 否则, 执行步骤 S121。

对 Block_B的查空具体包括: 判断 Block_B是否为空, 即判断 Block_B 中所有的值是否都为 OXFF。 如果 Block_B 中所有的值都为 OXFF, 则判断

Block_B为空; 否则, Block_B不为空。 S112: 将待存入的信息存储到 Block_B中。

如果 Block_B为空, 则将需要待存入的信息写入到 Block_B中。

较佳地, 与 Block_A类似, Block_B 中还可包括签名区域和校验区域。 在待存入的信息成功地写入到 Block_B的信息区域后, 在 Block_B的签名区 域写入签名信息,表明该 Block被成功写入;并且,将校验信息写入到 Block_B 的校验区域。校验信息具体为 Block_B中的前 M-1个字节的校验和。 Block_B 中的第 M个字节中的校验信息具体根据如下公式 2得到:

第 M个字节 = OXFF - ¾ 第 i个字节 (公式 2)

i=l 其中, 第 i个字节指的是 Block_B中的第 i个字节。

图 3a、 3b、 3c示出了向 Block_B存储信息的过程:

从图 3a所示的 Block_A和 Block_B, 可以看出 Block_B为空; 图 3b则 示出将 123值更改为 124值后的 Block_A和 Block_B , 其中, 124值被写入到 空的 Block_B中; 图 3c示出 124值被写入到 Block_B后, 在 Block_B写入签 名信息和校验信息, 图 3c中的 SC表示校验信息。

S113: 对 Block_A进行擦除操作后, 跳转到步骤 S151 , 结束此次信息存 储过程。

由于对 Block_A进行擦除的操作是在将待存入的信息存 到 Block_B之 后, 因此, 即使在擦除 Block_A 的过程中出现掉电等异常现象也不会影响 Block_B中存储的信息。 也就是说, 这不同于现有技术, 在现有技术中由于在 写入信息之前要擦除 Block, 如果在擦除过程中掉电, 则直接导致无法正常向 Block存入信息, 从而导致 Block中的信息错误。

在对 Block_A进行擦除操作后, Block_A中所有的值都为 OXFF。

图 3d示出了将 124值写入到 Block_B后, 将 Block_A擦除为空。

S121: 对 Block_B进行擦除操作后, 跳转到步骤 S112。

如果 Block_A和 Block_B都不为空, 则说明在上次的存储过程中可能出 现了异常情况, 导致 Block_A或 Block_B的擦除操作未完成, 则对 Block_B 进行擦除操作, 跳转到步骤 S112后, 将继续执行上述 S112和 S113。

图 4a、 4b、 4c分别示出了 810^ 或81 0 ^8存储异常的情况: 图 4a示出了向 Block_B 写入信息未完成时意外掉电导致存储异常的情 况; 图 4b示出了在擦除备用块 81 0 ^ 之前意外掉电导致存储异常的情况; 图 4c示出了在擦除备用块 Block_A的过程中意外掉电导致存储异常的情况 S151: 结束此次信息存储过程。

在实际应用中, 为了更进一步保证产品和设备的稳定性, 非易失性存储 器件中还可包括:用于存储默认信息的第三 Block(或称 Block_C )。在 Block_C 中存储了默认信息, 以备 Block_A和 Block_B中的数据被损坏时使用。

根据上述的存储方法将信息存储到 Flash之后, 如果需要对 Rash进行信 息读取 , 即读取 Flash中的信息到 RAM ( random, access memory, 随机存取存 储器) 中, 则具体的方法流程如图 5所示, 包括如下步骤:

S501: 判断 Block_A中的信息是否有效; 若有效, 则执行步骤 S502; 否 则, 执行步骤 S511;

判断 Block_A中的信息是否有效具体包括: 先判断 Block_A中的签名区 域是否有签名信息; 若没有签名信息, 则判断出 Block_A中的信息无效, 不 能读取; 若有签名信息, 则继续如下的判断:

判断 Block_A中的校验区域中的校验信息是否正确; 若校验信息正确, 则判断出 Block_A 中的信息有效, 可以读取; 若校验信息错误, 则判断出 Block_A中的信息无效, 不能读取。

S502: 读取 Block_A中的信息后, 跳转到步骤 S551 , 结束此次信息读取 过程。

在判断出 Block_A中的信息有效后, 从 Block_A中读取信息到 RAM中, 并跳转到步骤 S551 , 结束此次信息读取过程。

S511: 判断 Block_B中的信息是否有效; 若有效, 则执行步骤 S512; 否 则, 执行步骤 S521;

在判断出 Block_A中的信息无效后, 进而判断 Block_B中的信息是否有 效。

判断 Block_B中的信息是否有效的方法与上述步骤 S501中判断 Block_A 中的信息是否有效的方法相同, 具体包括: 先判断 Block_B 中的签名区域是 否有签名信息; 若没有签名信息, 则判断出 Block_B 中的信息无效, 不能读 取; 若有签名信息, 则继续如下的判断:

判断 Block_B 中的校验区域中的校验信息是否正确; 若校验信息正确, 则判断出 Block_B 中的信息有效, 可以读取; 若校验信息错误, 则判断出 Block_B中的信息无效, 不能读取。

S512: 读取 Block_B中的信息后, 跳转到步骤 S551 , 结束此次信息读取 过程。 在判断出 Block_B中的信息有效后, 从 Block_B中读取信息到 RAM中, 并跳转到步骤 S551 , 结束此次信息读取过程。

S521: 从 Block_C中读取默认信息后, 跳转到步骤 S551 , 结束此次信息 读取过程。

在判断出 Block_A和 Block_B中的信息都无效后, 为防止产品或设备读 取错误的数据而发生程序跑飞或者执行错误的 现象, 以免造成严重的后果, 可以从 Block_C中读取产品或设备在出厂时即写入的默 信息到 RAM中。

S551: 结束此次信息读取过程。

事实上, 在将信息存储到 Flash时, 可能只是需要存储几个字节, 也就意 味着只需要修改 Block中某几个字节的信息,对于 Block中其它字节的信息则 不需要进行改动, 那么本发明实施例提供的更优的一种在非易失 性存储器件 中存储信息的方法的流程图, 如图 6所示, 包括如下步骤:

S601: 读取有效信息到 RAM中。

读取有效信息的具体方法可以采用如上述图 5 所示的方法, 即步骤 S501-S551的方法,此处不再赘述。为便于后续的 描述,本文将从 Flash的 Block 读取到 RAM中的信息称为 Block信息。

S602: 在 RAM中修改 Block信息中相应字节的信息。

例如,待存入的信息需要写入到 Block的第 1个字节, 则将 Block信息中 的第 1个字节修改为待存入的信息。

S603: 将修改后的 Block信息写入到 Flash中。

将修改后的、携带有待存入的信息的 Block信息写入到 Flash中的具体方 法流程与上述图 1所示的方法流程相类似, 只是在步骤 S102中将待存入的信 息存储到 Block_A具体为: 将修改后的、 携带有待存入的信息的 Block信息 存储到 Block_A; 在步骤 S112中将待存入的信息存储到 Block_B具体为: 将 修改后的、携带有待存入的信息的 Block信息存储到 Block_B; 其它步骤基本 相同, 此处不再赘述。

更优地, 在上述步骤 S101的对 Flash中的 Block_A进行查空过程中还可 包括: 先判断 Block_A的签名区域中是否有签名信息; 如果有签名信息, 则 判断出 Block_A不为空; 如果没有签名信息, 则再进一步判断 Block_A中所 有的值是否都为 OXFF。如果 Block_A中所有的值都为 OXFF,则判断 Block_A 为空; 否则, 81(^1^_ 不为空。

类似地, 在上述步骤 S111的对 Flash中的 Block_B进行查空过程中还可 包括: 先判断 Block_B 的签名区域中是否有签名信息; 如果有签名信息, 则 判断出 Block_B不为空; 如果没有签名信息, 则再进一步判断 Block_B中所 有的值是否都为 OXFF。如果 Block_B中所有的值都为 OXFF,则判断 Block_B 为空; 否则, 81(^1^_8不为空。

本发明实施例提供的在非易失性存储器件中存 储信息的装置, 如图 7所 示, 包括: 查空模块 701、 信息存储模块 702。

查空模块 701用于对第一 Block查空; 若判断出第一 Block不为空, 则对 第二 Block查空; 其中, 第一 Block或第二 Block为所述存储器件中的两个 Block。 所述存储器件中包括有第一区域和第二区域, 第一区域和第二区域中 分别包括 N个 Block;第一区域中的第 m个 Block与第二区域中的第 m个 Block 相对应, 其中, N为自然数, m为小于 N的自然数; 以及第一 Block和第二 Block为第一区域和第二区域中相对应的两个 Block。

信息存储模块 702用于若判断出其中一个 Block为空,则将待存入信息存 储到其中一个为空的 Block中; 并对另一个 Block进行擦除操作。信息存储模 块 702在将待存入信息存储到其中一个为空的 Block后,在该 Block的签名区 域写入签名信息, 在该 Block的校验区域写入校验信息。

进一步, 本发明实施例的在非易失性存储器件中存储信 息的装置还包括: 信息读取模块 703、 信息修改模块 704。

信息读取模块 703用于判断第一 Block中的信息是否有效; 若第一 Block 中的信息有效, 则读取第一 Block中的信息作为 Block信息; 若第一 Block中 的信息无效, 则判断第二 Block中的信息是否有效; 若第二 Block中的信息有 效, 则读取第二 Block中的信息作为 Block信息。

进一步,信息读取模块 703在判断第二 Block中的信息是否有效之后,若 第二 Block中的信息无效,则读取第三 Block中存储的默认信息作为 Block信 息; 其中, 第三 Block为所述存储器件中存储默认信息的 Block。

信息修改模块 704用于根据所述待存入信息修改所述 Block信息。

由此, 信息存储模块 702 的将待存入信息存储到其中一个为空的 Block 具体为:信息存储模块 702将修改后的、携带有所述待存入信息的 Block信息 存储到其中一个为空的 Block。

具体地, 本发明实施例的在非易失性存储器件中存储信 息的装置中的各 模块所涉及的具体工作过程, 可以参考上述图 la、 5、 6所示的方法流程中所 公开的相关内容, 此处不再赘述。 本发明实施例由于利用两个 Block轮流进行信息存储,并同时保证其中一 个 Block为空, 即该 Block中的值都为 OxFF, 并且另外一个 Block存储了信 息。 这样, 在向空的 Block中存入信息前, 不必进行擦除操作, 从而可以避免 擦除过程中若意外掉电或者有 Reset等事件发生, 而导致整个 Block形成 "坏 数据" 区域; 而直接向 Block写入信息所耗时间较短, 因此, 大大降低了在存 储过程中出现意外情况而导致存储异常的几率 。

此外, 由于写入、存储信息的 Block与进行擦除操作的 Block不是同一个 Block, 则即使在耗时较长的擦除过程中出现意外情况 , 如掉电等情况, 也不 会影响到存储到另一个 Block中的信息,从而保证存储到 Block中的信息不受 影响。

而且, 由于在存储过程中只需擦除一个 Block, 而非现有技术的方法中需 要擦除两块 Block, 从而大大减少了非易失性存储器件的存储时间 , 既可以满 足产品中对非易失性存储器件写入的时间指标 要求, 又减少对非易失性存储 器件的擦除次数, 可以提高效率和非易失性存储器件的寿命, 降低功耗。

本领域普通技术人员可以理解实现上述实施例 方法中的全部或部分步骤 是可以通过程序来指令相关的硬件来完成, 该程序可以存储于一计算机可读 取存储介质中, 如: ROM/RAM、 磁碟、 光盘等。

以上所述仅是本发明的优选实施方式, 应当指出, 对于本技术领域的普 通技术人员来说, 在不脱离本发明原理的前提下, 还可以作出若干改进和润 饰, 这些改进和润饰也应视为本发明的保护范围。