大家好!
在我们开始之前,先做一个简短的说明:
本文计划作为单片式存储设备引脚排列研究的简短指南。本文的主要目的不是逐步学习如何在所有可能的情况下搜索引脚排列,而是理解这个过程的主要原理和核心思想,这个过程相当复杂且需要大量经验。换句话说 – 本文按现状发布。我们并非声称当前的例子是最好的,我们所描述的所有工具和提示是世界上最佳选择。存在很多方法,我们只打算分享其中之一。

PC-3000产品是为数据恢复而生产的,但单片式存储设备引脚排列研究是一个额外的分支(顺便说一句,相当大),并不直接与我们的技术相关联。这是一个额外的市场,有其自身的"暗礁"、问题和利润。这就是为什么我们只提供概述信息,以便更好地理解和认识"我是否真的愿意花费生命来处理这个引脚排列研究?"。
那么,我们应该从哪里开始呢?当然是 – 从设备准备开始!
在我们的文章中,我们将从使用一个健康的单片式存储设备开始我们的研究路线。当然,有时即使我们只有损坏的单片式存储设备,也可以尝试寻找引脚排列。但这个过程会更加复杂,有时在长时间的尝试后可能不会提供任何结果。为什么我们应该使用健康的供体单片式存储设备?因为为了检测某些总线线路和命令线路,我们需要在单片式存储设备上进行写入操作。当然,在真实损坏的情况下,无法在受损的单片式存储设备上进行任何写入操作。因此,在开始之前我们应该具备以下3样主要的东西:

如果你没有耐心 – 最好根本不要开始这个过程。你将节省你的时间和精力。
好的,其他设备呢?让我们看看…

-
健康的单片式存储设备,其引脚排列与我们损坏的单片式存储设备相同。我们需要找到完全相同的型号,具有相同的容量和品牌,并且在芯片底部具有相同的技术引脚排列;
-
如果你能购买一个价格在6000-10000美元之间的好的逻辑分析仪 – 那将是完美的。但对于初学者,我们推荐使用价格在500-1000美元之间的基于PC的逻辑分析仪。我们可以推荐:
-
АКИП-9102 – 俄罗斯型号,具有32个通道和200MHz频率。它同样包含英文菜单,即使对于外国客户也方便使用;
-
GoodWill GLA-1032 – 与АКИП-9102几乎相同的孪生兄弟,具有32个通道,200MHz频率和几乎相同的界面。
-
实际上,你可以购买任何你想要的逻辑分析仪。主要条件 – 它应至少具有32个通道并支持200MHz频率。
-
在我们的示例中,我们将使用PC-3000 Flash和卡适配器,但在现实生活中,你可以使用普通的读卡器。唯一的问题是 – 在其上控制电源供应会更加复杂。有时我们需要将其打开/关闭;
-
电路PCB – 实际上,它只是一个特定的板,用于在MicroSD上更方便地焊接电线。你可以尝试在Aliexpress或Amazon上找到类似的板;
-
带有NAND信号描述的ONFI文档(对我们的任务非常有用!)。
步骤 1. 目标与首次连接
我们在寻找什么?我们试图找到所有技术输出信号,这将帮助我们找到引脚排列。在我们的示例中,我们将采用一个具有8位总线的普通MicroSD卡。最终,我们应该找到以下触点:

通常,VCC和GND不需要在技术引脚上找到。你可以直接使用默认的单片式存储设备接口来供电。但当然,有时GND和VCC引脚也可能出现在技术引脚排列上,我们建议检查所有引脚并在引脚图上也找到GND和VCC。这将帮助我们检测应从研究中排除的引脚。
让我们准备我们的单片式存储设备。如前所述,这是一个MicroSD卡,我们将其焊接到特殊的电路PCB上以便于操作过程。我们应该将所有目标引脚(不包括VCC和GND)焊上电线。这个准备的主要思想是 – 单片式存储设备应通过技术引脚焊接 + 应通过SD或microSD接口连接。在我们的示例中,我们放入microSD转SD适配器,以便在其上进行读写操作。

但焊接结构可能不同。这只是一个例子。

最后,我们应该将所有数字逻辑分析仪触点连接到我们的单片式存储设备,并准备好一切,像这样:

步骤 2. 逻辑分析仪界面与单片式存储设备初始化步骤
首先我们应该记住,每次当我们启动健康单片式存储设备的电源时,它会执行一些步骤以达到其初始化状态。以下是电源启动后发送到单片式存储设备的命令示例:


借助文档,我们可以尝试检测电源启动后我们的线路将如何变化。我们可以将逻辑分析仪的信号与我们的文档方案进行比较,最终 – 找到它们的值。
这是АКИП-9102逻辑分析仪软件的主屏幕。我们发现24条线路中,有8条连接到GND、VCC或在电源开启后状态不变。这就是为什么我们只保留其中的16条 – 那些值发生变化的线路。LA的设置如下所示:

另外,请注意基于PC的逻辑分析仪(以下简称LA)没有足够的内存来实时显示所有线路的变化。这就是为什么在电源开启后的前5-10秒内,LA会制作一个快照(位于屏幕下方),这将允许我们沿着它移动,改变比例尺并查看线路如何变化。
步骤 3. 引脚排列研究。命令线
使用NAND信号的文档,我们知道电源开启后发生小幅跳变的前4个触点 – 是CE、RE、R/B、WE。现在我们不知道它们各自的确切位置,但至少我们知道这4条线路 – 是我们的目标。

电源开启命令
接下来,让我们尝试检测我们的总线组以及WE、R/B位于何处。使用以下方案,我们将检测它们各自的位置。我们知道当WE下降时,I/Ox(总线)中的所有线路都应该上升。一段时间后,R/B也应该下降。让我们看看:


复位命令
然后,让我们尝试使用相同的算法找到CLE、ALE和RE:

CLE在WE下降时上升:

读取ID命令 (90h)
ALE在WE下降时上升,在CLE之后一段时间:

读取ID命令 (90h)
RE上下、上下、上下跳动:

读取ID命令 (90h)
最后,我们知道了WE、R/B和RE。现在,如果我们回到第一个屏幕,可以检测CE:

现在,所有命令线都已找到。下一步将是 – 搜索总线线路。
步骤 4. 总线线路检测
总线线路检测将是最复杂的步骤,因为在大多数情况下,我们必须向单片式存储设备写入字节并读取它们,以检测哪些线路发生了变化。但在我们的示例中,我们将描述另一种不需要任何写入操作的方法。
让我们更详细地检查我们的单片式存储设备。我们知道制造商是东芝,并且这个芯片的容量是8GB。使用关于芯片ID的信息,我们可以尝试想象我们单片式存储设备的前两个字节应该是什么:

然后,让我们尝试找到总线区域中的线路是如何变化的:

之后,让我们尝试将屏幕分割成总线线路发生变化的区域。这将帮助我们检测已读取的命令:

第二部分也是如此:

当然,在我们的示例中,我们将所有总线线路一个接一个地放在一起。在实际情况下,它们会是混合的。但这些信息将帮助你了解如何找到线路组以及如何检测所有I/O线路。
最后,我们可以说引脚排列已经找到。现在我们可以尝试开始焊接电线到真实的单片式存储设备上,并将其内容读取到DUMP文件中。

P.S. 变体2可以在这里看到。