一种重组NAND‑Flash芯片数据的方法与流程

文档序号:14175268阅读:443来源:国知局
本发明属于数据恢复与电子取证领域,涉及flash芯片的数据恢复与取证,尤其涉及一种重组nand-flash芯片数据的方法。
背景技术
::nand-flash内存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、mp3随身听记忆卡、体积小巧的u盘等。但是,当nand-flash存储设备里存放重要数据而nand-flash存储设备出现故障、用户无法正常读写数据的时候,需要对nand-flash存储设备的存储芯片进行拆除,直接对芯片读取数据,再根据主控芯片的型号对数据进行重组。现有技术中,针对nand-flash存储设备的故障而进行有效恢复和重组的方法很少,有些恢复和重组的技术方案过于复杂,操作起来比较繁琐,恢复和重组成功率较低,尤其对于nand-flash芯片的主控芯片型号为sss6677的恢复和重组,现有技术中尚无具体的技术方案。技术实现要素:本发明针对现有技术的不足和上述问题,提出一种重组nand-flash芯片数据的方法,通过分析即updatetable管理表及bankstable管理表,寻址用户数据并重组,从而达到恢复数据的目的,所述方法包括以下步骤:s1:在所述nand-flash芯片的每一物理块的字节长度范围内,以每一物理块的首字节地址为起始地址,查找updatetable的标识;s2:根据所述updatetable的标识,查找并读取updatetable数据;s3:查找并获取所述nand-flash芯片的无效记录物理块的物理块序号,所述无效记录物理块为未存储数据的物理块;s4:查找bankstable的标识;s5:根据所述bankstable的标识,查找并读取用户数据。作为优选,所述nand-flash芯片的主控芯片型号为sss6677。作为优选,所述nand-flash芯片由多个物理块组成,每一所述物理块由多个页组成,每一所述页具有相同的页结构及相同的字节长度,每一所述页由多个扇区、与所述多个扇区各自一一对应的多个管理区及一个填充区组成。作为优选,所述步骤s2包括以下步骤:s201:查找所述updatetable数据的有效物理块序号:以所述updatetable的标识的后一字节地址为起始地址,每两字节为一组,顺序读取所述updatetable数据的物理块序号,其中,所述有效物理块序号以0x00000000为结束标识;s202:根据所述updatetable数据的物理块序号,顺序读取所述updatetable数据。作为优选,所述步骤s3中,其特征在于,所述步骤s3中,以所述updatetable的标识的首字节地址为起始地址,向后跳转,跳转的字节长度为一个扇区的字节长度与一个管理区的字节长度之和,以每两字节为一组,顺序读取所述无效物理块序号,所述无效物理块序号以0x00000000为结束标识。作为优选,所述步骤s5包括以下步骤:s501:以所述bankstable的标识的首字节地址为起始地址,向前跳转0x190个字节,以每两字节为一组,顺序读取所述bankstable的物理块序号,其中,所述bankstable的物理块序号以0xffff为结束标识;s502:判断所述bankstable的物理块序号是否等于0xffff,如果是,执行步骤s508,否则,执行步骤s503;s503:查找所述bankstable的物理块序号的首字节地址,以所述bankstable的物理块序号的首字节地址为起始地址,在所述bankstable的物理块的字节长度范围内查找最后一个所述bankstable的标识;s504:寻址所述用户数据的末地址:以最后一个所述bankstable的标识的首字节地址为起始地址,向前跳转0x191个字节,并标记当前地址为用户数据的物理块末地址;s505:寻址所述用户数据的首地址:以所述末地址为起始地址,向前查找第一个内容为0xff的字节地址,并以所述第一个内容为0xff的字节地址的后一字节地址作为所述用户数据的物理块首地址;s506:以当前地址为起始地址,以每两字节为一组,顺序读取所述用户数据的物理块序号,再以每两个所述组为一个重组单位,两个所述组的物理块之间以页交换的方式进行所述用户数据的重组。s507:判断下一物理块序号是否等于0xffff,如果是,执行步骤s508,否则执行步骤s506;s508:将所述重组的用户数据进行尾加,得到完整的用户数据。作为优选,所述updatetable的标识为0x000000bf000000000000,所述bankstable的标识为0x03000f000000bf00。与现有技术相比,本发明的有益效果是方法简便有效,数据的恢复和重组成功率高,并解决了现有技术中尚无针对主控芯片型号为sss6677的芯片的数据重组方案的问题,实现了对此类nand-flash存储设备的数据恢复与电子取证。附图说明图1为本发明的主流程图;图2为本发明的实施例中updatetable的数据结构图;图3为本发明的实施例中查找并读取updatetable的数据的处理流程图;图4为本发明的实施例中一个有效物理块的数据结构示意图;图5为本发明的实施例中无效物理块序号的数据结构图;图6为本发明的实施例中bankstable的数据结构图;图7a、7b为本发明的实施例中一个物理块的数据结构图;图8为本发明的实施例中用户数据的物理块序号的数据结构图。具体实施方式下面结合附图和实施例对本发明作进一步阐述。本实施例中,选用主控芯片型号为sss6677的nand-flash芯片的u盘作为数据重组的存储设备,该u盘由多个物理块组成,每一物理块由0x80个页组成,每一页具有相同的页结构且字节长度为0x10e0,每一页由8个扇区、8个管理区及一个填充区组成,每一扇区的字节长度为0x200,每一管理区的字节长度为0x10,填充区的字节长度为0x60;因此,每一物理块的字节长度为0x10e0*0x80,即0x87000。如图1所示,一种重组nand-flash芯片数据的方法,包括以下步骤:s1:在该u盘的每一物理块的字节长度0x87000范围内,以每一物理块的首字节地址为起始地址,查找updatetable的标识0x000000bf000000000000,如图2中的黑色矩形框的内容所示;s2:根据updatetable的标识0x000000bf000000000000,查找并读取updatetable数据,步骤s2包括图3所示的以下步骤:s201:查找updatetable数据的有效物理块序号:有效物理块用以存储各种数据;如图2所示,以updatetable的标识0x000000bf000000000000的后一字节地址为起始地址,每两字节为一组,顺序读取updatetable数据的物理块序号,如图2中粗黑下划线所示的0x0000表示第一个有效物理块,0x0001表示第二个有效物理块,0x0800表示第三个有效物理块,以此类推;其中,所述有效物理块序号以0x00000000为结束标识,如图2中的黑色椭圆框的内容所示;s202:根据图2中所示的updatetable数据的物理块序号,顺序读取updatetable数据,图4示出了第一个有效物理块的数据结构图,即有效物理块序号为0x0000的有效物理块的数据结构图,需要注意的是,图4未示出第一个有效物理块的完整数据结构图,该有效物理块的字节长度应为0x87000,图4仅示出该物理块开始部分的内容;s3:查找并获取nand-flash芯片的无效记录物理块的物理块序号,无效记录物理块为未存储数据的物理块;以图2中所示的updatetable的标识0x000000bf000000000000的首字节地址为起始地址,向后跳转,所跳转的字节长度为一个扇区的字节长度0x200加上一个管理区的字节长度0x10,即0x210,如图5所示,目前寻址到0x43edb210,以每两字节为一组,顺序读取所述无效物理块序号,图5中所示的黑色矩形框的内容为无效物理块序号,无效物理块序号以0x00000000为结束标识;其中,序号以黑色下划线所示的每两字节为一组,为了达到示例的目的,图5只对前4组无效物理块序号画出了黑色下划线;s4:查找bankstable的标识0x03000f000000bf00,如图6中黑色矩形框的内容所示;s5:根据bankstable的标识0x03000f000000bf00,查找并读取用户数据,步骤s5包括以下步骤:s501:如图6所示,以bankstable的标识0x03000f000000bf00的首字节地址为起始地址,向前跳转0x190个字节至0x00cfa860,以每两字节为一组,顺序读取bankstable的物理块序号,如图6中黑色下划线所示的内容;其中,bankstable的物理块序号以0xffff为结束标识;s502:判断bankstable的物理块序号是否等于0xffff,如果是,执行步骤s508,否则,执行步骤s503;s503:查找bankstable的物理块序号的首字节地址,以bankstable的物理块序号的首字节地址为起始地址,在bankstable的物理块的字节长度范围内查找最后一个bankstable的标识:如图6中物理块序号为0x0018为例,该物理块的首字节地址为0x18*0x87000,即寻址到0xca8000,如图7a所示,以0xca8000为起始地址,在bankstable的物理块的字节长度范围0x87000内查找最后一个bankstable的标识0x03000f000000bf00,如图7b中黑色矩形框的内容所示;s504:寻址用户数据的末地址:以最后一个bankstable的标识0x03000f000000bf00的首字节地址为起始地址,向前跳转0x191个字节,并标记当前地址为用户数据的物理块末地址,如图7b中黑色椭圆框所示的地址0x00cfa85f;s505:寻址用户数据的首地址:以该末地址0x00cfa85f为起始地址,向前查找第一个内容为0xff的字节,如图8中黑色椭圆框所示的字节,其地址为0x00cfa43f,并以该字节地址的后一字节地址0x00cfa440作为用户数据的物理块首地址,如图8所示;s506:如图8中黑色矩形框内黑色下划线所示,以当前地址0x00cfa440为起始地址,以每两字节为一组,顺序读取用户数据的物理块序号,例如0x006a为一组,0x0861为一组,以此类推;再以每两个组为一个重组单位,如图8中黑色矩形框的内容所示,两个组的物理块之间以页交换的方式进行用户数据的重组,本实施例中,以第一个黑色矩形框为例,将用户数据的物理块0x006a、0x0861为一个重组单位并进行两个物理块之间的页交换方式的用户数据的重组。s507:判断下一物理块序号是否等于0xffff,如果是,执行步骤s508,否则执行步骤s506;s508:将重组的用户数据进行尾加,得到完整的用户数据。应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1