转自: http://blog.ednchina.com/playlinus/35125/message.aspx
A. JTAG简述
JTAG - Joint Test Active Group 是一种国际标准测试协议(IEEE1149.1兼容) , 主要用于芯片内部测试. 现在多数高级器件都支持JTAG协议,如DSP,FPGA器件等.标准的JTAG接口是4线: TMS - TCK - TDI -TDO , 分别为模式选择,时钟,数据输入,数据输出线 .
JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义了一个TAP(Test Access Port),通过专用的JTAG测试工具对内部节点进行测试. JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链, 能实现对各个器件分别测试. 现在JTAG接口还常用于实现ISP等,对FLASH等器件进行编程. JTAG编程方式是在线编程,传统生产方式中对芯片进行预编程先再装到板子上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度. JTAG接口可对PSD芯片内部的所有部件进行编程.
具有JTAG接口的芯片都有下列引脚定义. TCK : 测试时钟输入 . TDI: 测试数据输入,数据通过TDI输入JTAG口. TDO:测试数据输出,数据通过TDO从JTAG口输出. TMS:测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式.可选引脚TRST:测试复位,输入引脚,低电平有效. 含有JTAG接口的芯片种类比较多:CPU , DSP ,CPLD等.JTAG内部有一个状态机,称为TAP控制器.TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入.
JTAG标准定义了一个串行的移位寄存器,寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元.这个串联的BSC在IC内部构成了JTAG回路,所有的BSR(Boundary-Scan-Register)通过JTAG测试激活,平时这些引脚保持正常的IC功能.
以含有JTAG接口的StrongARM SA1110为例,Flash为intel的28F128J32 16M的容量.SA1110的JTAG的TCK,TMS,TDI,TDO分别接PC并口的2,3,4,11线上,通过程序对JTAG口的控制指令和目标代码从PC的并口写入JTAG的BSR中.在设计PCB时必须将SA1110的数据线,地址线及控制线与FLASH的地址线,数据线,控制线相连.因SA1110的数据线,地址线及控制线引脚上都有相应的BSC,只要用JTAG指令将数据,地址及控制信号送到其BSC中,就可以通过BSC对应的引脚将信号送给FLASH,实现对FLASH的操作.
通过对TCK,TMS等的设置,可以将JTAG设置为接收指令或数据状态,JTAG常用指令如下: SAMPLE/PRELOAD: 用此指令采样BSC内容或将数据写入BSC单元. EXTEST: 当执行此指令时,BSC的内容通过引脚送到与其连接的相应芯片的引脚,我们就通过这种指令实现在线写FLASH. BYPASS: 此指令将一个移位寄存器轩于移位回路中,即仅有一个移位寄存器处于TDI和TDO之间. 在PCB电路设计好后,即可用程序先将对JTAG的控制指令,通过TDI送入JTAG控制器的指令寄存器中.再通过TDI将要写flash的地址,数据及控制线信号入BSR中,并将数据锁存到BSC中,用EXTEST指令通过BSC将写入FLASH.
电路设计和编程中的注意事项. 1.FLASH芯片的WE,CE,OE等控制线必须与SA1110的BSR相连,只有这样才能通过BSR控制FLASH的相应引脚. 2.JTAG口和PC并口的连接线要尽量短,原则上不大于15CM. 3.FLASH在擦除和编程时所需的工作电流比较大,在选用系统的供电芯片时必须加以考虑. 4.为提高FLASH的编程速度,尽量使TCK不低于6MHZ,可编写烧写FLASH程序时实现.
B. JTAG引脚定义
1.TCK 为TAP操作提供一个独立、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的
2.TMS用来控制TAP状态机的转换,通过TMS信号可以控制TAP在不同的状态间相互转换,TMS信号在TCK信号的上升沿有效
3.TDI是数据输入的接口,所有输入到特定寄存器的数据都要通过TDI一位一位串行输入的
4.TDO是数据输出的接口,所有从特定寄存器输出的数据都要通过TDO一位一位串行输出的
5.TRST可以用来对TAP Controller进行复位,该信号线可选,TMS也可以对其复位
6.VTREF接口信号电平参考电压一般直接接Vsupply,这个可以用来确定ARM的JTAG接口逻辑电平
7.RTCK可选项,由目标端反馈给仿真器的时钟信号,用来同步TCK信号的产生,不使用时直接接地
8.System Reset可选项,与目标板上的系统复位信号相连,可以直接对目标系统复位,同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻
9.USER IN用户自定义输入,可以接到一个IO口上,用来接受上位机的控制
10.USER OUT用户自定义输出,可以接到一个IO口上,用来向上位机反馈一个状态
由于JTAG经常使用排线连接,为了增强抗干扰能力,在每条信号线间加上地线就出现了这种20针的接口。但事实上,RTCK、USER IN、USER OUT一般都不使用,于是还有一种14针的接口,对于实际开发应用来说,由于实验室电源稳定,电磁环境较好,干扰不大,使用那么多地线意义不大。
JTAG开发工具有:USB multi-ICE , 并口multi-ICE,简易JTAG. 价格由高到低,速度由快而慢,功能由强而弱. JTAG作为一种嵌入式系统调试规范,是有一套协议的,并口multi-ICE就是将计算机对并口的读写转为JTAG协议,拆开看主要是一片FPGA,程序在EEPROM里面。而USB的只不过是多了一层USB协议,由于USB本身速度较并口快,所以USB multi-ICE速度更快些. 简易的JTAG只有一片74HC244,其实是用并口模拟JTAG协议,由于JTAG是串行协议,所以并口的n次操作才能完成一条命令(n>8),速度因此快不起来啦。
文章评论(0条评论)
登录后参与讨论