Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26167
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-13 14:47
文章分类

全部博文(11)

文章存档

2015年(5)

2014年(6)

我的朋友

分类: 嵌入式

2015-04-02 15:15:47

 

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

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

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

简单地说,JTAG的工作原理可以归结为:在器件内部定义一个TAPTestAccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试和调试。

边界扫描

边界扫描(Boundary-Scan)即在芯片的每个输入输出管脚上都增加一个移位寄存器单元(Boundary-Scan Register Cell),因为这些移位寄存器单元分布在芯片的边界上,所以被称为边界扫描寄存器。在JTAG 调试中,边界扫描是一个很重要的概念,当需要调试芯片时,这些寄存器将芯片与外围电路隔离,实现对芯片输入输出信号的观察和控制:对于输入管脚,可以通过与之相连的边界扫描寄存器单元把数据加载到该管脚中;对于输出管脚,可以通过与之相连的边界扫描寄存器“捕获”(CAPTURE)该管脚上的输出信号;正常运行状态下,这些边界扫描寄存器单元对芯片是透明的,所以正常的运行不会受到影响。另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain),它可以串行的输入和输出,通过相应的时钟信号和控制信号,实现对处在调试状态下的芯片的输入和输出状态的观察和控制。

CPU外围,处理器内部包含了JTAG的硬件实现,并且向外界提供接口,也就是上面所说的TMSTCKTDITDO四个引脚。

·         这里的CPU:是指运算处理单元,只包含了内部寄存器以及运算单元等基本部件。

·         这里的处理器:是指CPU 扩展芯片,不是SoC。

说明:更多关于CPU和处理器之间的关系,请参考文章《》。


边界扫描链

JTAG如何用于芯片测试呢? 其中用到的最主要部件就是边界扫描链。命名为边界扫描链,是由于它位置处于处理器的边界上。

我们知道CPU是通过引脚与外围交流的,所有的数据都会通过引脚输入或者输出,而JTAG就是通过监控引脚的信号达到芯片测试的目的。而边界扫描链就是在引脚上的一个部件。如下图:

边界扫描链位置

边界扫描链位置

通过边界扫描链,当有信号输入的时候,边界扫描链就能获取信号,当CPU要输出信号的时候,边界扫描链也能获取要输出的信号。另外,也可以通过边界扫描链来直接向外部输出信号。

无论是信号的抓取还是输出,都需要有接口来保存这些信号,TDI 跟 TDO 就是做这样一些工作的。如图:

JTAG TDI TDO示意图

JTAG TDI TDO示意图

本来边界扫描链保存着引脚上的信号,当通过TDI引脚输入我们自己的信号的时候,会发生沿上面红线方向的移位操作,

TDI —— 边界扫描链 —— TDO

就能从TDO获取边界扫描链上的信号,我们从TDI输入的信号也会到边界扫描链上去。

在CPU跟外界通信的引脚上的数据无非就是 指令  数据信号(包括地址跟数据) 两种。但是这两者的结合形成了一个完整的程序,能对它们进行监控就表明我们能进行程序的调试。一般的芯片都会提供几条独立的边界扫描链,对边界扫描链的控制主要是通过 TAP(Test Access Port) Controller来完成的。

测试访问口TAP

TAP(TestAccessPort)是一个通用的端口,通过TAP 可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP控制器(TAPController)来完成的。下面先 分别介绍一下TAP的几个接口信号及其作用。其中,前4个信号在IEEE1149.1标准里是强制要求的。

·         TCK:时钟信号,为TAP的操作提供了一个独立的、基本的时钟信号。

·         TMS:模式选择信号,用于控制TAP状态机的转换。

·         TDI:数据输入信号。

·         TDO:数据输出信号。

·         TRST:复位信号,可以用来对TAPController进行复位(初始化)。这个信号接口在IEEE1149.1标准里并不是强制要求的,因为通过TMS也可以对TAPController进行复位。

·         STCK:时钟返回信号,在IEEE1149.1标准里非强制要求。

简单地说,PC机对目标板的调试就是通过TAP接口完成对相关数据寄存器(DR)指令寄存器(IR)的访问

系统上电后,TAPController 首先进入 Test-LogicReset 状态,然后依次进入Run-Test/IdleSelcct-DR- ScanSelect-IR-ScanCapture-IRShift-IRExitl-IRUpdate-IR状态,最后回到 Run- Tcst/Idle 状态。在此过程中,状态的转移都是通过TCK信号进行驱动(上升沿),通过TMS信号对TAP的状态进行选择转换的。其中,

在 Capture-IR状态下,一个特定的逻辑序列被加载到指令寄存器中;

在Shift-IR状态下,可以将一条特定的指令送到指令寄存器中;

在 Update—IR状态下,刚才输入到指令寄存器中的指令将用来更新指令寄存器。

最后,系统又回到Run—Test/Idle状态,指令生效,完成对指令寄存器的访问。

当系统又返回到Run—Test/Idle状态后,根据前面指令寄存器的内容选定所需要的数据寄存器,开始执行对数据寄存器的工作。其基本原理与指令寄存器的访问完全相同,依次为seIect—DR—ScanCapture—DRShift—DExitlDRUpdate—DR, 最后回到 Run-Tcst/Idle 状态。通过TDl和TDO,就可以将新的数据加载到数据寄存器中。经过一个周期后,就可以捕获数据寄存器中的数据,完 成对与数据寄存器的每个寄存器单元相连的芯片引脚的数据更新,也完成了对数据寄存器的访问。

 http://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html

阅读(527) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~