玩转JTAG工具,使用JTAG Probe”逆向“硬件电路

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

9c3473d643f41e7ff80578c87f49b3a7.jpeg

目前能辅助类似工作的有两个软件: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:

bac4a50fdbc370474569bc37d483b426.png

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

e1dff51c2fb8f6ae85f00ff4c057ec66.png

注册成功:

69d2a7039c40c6d44fc3f4debb2a53f7.png

使用

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

0285868f8957c9c52f27771d16de2f66.png

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

25380cbd2c8ca366fdbb851e5aa2acd7.png

在TopJTAG上新建工程:

184724d776a748bc21406800f82a61ed.png

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

67b53d5c8f3318e86e0e3325308e5bca.png

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

496c2a17d5fc81aa295edae637a87cc3.png

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

cc5fd1e1367b0b8d3280997d23a07148.png

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

aaaac21348e56c687b8a9120e31c6f76.png

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文件验证完毕后就可以继续后面的操作了:

cd99f9a717c7deb52205cdd30ca048a9.png

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

d3c38d0adc5e67624bbd0d3eb6add77b.png

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

5040efca8d14a72be1839db10efac460.png

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

92899d09a080e71cc86f307945c5c652.png

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

bc04841156b0c7d1c27c5512557e787b.png

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

18972bfcfdc5f209757daa1392c17309.png

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

764b2ab85d71707b5f400e146442be33.jpeg

总结

目前,我估计很多人还没搞清楚怎么做”逆向“,其实很简单,对相关的引脚进行置高置低或者输入一个频率低一点的方波(有人测试过 Probe 的时间分辨率也就是毫秒级的)对引脚进行监测就可以看到相关哪个引脚发生变化,就能确定是芯片的哪个引脚。

I/O 可以手动设置名称,如果有约束文件,可以导入进来自动获取 I/O 名称。

这只是TopJTAG一个不怎么”光彩“的应用,其实其对软、硬件排故等其他方面还有很多应用,剩下的的就等大家慢慢去摸索了。

958f60eb25e7872596b3cb1598eb0eb9.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值