本帖最后由 JUNDACHENGTS 于 2021-3-2 09:18 编辑
PC-3000FLASH 以最大成功率从NAND闪存设备恢复数据的主要数据校正方法上周,我们讨论了在ACE Lab免费网络研讨会期间如何使用PC-3000 Flash进行NAND Flash数据恢复的第一步。接下来,我们为您准备了有关恢复Flash案例的重要过程。对于想要学习如何以最有效,最智能的方式处理NAND闪存的数据恢复的初学者而言,该主题将特别有趣。对于已经有经验的数据恢复专家,本文可以作为处理Flash案例时主要数据校正方法的便捷清单。
![]()
首先,我们将讨论ECC校正和无效扇区的重读。 第1部分 ECC的理论。在NAND存储器芯片读取期间,可能会出现一些bit错误。bit错误的数量取决于以下因素: ►NAND存储芯片类型(SLC,MLC,TLC,QLC)
►触点的清洁度(脏芯片通常读效果更差)
►温度影响(芯片拆焊期间的高温可能会损坏存储单元)
►NAND单元的磨损程度(如果将NAND设备上的信息重写数百次,则小型单元电容器的质量会下降,并且读取时会出现很多错误)
►芯片质量低(如今,制造商经常通过使用小型技术工艺来压缩单元大小来降低生产成本,从而导致新闪存驱动器中出现错误) 如果要从闪存驱动器中获得最大恢复率,首先,需要修复尽可能多的ECC错误。否则,所有数据将被破坏,无法使用或部分破坏:![]()
纠错的基本方法是ECC算法-最简单的数据修复方法。通常,控制器将每页附加信息(称为备用区(SA))放入其中。它包含一些标记(例如,用于映像构建的标记),差异标记和纠错码(ECC)。 ECC是基于最初由用户信息写入的特殊扩展数据。这些扩展的数据有助于查找扇区/范围内的bit错误,并通过特殊的数学公式进行修复。 通常,ECC代码具有特殊的长度–选择用于纠错的字节数。 ECC字节数最多,可以修复每个扇区/范围内的更多错误。 来自旧SLC NAND芯片的公共MBR扇区,页大小为2112字节,扇区大小为528字节: ![]()
黄色–我们的数据区DA(512字节)
蓝色–我们在逻辑映像中的块顺序标记(6字节),用于构建映像的块编号
绿色–纠错码(10字节):
PC-3000软件正在尝试查找以下扇区中的所有bit错误:
![]()
并且它正在应用ECC代码来修复错误:
![]()
让我们继续练习。 我们有一个镁光的芯片,容量为4GB,芯片ID:0x2C44444B 我们强烈建议您仅在转换图上(而不是在芯片上)自动检测ECC。当您纠正芯片上的ECC时,可能会发生不同的错误。不要浪费时间校正芯片上的ECC(“芯片”节点下屏幕的左侧)。
![]()
![]()
![]()
但是,检测ECC并不总是那么容易。 在某些情况下,在检测和纠正ECC之前,应检查转储中是否有坏字节或应用XOR(主要用于ITE,SSS,AU控制器),并且只能在之后检测ECC。如果我们谈论的是旧的SLC和MLC NAND情况,那么在您进行页转换之前,将无法进行ECC校正。 第2部分 重读。从下面的示例中,您可以看到在这种情况下ECC校正的效果不佳。校正质量取决于许多因素,因此,当ECC校正结束时,您应该始终使用ECC信息来构建位图,以检查还没有校正多少个扇区。![]() ![]() ![]()
从屏幕截图中可以看到,在4GB中,我们有3.93GB的无效扇区。这意味着整个转储都被错误覆盖。 每个文件将被损坏。为了获得良好的bit错误原始恢复结果,错误率应小于5%,并且链数应小于100-500。如果您不注意链的数量,尽管您只有几MB的错误,但是您可能会遇到文件已损坏的情况。 这是重读应该派上用场的地方。 我们需要使用另一种数据校正方法– Readout开始修复ECC校正位错误后的剩余错误。 要开始读取过程,我们需要执行以下步骤:
![]()
最好选择“执行”,而不是“在后台运行(Shift)”,以查看当前正在修复的错误数量。
![]()
通常,我们建议默认使用所有设置。尝试读取的次数表示重新读取的次数。默认情况下,最好将此数字保持为1。如果读取有助于修复至少某些范围,则“如果成功”参数描述了额外的重读次数。
![]()
如我们所见,很快就得到了结果。某些范围已得到纠正,但其中有些甚至即使读出也没有得到纠正:
![]() 第3部分 读取重试。在在这种情况下,我们需要使用另一个功能–读取重试。这是一个特殊的NAND芯片命令,它允许NAND存储器芯片自行更改电压。NAND内核开始使用不同的电压电平进行数据修复。这是一种特殊的自修复系统,在所有QLC / TLC芯片和某些现代MLC芯片中都提供。目前,PC-3000闪存支持许多QLC / TLC / MLC存储芯片的ReadRetry模式。随着每周新的PC-3000 Flash资源更新,我们的开发人员将为其添加新的算法。
![]()
如果此“读取重试”命令复选框处于活动状态,您将能够获得非常好的读取结果:
![]()
在下面,您将看到一个非常有用的功能,用于真正难以破解的情况。 第4部分 复合的操作以节省时间。您可以使用“复合操作”功能节省一些时间。如果选择它,PC-3000软件将自动生成无效扇区的位图并询问您有关重读选项的信息。不过,您将无法选择链的数量,顺序等。因此,尽管通过一些自动操作可以节省您的时间,但最终,可能会发现所需的链没有得到纠正。![]() ![]() ![]()
请记住,如果您的案例中有多于1个芯片,则需要确保您重新读取了正确的芯片。有时,您可能会忘记在重新读取转储后再次将第一块芯片插入PC-3000 Flash Reader。因此,当ECC校正结束时,您可以尝试重新读取第一个芯片(转换图上的第0部分),同时将第二个芯片放入读取器中。因此,最后,您将获得两个应该有所不同的相似部分。因此,在开始重读过程之前,请注意阅读器中的芯片。
![]() 第5部分 电压控制。电压控制只能在最有问题的情况下提供帮助,即使在经过ECC校正和重新读取过程后,bit错误的数量仍然非常高。基本上,电压控制是一种ReadRetry操作,但处于手动模式。我们使用软件控制设置自己的电压以读取NAND芯片中的每一页,而不使用芯片自己设置电压。 每个芯片都知道它现在正在工作的温度。根据温度,芯片的电压也会发生变化。在下面,您可以看到带有温度和电压近似值的表格。有时,由于芯片内部问题以及电压错误,该表中的值可能会发生变化,因此您将无法重新读取扇区。
![]()
请注意,此选项仅在以下情况下可用:
►PC -3000 Flash Reader 3.0 +电源适配器(上一代)
►PC -3000 Flash Reader 4.0(最新一代,电源适配器已集成)
![]()
如何设置电压控制? 准备好所有可能的错误修复程序,但错误数量仍在几百MB左右时,我们应该尝试使用电压控制。通常,如果NAND存储器芯片支持ReadRetry,我们不应使用不同的电压-最好的结果将始终由ReadRetry提供! 但是有时您的芯片可能不支持ReadRetry方法。这就是为什么您需要尝试检测电压范围并开始校正过程的原因。 修复ECC,进行读出并构建坏扇区的映射之后,需要转到重读菜单并选择下一个功能:
![]()
请记住,如果单击“更多”,然后单击“ ReadRetry方法检查”,则可以检查ReadRetry成功率并选择最佳的成功率。在大多数情况下,它会自动选择最佳变量,但有时您需要手动进行操作。
![]() ![]() ![]() 现在出现了ReadRetry选项第6部分 温度控制。有时,即使使用电压控制进行重新读取后,也无法获得良好的重新读取结果。在这种情况下您该怎么办? 还有另一种方法可以通过“记录”温度来获得更好的重读结果。对于某些存储芯片,非常冷的温度(-15°С…-20°С)可能有助于增加芯片内部的电传递,以提供最佳的结果。
![]()
在某些情况下,您可以尝试加热芯片。如果将其加热到+ 80°C…140°C,您还将获得良好的重读效果。
![]()
但是您应该小心–高温会熔化塑料盖并损坏阅读器。 有关如何减少损坏芯片,读取器等的风险的更多信息,请单击此链接。 让我们总结一下要点: 1. 仅在转换图上检测和纠正ECC 2. 有时您需要使用其他功能来检测和纠正ECC(坏字节,XOR或页转换) 3. 为了获得良好的恢复结果,bit错误的数量应小于5%,未校正的链的数量应不大于200-300 4. 如果您有很多位错误,请使用“重读” 5. 如果您的芯片支持ReadRetry方法,请使用它代替其他选项 6. 在NAND芯片不支持ReadRetry的情况下,电压控制将非常有用 7. 如果您的芯片不支持ReadRetry,请尝试使用更多– ReadRetry模式检查(这种方式仅适用于现代QLC / MLC / TLC芯片) 8. 在某些AU,SSS,Phison和SM情况下,可以使用“重读位图生成器工具”来节省时间。 9. 在某些情况下,即使电压控制也无济于事,您可以尝试“改变”温度。
|