JTAG

2020-09-14 17:37:32 浏览数 (1)

JTAG 简介

JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、FPGA 器件等。标准的 JTAG 接口是4线:TMS 、 TCK 、TDI 、TDO ,分别为模式选择、时钟、数据输入和数据输出线。

JTAG 最初是用来对芯片进行测试的,基本原理是在器件内部定义一个 TAP (Test Access Port:测试访问口)通过专用的 JTAG测试工具对进行内部节点进行测试。JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。现在,JTAG 接口还常用于对FLASH等器件进行编程。

JTAG 编程方式是在线编程,传统生产流程中先对芯片进行预编程实现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用 JTAG 编程,从而大大加快工程进度。JTAG 接口可对 PSD 芯片内部的所有部件进行编程。

JTAG 接口定义

  • Test Clock Input (TCK)

TCK 在 IEEE1149.1 标准里是强制要求的。TCK 为 TAP 的操作提供了一个独立的、基本的时钟信号,TAP 的所有操作都是通过这个时钟信号来驱动的。

  • Test Mode Selection Input (TMS)

TMS 信号在 TCK 的上升沿有效。TMS 在 IEEE1149.1 标准里是强制要求的。TMS 信号用来控制 TAP 状态机的转换。通过TMS 信号,可以控制 TAP 在不同的状态间相互转换。

  • Test Data Input (TDI)

TDI 在 IEEE1149.1 标准里是强制要求的。TDI 是数据输入的接口。所有要输入到特定寄存器的数据都是通过 TDI 接口一位一位串行输入的(由 TCK 驱动)。

  • Test Data Output (TDO)

TDO 在 IEEE1149.1 标准里是强制要求的。TDO 是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过 TDO 接口一位一位串行输出的(由TCK驱动)。

  • Test Reset Input (TRST)

这个信号接口在 IEEE 1149.1 标准里是可选的,并不是强制要求的。TRST 可以用来对 TAP Controller 进行复位(初始化)。因为通过 TMS 也可以对TAP Controll 进行复位(初始化)。所以有四线JTAG与五线JTAG之分。

-VTREF

接口信号电平参考电压一般直接连接 Vsupply 。这个可以用来确定 ARM 的 JTAG 接口使用的逻辑电平(比如3.3V还是5.0V)

  • Return Test Clock ( RTCK)

可选项,由目标端反馈给仿真器的时钟信号,用来同步 TCK 信号的产生,不使用时直接接地。

  • System Reset (nSRST)

可选项,与目标板上的系统复位信号相连,可以直接对目标系统复位。同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻。

  • USER IN

用户自定义输入。可以接到一个 IO 上,用来接受上位机的控制。

  • USER OUT

用户自定义输出。可以接到一个 IO 上,用来向上位机的反馈一个状态

由于JTAG经常使用排线连接,为了增强抗干扰能力,在每条信号线间加上地线就出现了这种20针的接口。但事实上,RTCK、USER IN、USER OUT一般都不使用,于是还有一种14针的接口。对于实际开发应用来说,由于实验室电源稳定,电磁环境较好,干扰不大。

ARM J-link仿真器

JTAG仿真器

JTAG 工作原理

jtag如何用于芯片测试呢?其中用到的最主要部件就是边界扫描链。命名为边界扫描链,是由于它位置处于处理器的边界上。我们知道cpu是通过引脚与外围交流的,所有的数据都会通过引脚输入或者输出,而jtag就是通过监控引脚的信号达到芯片测试的目的。而边界扫描链就是在引脚上的一个部件。如下图:

通过边界扫描链,当有信号输入的时候,边界扫描链就能获取信号,当cpu要输出信号的时候,边界扫描链也能获取要输出的信号。另外也可以通过边界扫描链来直接向外部输出信号。无论是信号的抓取还是输出,都需要有接口来保存这些信号,TDI跟TDO就是做这样一些工作的。

边界扫描链保存着引脚上的信号,当通过TDI引脚输入我们自己的信号的时候,会发生沿上面红线方向的移位操作,TDI ——〉边界扫描链 —— 〉 TDO 就能从 TDO 获取边界扫描链上的信号,我们从TDI输入的信号也会到边界扫描链上去

一个完整的软件断点调试示意图如下:

ARM JTAG 调试原理

长按二维码关注公众号后台回复【ARM_JTAG】可获取PDF

参考链接

  1. JTAG基本原理与调试
代码语言:javascript复制
https://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html
  1. JTAG各类接口针脚定义及含义
代码语言:javascript复制
https://www.cnblogs.com/jeakon/archive/2012/10/07/2813683.html
  1. JTAG - Insight into JTAG(这篇讲的最透彻)
代码语言:javascript复制
https://www.cnblogs.com/iamlvshijie/archive/2012/04/14/2486189.html

扫码关注 一起畅聊

深耕在FPGA 扎根于视频领域

卓越于神经网络

0 人点赞