大多数示波器,包括我的,都带有选项13和1F,但其余的就不那么常见了。
视频触发和高级DSP数学选项都是纯固件功能,但即使是12万采样点选项似乎也可以通过软件破解来启用,因为信号采集板有512KB的RAM可用于存储数据。
在这里,我将描述TDS 400系列如何管理选项启用,以及如何利用范围使其正常工作。
使用Ghidra和调试控制台,我弄清楚了作用域是如何管理硬件特性的:它有一个名为hwAccountantQuery的函数,它只有一个参数,我称之为‘Feature ID’。
HwAccountantQuery将为该功能ID返回一个整数值。这些值可以是布尔值(“是否存在某个功能”),也可以是DSP内存量等。
以下是我所能识别的非常不详尽的代码列表:
0x20d:作用域通道数0x20f:采集大小RAM0x216:ProbeD2MemSize0x248:cpu时钟周期0x255:InstrumentNameStringPtr0x271:hwProbeSpecialDiagModeActive0x2a0:hwProbeSpecialDiagopCount0x2a1:hwProbeSpecialDaigSeqId0x2b8:30000点->;值。
这是一个很大的IF-THEN-ELSE或CASE语句,调用特定功能ID的专用函数。
您看到_hwProbeTvTrigPresent()了吗?这就是如果要开启视频触发功能的check sif功能:
这就对了!要启用“选项05-视频触发”,您只需在非易失性RAM位置7中存储一个非零值!
这并不是一个令人震惊的新发现:许多在线消息来源已经提到了这一点,但从基本原则出发,通过追根溯源来证实这一点是很棒的。
在内部,高级数学数字信号处理器(Advanced Math DSP)被称为“MathPak”。与视频触发一样,hwAccountGetValue函数也会调用hwProbeMathPakPresent():
现在只需在调试控制台上发出以下两个命令:
成功!我现在很自豪地拥有一个支持完全过时的视频触发模式和FFT数学选项的示波器!
遗憾的是,case语句只是hwAccountGetValue函数的一小部分:大多数功能检查函数都是通过循环遍历结构数组来执行的,这些结构包含功能ID和指向检查函数的函数指针。在Ghidra中比较难理解,但我们已经知道用于启用选项的函数名以hwProbe开头。
使用Ghidra,我们可以对此进行过滤,这就给出了hwProbe1MOption和hwProbe1MPresent函数。
就像05和2F选项一样,我们需要在NVRAM中设置一个特定字节:
功能ID 0x216和0x20f也是结构数组的一部分。它们分别调用函数hwProbeD2MemSize和hwProbeAcqMemSize。
HwProbeD2MemSize和hwProbeAcqMemSize都运行测试以检查主板上填充的RAM大小。
现在很清楚为什么在更改NVRAM值之后没有启用选项1M:功能ID 0x20f可以(131071/0x1ffff大于0x1fffe),但功能ID 0x216不能(262143/0x3ffff小于0xffe)。
无论它的用途是什么,作用域中的“D2”内存量都太小。
这终于给了我一个关键的提示,让我开始查看范围内的其他PCB,并尝试找出是否有空置RAM芯片的地方。
我称之为数字信号处理器印制板。幸运的是,这是一块很容易从底盘上卸下的电路板,没有易碎的挠性电缆或连接器。
令人惊讶的是,Digikey仍然带有这些部件:它们现在是由Rochester Electronics制造的,只有70 ns或55 ns两种版本,但速度越快越好,所以这应该不是问题。
唯一的问题是最低订购量为100件。用256美元买一台有25年历史、售价190美元的示波器实在是太贵了!幸运的是,这些部件在中国各大芯片经纪公司都能买到:我在UtSource只花了1.81美元就能买到。即使购买了10台(作为冗余),运费也是成本中最大的一部分:
几天后,零件送到了我的前门,准备装在DSP板上:
请注意,我没有断开连接到电路板上的电池:它是用来为左侧的4个RAM芯片提供电源的,这些芯片被封装在一些透明的聚合物GU中。取下电池会导致校准数据丢失(至少他们是这么说的)。
我用普通的烙铁而不是热气枪来连接6个RAM:焊盘上有足够的焊料,这样做我最舒服。后来我把大部分引脚都拔出来了,我很高兴我确实拔出了,因为有一些开放的连接。
填满RAM后,是时候打开示波器的电源并检查增强手术的结果了!
TDS 420A是一个旧的示波器,即使启用了这三个新选项,它也远远不如我的Siglent 2304X,甚至我的HP 54825A(Windows 95!)。借款人。
120K采样点明显好于30K,但与Siglent的140M采样点相比仍然相形见绌。
我近距离观察了示波器的内部结构,我从头开始学习Ghidra并将其应用于一个真正的、不平凡的项目中,我在一个有25年历史的示波器上添加了RAM,它起作用了,我花了大量的深夜时间来解码固件,这样做我获得了不合理的乐趣。
目前,在我开始在glscope eclient中添加对Tektronix的支持时,范围仍将保留在我的工作台上。这就是获得与之共处的空间的全部意义所在!
如果它对我的使用真的太有限了,我可以随时在eBay上把它卖回去,这一次我会启用3个额外的功能。
关于在TDS420(不是420A?)上将CPU主板从8MB升级到16MB的故事。然后在NVRAM中进行FFT。
关于如何通过GPIB启用420A上的选项的具体评论。由于某些原因,我没能让它起作用。