《什么是jtag?jtag是什么意思?》由会员分享,可在线阅读,更多相关《什么是jtag?jtag是什么意思?(6页珍藏版)》请在金锄头文库上搜索。
1、什么是什么是 JTAGJTAG?JTAGJTAG 是什么意思?是什么意思?什么是 JTAG?JTAG 是什么意思?JTAG 是英文“Joint Test Action Group(联合测试行为组织) ”的简写,该组织成立于 1985 年,是由几家主要的电子制造商发起制订的 PCB 和 IC 测试标准。JTAG 建议于 1990 年被 IEEE 批准为IEEE1149.1-1990 测试访问端口和边界扫描结构标准。该标准规定了进行边界扫描所需要的硬件和软件。自从 1990 年批准后,IEEE 分别于 1993 年和 1995 年对该标准作了补充,形成了现在使用的IEEE1149.1a-1993
2、和 IEEE1149.1b-1994。JTAG 主要应用于:电路的边界扫描测试和可编程芯片的在系统编程。JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1 兼容) ,主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、FPGA 器件等。标准的JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 JTAG 最初是用来对芯片进行测试的,JTAG 的基本原理是在器件内部定义一个 TAP(Test Access Port;测试访问口)通过专用的 JTAG测试
3、工具对进行内部节点进行测试。JTAG 测试允许多个器件通过JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。现在,JTAG 接口还常用于实现 ISP(In-System Programmable在线编程) ,对 FLASH 等器件进行编程。 JTAG 编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用 JTAG 编程,从而大大加快工程进度。JTAG 接口可对 PSD 芯片内部的所有部件进行编程具有 JTAG 口的芯片都有如下 JTAG 引脚定义: TCK测试时钟输入;TDI测试数据输入,数据通过 TDI
4、输入 JTAG 口;TDO测试数据输出,数据通过 TDO 从 JTAG 口输出;TMS测试模式选择,TMS 用来设置 JTAG 口处于某种特定的测试模式。可选引脚 TRST测试复位,输入引脚,低电平有效。含有 JTAG 口的芯片种类较多,如 CPU、DSP、CPLD 等。JTAG 内部有一个状态机,称为 TAP 控制器。TAP 控制器的状态机通过 TCK 和 TMS 进行状态的改变,实现数据和指令的输入。图 1 为TAP 控制器的状态机框图。JTAG 芯片的边界扫描寄存器JTAG 标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给 IC 芯片的相应引脚,每一个独立的单元称为 BSC(Bo
5、undary-Scan Cell)边界扫描单元。这个串联的 BSC 在 IC 内部构成 JTAG 回路,所有的 BSR(Boundary-Scan Register)边界扫描寄存器通过JTAG 测试激活,平时这些引脚保持正常的 IC 功能。图 2 为具有JTAG 口的 IC 内部 BSR 单元与引脚的关系。JTAG 在线写 Flash 的硬件电路设计和与 PC 的连接方式以含 JTAG 接口的 StrongARM SA1110 为例,Flash 为 Intel 28F128J32 16MB 容量。SA1110 的 JTAG 的 TCK、TDI、TMS、TDO 分别接 PC 并口的 2、3、4、
6、11 线上,通过程序将对 JTAG 口的控制指令和目标代码从 PC 的并口写入 JTAG 的 BSR 中。在设计 PCB 时,必须将 SA1110 的数据线和地址线及控制线与 Flash 的地线线、数据线和控制线相连。因 SA1110 的数据线、地址线及控制线的引脚上都有其相应 BSC,只要用 JTAG 指令将数据、地址及控制信号送到其 BSC 中,就可通过 BSC 对应的引脚将信号送给 Flash,实现对 Flash 的操作。JTAG 的系统板设计和连线关系如图 3 所示。通过使用 TAP 状态机的指令实行对 Flash 的操作通过 TCK、TMS 的设置,可将 JTAG 设置为接收指令或数
7、据状态。JTAG 常用指令如下:SAMPLE/PRELOAD用此指令采样 BSC 内容或将数据写入 BSC 单元;EXTEST当执行此指令时,BSC 的内容通过引脚送到其连接的相应芯片的引脚,我们就是通过这种指令实现在线写 Flash 的;BYPASS此指令将一个一位寄存器轩于 BSC 的移位回路中,即仅有一个一位寄存器处于 TDI 和 TDO 之间。在 PCB 电路设计好后,即可用程序先将对 JTAG 的控制指令,通过TDI 送入 JTAG 控制器的指令寄存器中。再通过 TDI 将要写 Flash 的地址、数据及控制线信号入 BSR 中,并将数据锁存到 BSC 中,用EXTEST 指令通过
8、BSC 将写入 Flash。软件编程在线写 Flash 的程序用 Turbo C 编写。程序使用 PC 的并行口,将程序通过含有 JTAG 的芯片写入 Flash 芯片。程序先对 PC 的并口初始化,对 JTAG 口复位和测试,并读 Flash,判断是否加锁。如加锁,必须先解锁,方可进行操作。写 Flash 之前,必须对其先擦除。将JTAG 芯片设置在 EXTEST 模式,通过 PC 的并口,将目标文件通过JTAG 写入 Flash,并在烧写完成后进行校验。程序主流程如图 4 所示。通过 JTAG 的读芯片 ID 子程序如下:void id_command(void)putp(1,0,IP);
9、 /Run-Test/Idle;使 JTAG 复位putp(1,0,IP); /Run-Test/Idleputp(1,0,IP); /Run-Test/Idleputp(1,0,IP); /Run-Test/Idleputp(1,1,IP);putp(1,1,IP); /选择指令寄存器putp(1,0,IP); /捕获指令寄存器putp(1,0,IP); /移位指令寄存器putp(0,0,IP); /SA1110JTAG 口指令长度 5 位,IDCODE 为 01100putp(1,0,IP);putp(1,0,IP);putp(0,0,IP);putp(0,0,IP);putp(0,1,I
10、P); /退出指令寄存器putp(1,1,IP); /更新指令寄存器,执行指令寄存器中的指令putp(1,0,IP); /Run-Test/Idleputp(1,0,IP); /Run-Test/Idleputp(1,0,IP); /Run-Test/Idleputp(1,1,IP);putp(1,0,IP);if(check_id(SA1110ID)error_out(“failed to read device ID for the SA-1110“);putp(1,1,IP); /退出数据寄存器putp(1,1,IP); /更新数据寄存器putp(1,0,IP); /Run-Test/I
11、dle,使 JTAG 复位putp(1,0,IP); /Run-Test/Idleputp(1,0,IP); /Run-Test/Idle电路设计和编程中的注意事项Flash 芯片的 WE、CE、OE 等控制线必须与 SA1110 的 BSR 相连。只有这样,才能通过 BSR 控制 Flash 的相应引脚。JTAG 口与 PC 并口的连接线要尽量短,原则上不大于 15cm。Flash 在擦写和编程时所需的工作电流较大,在选用系统的供电芯片时,必须加以考虑。为提高对 Flash 的编程速度,尽量使 TCK 不低于 6MHz,可编写烧写 Flash 程序时实现。通常所说的 JTAG 大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于 Debug;一般支持 JTAG 的 CPU 内都包含了这两个模块。 一个含有 JTAG Debug 接口模块的 CPU,只要时钟正常,就可以通过JTAG 接口访问 CPU 的内部寄存器和挂在 CPU 总线上的设备,如FLASH,RAM,SOC(比如 4510B,44Box,AT91M 系列)内置模块的寄存器,象 UART,Timers,GPIO 等等的寄存器。 上面说的只是 JTAG 接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。