大家在一些二手网站上经常能看到一些没有配套资料(原理图等)的板子,而这些板子相对来说比较便宜,如果量大则可以用来做开发板,那么首先需要解决的就是”逆向“出原理图用来后续例程的开发。

目前能辅助类似工作的有两个软件:XJTAG和TopJTAG(我了解的),其中TopJTAG有和谐版所以就以其举例使用说明。
原理
JTAG 产生的最初目的是用于芯片测试,即 Boundary-scan 技术,常见规范有 IEEE1149.1、IEEE1149.6 和 IEEE1532 等,通过与规范兼容的设备,即可访问芯片的内部节点或 I/O。我们就利用JTAG这一特性,使用TopJTAG推断出相关的引脚。
安装
通过网盘分享的文件:TopJTAG Probe.zip 链接: https://pan.baidu.com/s/1WZE9Pkx5HSquyVmAd0BcGA?pwd=u4g7
解压后,打开下图两个exe:

按照下面步骤生成注册码:

注册成功:

使用
整个软件极其简洁,和常规的EDA软件布局类似。

先使用对应芯片厂家的EDA软件扫描到芯片:

在TopJTAG上新建工程:

选择对应的仿真器,Probe 支持很多主流仿真器,如下图:

按照自己使用的JTAG类型进行连接,我们本次使用FT4232做的Xilinx JTAG:

自动扫描目标板的 JTAG 链,显示链上的设备 ID 和生产商。扫描到芯片后就可以继续了:

接下来就是最重要的一步了,查找BSDL文件(该文件根据 IEEE 规范定义了设备信息。):

BSDL 文件可以从芯片生产商那里获得,比如 Altera MAX II 的 BSDL 页面为:
https://www.altera.com/support/devices/bsdl/11491/bsd-11491.html
ST 的 STM32 系列 BSDL 下载地址为:
https://www.st.com/internet/com/SOFTWARE_RESOURCES/HW_MODEL/BSDL_MODEL/stm32bsdl.zip
Xilinx的Versal, Zynq UltraScale+、 Zynq 7000 SoCs、UltraScale+, UltraScale, 7 series FPGAs的BSDL下载地址:
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/device-models.html
选择BSDL文件验证完毕后就可以继续后面的操作了:

窗口中就会显示相应的芯片信息了:

在左侧有引脚定义一栏点击右键,将 I/O 添加到波形窗口中。

同时由于我们要做的是外部硬件电路的检测,需要点击工具栏的 Instruction 按钮,选择 EXTEST 模式。这里的 SAMPLE 模式可监测芯片状态而不干扰其正常运行,INTEST 模式测试芯片内部逻辑,而对于 JTAG 链上一些可以忽略的设备可选择 BYPASS。

在波形窗口中对引脚输出电平置 0、置 1 或反转。

点击运行就可以查看效果了,同样的在运行中也可以改变引脚状态。

效果就是如下图,通过TopJTAG和JTAG点亮几个LED:

总结
目前,我估计很多人还没搞清楚怎么做”逆向“,其实很简单,对相关的引脚进行置高置低或者输入一个频率低一点的方波(有人测试过 Probe 的时间分辨率也就是毫秒级的)对引脚进行监测就可以看到相关哪个引脚发生变化,就能确定是芯片的哪个引脚。
I/O 可以手动设置名称,如果有约束文件,可以导入进来自动获取 I/O 名称。
这只是TopJTAG一个不怎么”光彩“的应用,其实其对软、硬件排故等其他方面还有很多应用,剩下的的就等大家慢慢去摸索了。

最后就是目前的版本不是最新的,谁有最新的版本可以在评论区分享一下~