《NORFLASH掉电保护方法及装置.pdf》由会员分享,可在线阅读,更多相关《NORFLASH掉电保护方法及装置.pdf(17页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103176920 A (43)申请公布日 2013.06.26 CN 103176920 A *CN103176920A* (21)申请号 201310099627.2 (22)申请日 2013.03.26 G06F 12/16(2006.01) (71)申请人 杭州华三通信技术有限公司 地址 310053 浙江省杭州市高新技术产业开 发区之江科技工业园六和路 310 号华 为杭州生产基地 (72)发明人 李华生 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 谢安昆 宋志强 (54) 发明名称 Nor flash 掉电保护方法及装置 (5。
2、7) 摘要 本申请公开了一种Nor flash掉电保护方法, 包括 : 在针对 Nor flash 的类文件配置表 FAT 文 件系统结构中增加写时备份区 ; 进行写操作时, 将待写入数据写到从写时备份区选择的备份物 理块 block 上, 记录正在写入标记、 以及所述备 份 block 和待写入的目标 block 的全局位置索引 到非易失性随机访问存储器 Nvram ; 设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行 写操作, 从 Nvram 中取出所述备份 block 和目标 block的全局位置索引, 拷贝所述备份block的数 据到所述目标 block。本申请还公开。
3、了一种 Nor flash 掉电保护装置。本申请可实现对 flash 文 件系统的有效保护。 (51)Int.Cl. 权利要求书 3 页 说明书 7 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书7页 附图6页 (10)申请公布号 CN 103176920 A CN 103176920 A *CN103176920A* 1/3 页 2 1. 一种 Nor flash 掉电保护方法, 其特征在于, 包括以下步骤 : 在针对 Nor flash 的类文件配置表 FAT 文件系统结构中增加写时备份区 ; 进行写操作时, 将待写入数据写到从写时备份。
4、区选择的备份物理块 block 上, 记录正 在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引到非易失性随机 访问存储器 Nvram ; 设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行写操作, 从 Nvram 中取 出所述备份 block 和目标 block 的全局位置索引, 拷贝所述备份 block 的数据到所述目标 block。 2.根据权利要求1所述的方法, 其特征在于, 所述从写时备份区选择备份block的方法 为 : 写时备份区的 block 数量记为 N, N 为正整数, 其中按顺序第一个 block 的全局位置索 引记为M, 。
5、上一次使用的备份block的全局位置索引记为K, 判断K+1是否小于M+N, 如果是, 从写时备份区选择全局位置索引为 K+1 的 block 作为备份 block, 否则, 从写时备份区选择 全局位置索引为 M 的 block 作为备份 block。 3. 根据权利要求 1 所述的方法, 其特征在于, 当所述写操作是在已存储有数据的所述 目标 block 上改写数据时, 所述将待写入数据写到从写时备份区选择的备份block上, 包括 : 将所述目标block上 已存储的数据写入随机存储器 Ram, 在所述 Ram 中对所述数据进行改写, 将所述 Ram 中改写 后的数据写到所述备份 bloc。
6、k 上 ; 所述记录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引 到 Nvram 之后, 进一步包括 : 擦除所述目标 block, 将所述备份 block 上的数据写到所述目 标 block 上。 4. 根据权利要求 1 所述的方法, 其特征在于, 当所述写操作是在内容为空的所述目标 block 上写入数据时, 所述将待写入数据写到从写时备份区选择的备份 block 上, 包括 : 将待写入数据写入 随机存储器 Ram, 将所述 Ram 中的数据写到所述备份 block 上 ; 所述记录正在写入标记、 以及所述备份 block 和待写入的目标 bloc。
7、k 的全局位置索引 到 Nvram 之后, 进一步包括 : 将所述备份 block 上的数据写到所述目标 block 上。 5. 根据权利要求 3 或 4 所述的方法, 其特征在于, 所述将所述备份 block 上的数据写 到所述目标 block 上之后进一步包括 : 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局位置索引, 擦除所述备份 block。 6. 根据权利要求 1 所述的方法, 其特征在于, 所述设备重启时, 如果正在写入标记没有 置位, 则擦除写时备份区的所有数据。 7.根据权利要求1所述的方法, 其特征在于, 所述从Nvram中取出所。
8、述备份block和目 标 block 的全局位置索引之后和拷贝所述备份 block 的数据到所述目标 block 之前, 进一 步包括 : 如果所述目标 block 没有被擦除, 则擦除所述目标 block ; 如果所述目标 block 已 被擦除, 则直接拷贝所述备份 block 的数据到所述目标 block。 8.根据权利要求1所述的方法, 其特征在于, 所述拷贝所述备份block的数据到所述目 标 block 之后进一步包括 : 权 利 要 求 书 CN 103176920 A 2 2/3 页 3 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局。
9、位置索引, 擦 除写时备份区的全部数据。 9. 一种 Nor flash 掉电保护装置, 其特征在于, 所述装置包括 : 写时备份区添加模块、 数据备份模块、 标记存储模块、 标记获取模块和数据恢复模块, 其中 : 写时备份区添加模块, 用于在针对 Nor flash 的类文件配置表 FAT 文件系统结构中增 加写时备份区 ; 数据备份模块, 用于进行写操作时, 将待写入数据写到从写时备份区选择的备份物理 块 block 上 ; 标记存储模块, 用于在将待写入数据写到从写时备份区选择的备份 block 上之后, 记 录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局。
10、位置索引到非易失性 随机访问存储器 Nvram ; 标记获取模块, 用于设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行写操 作, 从 Nvram 中取出所述备份 block 和目标 block 的全局位置索引 ; 数据恢复模块, 用于在取出所述备份block和目标block的全局位置索引后, 拷贝所述 备份 block 的数据到所述目标 block。 10. 根据权利要求 9 所述的装置, 其特征在于, 所述数据备份模块在将待写入数据写到 从写时备份区选择的备份 block 上时, 所述从写时备份区选择备份 block, 包括 : 写时备份区的 block 数量记为 N, 。
11、N 为正整数, 其中按顺序第一个 block 的全局位置索 引记为M, 上一次使用的备份block的全局位置索引记为K, 判断K+1是否小于M+N, 如果是, 从写时备份区选择全局位置索引为 K+1 的 block 作为备份 block, 否则, 从写时备份区选择 全局位置索引为 M 的 block 作为备份 block。 11. 根据权利要求 9 所述的装置, 其特征在于, 当所述写操作是在已存储有数据的所述 目标 block 上改写数据时, 所述数据备份模块, 具体用于 : 将所述目标 block 上已存储的数据写入随机存储器 Ram, 在所述 Ram 中对所述数据进行改写, 将所述 Ra。
12、m 中改写后的数据写到所述备份 block 上 ; 所述装置进一步包括 : 数据改写模块, 用于在所述记录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引到 Nvram 之后, 擦除所述目标 block, 将所述备份 block 上的数据写 到所述目标 block 上。 12. 根据权利要求 9 所述的装置, 其特征在于, 当所述写操作是在内容为空的所述目标 block 写入数据时, 所述数据备份模块, 具体用于 : 将待写入数据写入随机存储器 Ram, 将所述 Ram 中的数 据写到所述备份 block 上 ; 所述装置进一步包括 : 数据写入模块, 用于。
13、在所述记录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引到 Nvram 之后, 将所述备份 block 上的数据写到所述目标 block 上。 13.根据权利要求11或12所述的装置, 其特征在于, 所述数据恢复模块, 还用于在将所 述备份 block 上的数据写到所述目标 block 上之后, 清除 Nvram 中的正在写入标记、 以及所 权 利 要 求 书 CN 103176920 A 3 3/3 页 4 述目标 block 和备份 block 的全局位置索引, 擦除所述备份 block。 14. 根据权利要求 9 所述的装置, 其特征在于, 所述标记。
14、获取模块, 还用于在所述设备 重启时, 如果正在写入标记没有置位, 则擦除写时备份区的所有数据 ; 所述数据恢复模块, 还用于在所述从 Nvram 中取出所述备份 block 和目标 block 的全 局位置索引之后和拷贝所述备份block的数据到所述目标block之前, 如果所述目标block 没有被擦除, 则擦除所述目标 block ; 如果所述目标 block 已被擦除, 则直接拷贝所述备份 block 的数据到所述目标 block ; 所述数据恢复模块, 还用于在拷贝所述备份block的数据到所述目标block之后, 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备。
15、份 block 的全局位置索引, 擦除写时备 份区的全部数据。 权 利 要 求 书 CN 103176920 A 4 1/7 页 5 Nor flash 掉电保护方法及装置 技术领域 0001 本申请涉及Nor flash处理技术领域, 尤其涉及Nor flash掉电保护方法及装置。 背景技术 0002 Nor Flash 是采用或非电路作为存储载体的一种闪存介质, 是嵌入式系统的主要 存储媒介。这种类型的 flash 介质写入速度慢、 读取速度快, 位交换几率低, 支持随机寻址 和片内执行, 多应用在存储可执行文件等访问次数少但可靠性要求高的场所。 Nor Flash写 入操作具有以下两个特。
16、点 : 0003 1) 在已存储有内容的物理块 block 上修改目标位置的内容时, 只能把目标比特 bit 的 1(表示内容为空) 修改为 0(表示有内容) , 而不能把 0 修改为 1。要想把目标位置的 0 改写为 1, 只能擦除该目标位置所对应的 block(一般为 64k 或者 128k) , 也就是说, 要擦 除包含有该目标位置的整个 block。因此, 一般情况下, 向 flash 指定的目标位置改写内容 时, 需要先保存所述目标位置对应的 block 上的内容到随机存储器 RAM, 然后对所述 block 执行擦除动作, 再从 RAM 写更新后的内容到 flash 上。 0004。
17、 2) 在内容为空的 block 上写入时, flash 介质的写入速度大约为 5k/s, 如果写入 过程中掉电, 本次实际写入的内容与期望写入的内容可能不一致, 导致本次写入的内容不 可预测。 0005 现有的类文件配置表 FAT 文件系统是一种针对 Nor flash 的文件系统, 该类型文 件系统的元数据和文件数据有相对固定的位置, 并分开存储, 所有的修改操作均原地执行。 类 FAT 文件系统整体结构示意图如图 1 所示, 其中, 元数据区固定位于 flash 介质的前面区 域, 主要存储管理文件存储位置和目录关系的管理性数据 ; 用户数据区, 主要存储各个文件 的实际内容。对于类 F。
18、AT 文件系统的写入操作也包括以下两方面 : 0006 A、 对已存储的数据进行修改, 所述修改过程如图 2 所示, 步骤如下 : 0007 步骤 1 : 把准备改写的目标 block 上的数据内容读取到 RAM, 并且在 RAM 中对准备 改写的目标位置的内容进行更新 ; 0008 步骤 2 : 擦除 flash 上的所述目标 block 的内容 ; 0009 步骤 3 : 把 RAM 中更新后的内容写到所述目标 block 上。 0010 分析上述过程, 如果改写过程中发生掉电, 不仅更新的内容未写入目标 block, 还 可能会破坏目标 block 上原有的内容, 因为进行擦除操作时, 。
19、会将所述目标位置对应的整 个目标 block 的内容都擦除, 因此, 所述目标 block 上原有的有效内容也被擦除了, 从而会 破坏目标 block 上原有的内容, 引起文件系统崩溃。 0011 B、 在内容为空的 block 上写入, 此时, 如果掉电, 实际写入的内容与期望写入的内 容可能不一致, 实际已写入多少内容以及写入的是什么内容, 都是不确定的, 即, 对于写入 数据的完整性和有效性均无法预测。 0012 上述无论是在对已存储的数据改写的过程中发生掉电, 还是在内容为空的 block 上写入的过程中发生掉电, 掉电重启后, 对于之前掉电产生的结果也没有任何处理, 无法继 说 明 。
20、书 CN 103176920 A 5 2/7 页 6 续完成因为掉电而中断的数据写入过程。 0013 综上所述, 现有针对Nor flash的类FAT文件系统对掉电管理支持较差, 如果改写 过程发生掉电, 不仅更新的内容未写入, 还可能破坏原有的内容, 引起文件系统崩溃 ; 如果 在内容为空的 block 上写入的过程中发生掉电, 对于写入数据的有效性和完整性均无法预 测。此外, 掉电重启后, 对于因为掉电而产生的上述问题也没有任何恢复处理。从而无法实 现对 flash 文件系统的有效保护。 发明内容 0014 有鉴于此, 本申请提出一种Nor flash掉电保护方法, 可实现对flash文件。
21、系统的 有效保护。 0015 本申请还提出一种 Nor flash 掉电保护装置, 可实现对 flash 文件系统的有效保 护。 0016 为达到上述目的, 本申请实施例的技术方案是这样实现的 : 0017 一种 Nor flash 掉电保护方法, 包括以下步骤 : 0018 在针对 Nor flash 的类文件配置表 FAT 文件系统结构中增加写时备份区 ; 0019 进行写操作时, 将待写入数据写到从写时备份区选择的备份物理块 block 上, 记 录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引到非易失性 随机访问存储器 Nvram ; 0020 设。
22、备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行写操作, 从 Nvram 中 取出所述备份 block 和目标 block 的全局位置索引, 拷贝所述备份 block 的数据到所述目 标 block。 0021 一种 Nor flash 掉电保护装置, 包括 : 写时备份区添加模块、 数据备份模块、 标记 存储模块、 标记获取模块和数据恢复模块, 其中 : 0022 写时备份区添加模块, 用于在针对 Nor flash 的类文件配置表 FAT 文件系统结构 中增加写时备份区 ; 0023 数据备份模块, 用于进行写操作时, 将待写入数据写到从写时备份区选择的备份 物理块 blo。
23、ck 上 ; 0024 标记存储模块, 用于在将待写入数据写到从写时备份区选择的备份 block 上之 后, 记录正在写入标记、 以及所述备份block和待写入的目标block的全局位置索引到非易 失性随机访问存储器 Nvram ; 0025 标记获取模块, 用于设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行 写操作, 从 Nvram 中取出所述备份 block 和目标 block 的全局位置索引 ; 0026 数据恢复模块, 用于在取出所述备份block和目标block的全局位置索引后, 拷贝 所述备份 block 的数据到所述目标 block。 0027 本申请的有益效。
24、果为, 通过在针对 Nor flash 的类 FAT 文件系统结构中增加写时 备份区, 从写时备份区选择一个 block 作为备份 block, 将待写入 flash 的数据写入 Ram, 将所述 Ram 中的数据写到备份 block, 然后记录正在写入标记及备份 block 和待写入的目 标 block 的位置索引到 Nvram ; 当发生异常掉电并重启时, 如果正在写入标记已置位, 表明 重启前是异常掉电, 需要对因为异常掉电而受到影响的 flash 文件系统进行恢复, 此时, 首 说 明 书 CN 103176920 A 6 3/7 页 7 先禁止其他用户对 flash 进行写操作, 然。
25、后根据 Nvram 记录的 block 位置索引, 找到备份 block 和目标 block, 将备份 block 的数据写到目标 block。从而可以实现 : 当类 FAT 文件 系统数据改写过程中发生掉电、 或在内容为空的 block 上写入数据过程中发生掉电而引起 文件系统数据紊乱时, 在下次设备重启时可以继续完成掉电前的写操作过程, 实现对 flash 文件系统的有效保护。 附图说明 0028 图 1 为现有技术的类 FAT 文件系统整体结构示意图 ; 0029 图 2 为现有技术的数据改写流程示意图 ; 0030 图 3 为本申请实施例的方法流程图 ; 0031 图 4 为本申请实施。
26、例的类 FAT 文件系统结构示意图 ; 0032 图 5 为本申请实施例的在已存储有数据的目标 block 改写数据的流程示意图 ; 0033 图 6 为本申请实施例的在内容为空的目标 block 写入数据的流程示意图 ; 0034 图 7 为本申请实施例的装置功能模块结构示意图。 具体实施方式 0035 为了使本申请的目的、 技术方案及优点更加清楚明白, 以下通过具体实施例并参 见附图, 对本申请进行详细说明。 0036 本申请提出一种Nor flash掉电保护方法, 在针对Nor flash的类文件配置表FAT 文件系统结构中增加写时备份区 ; 进行写操作时, 将待写入数据写到随机存储器 。
27、Ram, 将所 述Ram中的数据写到从写时备份区选择的备份物理块block上, 记录正在写入标记、 以及所 述备份 block 和待写入的目标 block 的全局位置索引到非易失性随机访问存储器 Nvram ; 0037 设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行写操作, 从 Nvram 中 取出所述备份 block 和目标 block 的全局位置索引, 拷贝所述备份 block 的数据到所述目 标 block。 0038 本申请中, 通过在类 FAT 文件系统结构中增加写时备份区, 用于备份进行写操作 时待写入 flash 的数据, 记录正在写入标记 (正在写入标记置。
28、位) 及备份 block 和待写入 的目标 block 的位置索引到掉电不易失位置, 当发生掉电并重启时, 如果正在写入标记已 置位, 则禁止对 flash 进行写操作, 根据掉电不易失位置记录的 block 位置索引, 找到备份 block和目标block, 拷贝备份block的数据到目标block。 本申请方案以较小的开销, 实现 了类 FAT 文件系统上数据写操作过程的完整性和有效性, 避免了异常掉电对于文件系统的 破坏, 可实现对 flash 文件系统的有效保护。 0039 本申请实施例的方法流程如图3所示, 一种Nor flash掉电保护方法, 包括以下步 骤 : 0040 步骤 3。
29、01 : 在针对 Nor flash 的类文件配置表 FAT 文件系统结构中增加写时备份 区。 0041 参照图1可知, 类FAT文件系统结构包括元数据区和用户数据区, 本申请实施例对 现有的类 FAT 文件系统结构进行了扩展, 即在类 FAT 文件系统结构中增加了一个写时备份 区, 如图 4 所示, 所述写时备份区由一个物理块 block 或一个以上连续的 block 组成。 说 明 书 CN 103176920 A 7 4/7 页 8 0042 写时备份区用于备份进行写操作时待写入 flash 的数据, 写时备份区如果由一个 block 组成, 则每次备份都使用这一个 block, 使用频。
30、率过多时容易损坏。写时备份区如果 由一个以上 block 组成, 则可以轮流使用各个 block 作为备份 block, 可延长使用寿命, 此 外, 这些 block 可以是连续的, 如此, 可以更方便按全局位置索引顺序轮流选用这些 block 作为备份 block。写时备份区位于整个 flash 介质的什么位置不重要, 只要其包含的 block 是连续的即可。 0043 例如, 如图 4 所示, 写时备份区位于整个 flash 介质的尾部区域, 由 10 个擦除单位 的连续的 block 组成。正常写入过程需要从这 10 个 Block 中找到一个作为备份 block, 数 据首先写到该 b。
31、lock, 然后拷贝到目标 block。 0044 写时备份区中 block 的数量可以根据整个磁盘大小和使用频繁程度决定。例如, 使用频率越大, block 的数量也应越多。磁盘较小时, 为保证用户数据的存储, block 的数量 可少一些。 0045 步骤 302 : 进行写操作时, 将待写入数据写到从写时备份区选择的备份物理块 block 上, 记录正在写入标记、 以及所述备份 block 和待写入的目标 block 的全局位置索引 到非易失性随机访问存储器 Nvram。 0046 这里的写操作分两种情况, 第一种情况 : 所述目标 block 不为空, 之前已存储有数 据, 需要在已存。
32、储有数据的所述目标 block 上改写数据 ; 第二种情况 : 所述目标 block 的内 容为空, 需要在内容为空的所述目标 block 上写入数据。下面分别进行具体描述。 0047 当所述写操作是在已存储有数据的所述目标block改写数据时, 如图5所示, 包括 以下步骤 : 0048 S1、 找到待改写的目标 block。 0049 S2、 将所述目标 block 上已存储的数据写入随机存储器 Ram, 在所述 Ram 中对所述 数据进行改写。 0050 根据nor flash的特性, 改写数据不能直接在nor flash上进行, 因此, 此处, 先将 目标 block 上的数据写入 R。
33、am, 然后在 Ram 中对数据进行改写。 0051 S3、 从写时备份区选择一个 block 作为备份 block, 将所述 Ram 中改写后的数据写 到所述备份 block 上。 0052 从写时备份区选择 block 时可以根据实际需要来进行选择, 选择方式可以有多 种, 例如可随机选择, 也可采用如下方法 : 写时备份区的block数量记为N, N为正整数, 其中 按顺序第一个block的全局位置索引记为M, 上一次使用的备份block的全局位置索引记为 K, 判断 K+1 是否小于 M+N, 如果是, 从写时备份区选择全局位置索引为 K+1 的 block 作为备 份 block, 。
34、否则, 从写时备份区选择全局位置索引为 M 的 block 作为备份 block。如此, 可保 证写时备份区的各个 block 被轮流使用, 使用频率相当, 保持负载均衡, 延长使用寿命。 0053 例如, 假设写时备份区由 10 个连续的 block 组成, 第一个 block 的全局位置 索引为 990, 上一次使用的备份 block 的全局位置索引为 993, 则判断 994 是否小于 990+10=1000, 显然是, 因此, 从写时备份区选择全局位置索引为994的block作为当前的备 份 block。 0054 S4、 记录正在写入标记到非易失性随机访问存储器 Nvram, 同时记。
35、录所述备份 block 和目标 block 的全局位置索引到 Nvram。 说 明 书 CN 103176920 A 8 5/7 页 9 0055 即记录正在写入标记、 所述备份 block 和目标 block 的全局位置索引到掉电不易 失位置, 所述正在写入标记通过使用一个比特位进行 0、 1 赋值就可简单实现, 保证即使发 生异常掉电, 也能从 Nvram 中找到上述记录。后续如果发生异常掉电, 设备重启时可以根据 Nvram 中的正在写入标记及所述全局位置索引, 继续完成对 flash 的写操作过程。 0056 S5、 擦除所述目标 block。 0057 所述目标 block 上已存储。
36、有数据, 对其进行改写时就需要先擦除目标 block 上原 有的数据, 否则无法写入。 0058 S6、 将所述备份 block 上的数据写到所述目标 block 上。 0059 所述将所述备份 block 上的数据写到所述目标 block 上时, 需要先将所述备份 block 上的数据写入随机存储器 Ram, 再将所述 Ram 中的数据写到所述目标 block。 0060 S7、 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局位置 索引。 0061 S8、 擦除所述备份 block。 0062 步骤 S7、 S8 是为了保证下次写操作的正常进行。 。
37、0063 当所述写操作是在内容为空的所述目标block写入数据时, 如图6所示, 包括以下 步骤 : 0064 T1、 找到待写入的目标 block。 0065 T2、 将待写入 flash 的数据写入随机存储器 Ram。 0066 T3、 从写时备份区选择一个block作为备份block, 将步骤T2所述Ram中的数据写 到所述备份 block 上。 0067 需要先写入 Ram, 再将所述 Ram 中的数据写入备份 block。 0068 T4、 记录正在写入标记到非易失性随机访问存储器 Nvram, 同时记录所述备份 block 和目标 block 的全局位置索引到 Nvram。 006。
38、9 T5、 将所述备份 block 上的数据写到所述目标 block 上。 0070 T6、 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局位置 索引。 0071 T7、 擦除所述备份 block。 0072 相对于现有写操作过程, 本申请实施例在写操作过程中增加了正在写入标记, 引 入了写时备份区, 并且将备份 block 和待写入的目标 block 的全局位置索引记录在了非易 失性随机访问存储器 Nvram 中, 以实现在异常掉电重启时可以继续完成写操作过程, 实现 对 flash 文件系统的有效保护。设备重启时的步骤如下步骤 303. 0073。
39、 步骤 303 : 设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行写操作, 从 Nvram中取出所述备份block和目标block的全局位置索引, 拷贝所述备份block的数据到 所述目标 block。 0074 当正在执行写操作时, 设备由于电源故障等原因可能会引起异常掉电, 当设备掉 电后重启时, 判断正在写入标记是否已置位 : 0075 如果正在写入标记已置位, 表明重启前是异常掉电, 需要继续上次未完成的写操 作过程, 具体执行步骤如下 : 0076 首先, 禁止对 flash 进行写操作, 即禁止其他用户对 flash 进行写操作 (本地可以 说 明 书 CN 1。
40、03176920 A 9 6/7 页 10 对 flash 进行操作) , 然后从 Nvram 中取出所述备份 block 和目标 block 的全局位置索引, 根据所述全局位置索引找到所述备份block和目标block, 判断所述目标block是否已被擦 除, 即通过读取所述目标Block的内容, 检查是否每个字节都为0xff来判断。 如果所述目标 block 已被擦除, 即内容为空, 每个字节均为 0xff, 则拷贝所述备份 block 的数据到所述目 标 block ; 如果所述目标 block 没有被擦除, 还存储有数据, 则擦除所述目标 block, 也就是 把所述目标 Block 。
41、的内容全部写为 0xff, 再拷贝所述备份 block 的数据到所述目标 block, 完成异常掉电未完成的写入过程。 0077 最后, 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局位 置索引, 擦除写时备份区的全部数据, 以便于投入下一次的正常使用。 因为有可能在上一次 执行完写操作后, 擦除备份 block 时发生异常掉电, 使得备份 block 中还存储有数据。 0078 如果正在写入标记没有置位, 表明不需要启动数据继续写入流程, 此时, 需要擦除 写时备份区的所有数据, 准备投入下一次使用。 因为有可能在上一次执行写操作时, 将待写 入数。
42、据写到备份 block 后和记录正在写入标记前发生异常掉电了, 使得备份 block 中还存 储有数据。 0079 本申请实施例的装置功能模块结构如图7所示, 一种Nor flash掉电保护装置, 包 括 : 写时备份区添加模块、 数据备份模块、 标记存储模块、 标记获取模块和数据恢复模块, 其 中 : 0080 写时备份区添加模块, 用于在针对 Nor flash 的类文件配置表 FAT 文件系统结构 中增加写时备份区 ; 0081 数据备份模块, 用于进行写操作时, 将待写入数据写到从写时备份区选择的备份 物理块 block 上 ; 0082 标记存储模块, 用于在将待写入数据写到从写时备。
43、份区选择的备份 block 上之 后, 记录正在写入标记、 以及所述备份block和待写入的目标block的全局位置索引到非易 失性随机访问存储器 Nvram ; 0083 标记获取模块, 用于设备重启时, 如果正在写入标记已置位, 则禁止对 flash 进行 写操作, 从 Nvram 中取出所述备份 block 和目标 block 的全局位置索引 ; 0084 数据恢复模块, 用于在取出所述备份block和目标block的全局位置索引后, 拷贝 所述备份 block 的数据到所述目标 block。 0085 较佳地, 所述写时备份区由一个 block 或一个以上连续的 block 组成。 0。
44、086 较佳地, 所述数据备份模块在将待写入数据写到从写时备份区选择的备份 block 上时, 所述从写时备份区选择备份 block, 包括 : 0087 写时备份区的 block 数量记为 N, N 为正整数, 其中按顺序第一个 block 的全局位 置索引记为 M, 上一次使用的备份 block 的全局位置索引记为 K, 判断 K+1 是否小于 M+N, 如 果是, 从写时备份区选择全局位置索引为K+1的block作为备份block, 否则, 从写时备份区 选择全局位置索引为 M 的 block 作为备份 block。 0088 当所述写操作是在已存储有数据的所述目标 block 上改写数。
45、据时, 0089 所述数据备份模块, 具体用于 : 将所述目标 block 上已存储的数据写入随机存 储器 Ram, 在所述 Ram 中对所述数据进行改写, 将所述 Ram 中改写后的数据写到所述备份 block 上 ; 说 明 书 CN 103176920 A 10 7/7 页 11 0090 所述装置进一步包括 : 0091 数据改写模块, 用于在所述记录正在写入标记、 以及所述备份 block 和待写入的 目标 block 的全局位置索引到 Nvram 之后, 擦除所述目标 block, 将所述备份 block 上的数 据写到所述目标 block 上。 0092 当所述写操作是在内容为空。
46、的所述目标 block 写入数据时, 0093 所述数据备份模块, 具体用于 : 将待写入数据写入随机存储器 Ram, 将所述 Ram 中 的数据写到所述备份 block 上 ; 0094 所述装置进一步包括 : 0095 数据写入模块, 用于在所述记录正在写入标记、 以及所述备份 block 和待写入的 目标block的全局位置索引到Nvram之后, 将所述备份block上的数据写到所述目标block 上 0096 较佳地, 所述数据恢复模块, 还用于在将所述备份 block 上的数据写到所述目标 block 上之后, 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 。
47、block 的全局位 置索引, 擦除所述备份 block。 0097 较佳地, 所述标记获取模块, 还用于在所述设备重启时, 如果正在写入标记没有置 位, 则擦除写时备份区的所有数据。 0098 较佳地, 所述数据恢复模块, 还用于在所述从Nvram中取出所述备份block和目标 block的全局位置索引之后和拷贝所述备份block的数据到所述目标block之前, 如果所述 目标 block 没有被擦除, 则擦除所述目标 block ; 如果所述目标 block 已被擦除, 则直接拷 贝所述备份 block 的数据到所述目标 block。 0099 较佳地, 所述数据恢复模块, 还用于在拷贝所。
48、述备份 block 的数据到所述目标 block 之后, 清除 Nvram 中的正在写入标记、 以及所述目标 block 和备份 block 的全局位置 索引, 擦除写时备份区的全部数据。 0100 本申请中, 通过引入写时备份区和正在写入标记, 写操作过程中如果异常掉电, 待 写入的数据可以在下次重启时继续写入, 可保证写入数据的有效性和完整性, 也可以使因 为掉电而出现数据紊乱的文件系统得到恢复, 从而实现对 flash 文件系统的有效保护。 0101 以上所述仅为本申请的较佳实施例而已, 并不用以限制本申请, 凡在本申请的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本申请保护的范围之内。 说 明 书 CN 103176920 A 11 1/6 页 12 图 1 说 明 书 附 图 CN 103176920 A 12 2/6 页 13 图 2 说 明 书 附 图 CN 103176920 A 13 3/6 页 14 图 3 图 4 说 明 书 附 图 CN 103176920 A 14 4/6 页 15 图 5 说 明 书 附 图 CN 103176920 A 15 5/6 页 16 图 6 说 明 书 附 图 CN 103176920 A 16 6/6 页 17 图 7 说 明 书 附 图 CN 103176920 A 17 。