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