[发明专利]一种用于NAND FLASH的系统掉电保护实现方法有效
申请号: | 201510965336.6 | 申请日: | 2015-12-21 |
公开(公告)号: | CN105589767B | 公开(公告)日: | 2018-07-31 |
发明(设计)人: | 张志永;宗宇;谢俊玲;谷羽;穆雅莉;李广才;赵微;刘银萍 | 申请(专利权)人: | 北京时代民芯科技有限公司;北京微电子技术研究所 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F12/16 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100076 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种用于NAND FLASH的系统掉电保护实现方法,包括以下步骤:一、将NAND FLASH内的所有块通过一级表、二级表和三级表进行映射管理;二、系统上电,加载一级表、二级表和三级表,恢复系统工作状态;三、依据表中数据,判断在数据更新过程中是否发生异常掉电;四、当NAND Flash存储的信息发生改变时,对一级表、二级表和三级表进行更新。本发明在新一级表、新二级表或新三级表被成功写入后,再擦除原一级表、原二级表或原三级表,且这些表在可查的地址范围内,因此系统在掉电重新上电后,系统完整保留了各表中的数据,能够根据各表中的数据,对系统状态进行恢复。 | ||
搜索关键词: | 一种 用于 nand flash 系统 掉电 保护 实现 方法 | ||
【主权项】:
1.一种用于NAND FLASH的系统掉电保护实现方法,其特征在于,包括以下步骤:一、将NAND FLASH的所有数据块分为七个部分,分别为一级表区、一级表备份区、二级表区、二级表备份区、三级表区、三级表备份区和其他数据块区;在一级表区选取用于存储一级表的数据块作为一级表块,在一级表备份区选取用于存储一级表备份的数据块作为一级表备份块,在二级表区选取用于存储二级表的数据块作为二级表块,在二级表备份区选取用于存储二级表备份的数据块作为二级表备份块,在三级表区选取用于存储三级表的数据块作为三级表块,在三级表备份区选取用于存储三级表备份的数据块作为三级表备份块;所述一级表用于存储一级表区的块地址和页地址、一级表备份区的块地址和页地址以及二级表区和二级表备份区的块地址;所述二级表用于存储三级表区和三级表备份区的块地址;所述三级表用于存储二级表区和二级表备份区的页地址、三级表区和三级表备份区的页地址及其他数据块区的块地址和页地址;二、加载一级表、二级表和三级表;三、当NAND Flash存储的信息发生改变时,对三级表、二级表或一级表进行更新,包括以下步骤:1)更新三级表:将改变后的三级表记载到内存中的待写入三级表中,并将待写入三级表中的更新次数加一;若原三级表块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表,转步骤3);若原三级表块中不存在空闲页,则在原二级表所指定的三级表区的块地址范围内重新分配一个除原三级表块的新的块,并将该新分配的块擦除;若新分配的块擦除成功则将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,转步骤3);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原二级表所指定的三级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,并将变化后的三级表区的块地址记载到内存中的待写入二级表,同时将待写入二级表中的更新次数加一;2)若二级表存储的信息发生变化,则更新二级表,否则转步骤4),更新二级表的方法为:若原二级表块中存在空闲页,则直接将待写入二级表写入空闲页中成为新二级表,转步骤1);若二级表块中不存在空闲页且二级表区有大于一个的块,则在原一级表所指定的二级表区的块地址范围内分配一个除原二级表块的新的块,并将该新分配的块擦除;若新分配的块擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若二级表块中不存在空闲页且二级表区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);3)若一级表存储的信息发生变化时,则更新一级表,否则转步骤4),更新一级表的方法为:若原一级表块中存在空闲页,则直接将待写入一级表写入空闲页中成为新一级表,转步骤4);若原一级表块中不存在空闲页,则在原一级表中所指定的一级表区的块地址范围内重新分配一个除原一级表块的新的块,并将该新分配的块擦除;若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表,该块作为新一级表块,将原一级表块擦除,转步骤4);若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在原一级表中所指定的一级表区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功后,将改变后的一级表区的块地址记载到待写入一级表中,将待写入一级表写入新分配的块中成为新一级表,将该块作为新一级表块,将原一级表块擦除,转步骤4);4)若此前更新过二级表而没有更新过二级表备份时,则更新二级表备份,否则转步骤5),更新二级表备份的方法为:若二级表备份块中存在空闲页,则直接将待写入二级表写入空闲页成为新二级表备份,转步骤1);若二级表备份块中不存在空闲页且二级表备份区有大于一个的块,则并在原一级表所指定的二级表备份区的块地址范围内再分配一个除原二级表备份块的新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级备份表,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若二级表备份块中不存在空闲页且二级表备份区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);5)若此前更新过一级表而没有更新过一级表备份,则更新一级表备份,否则更新结束,更新一级表备份的方法为:若原一级表备份块中存在空闲页,则直接将待写入一级表写入空闲页,更新结束;若原一级表备份块中不存在空闲页,则在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个除原一级表备份块的新的块并将该块擦除;若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,更新结束;若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功,并将改变后的一级表区的块地址范围记载到待写入一级表中,将待写入一级表的更新次数加一,将待写入一级表写入新分配的块中作为一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,回到步骤3)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京时代民芯科技有限公司;北京微电子技术研究所,未经北京时代民芯科技有限公司;北京微电子技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510965336.6/,转载请声明来源钻瓜专利网。