JTAG(Joint Test Action Group;联合测试工作组) 是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。
标准的JTAG接口是4线:TMS、TCK、TDI、TDO, 分别为模式选择、时钟、数据输入和数据输出线。
JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。
JTAG接口可对DSP芯片内部的所有部件进行编程。
具有JTAG口的芯片都有如下JTAG引脚定义:
TCK--测试时钟输入;
TDI--测试数据输入,数据通过TDI输入JTAG口;
TDO--测试数据输出,数据通过TDO从JTAG口输出;
TMS--测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
可选引脚TRST--测试复位,输入引脚,低电平有效。
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
14针
20针
部分来源:360百科
深入挖掘原理还需补充
JTAG协议在定义时,由于当时的计算机(PC机)普遍带有并口,因而在连接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,现在台式计算机上面有并口的都很少了,取而代之的是越来越多的USB接口。那么能不能让JTAG支持USB协议,用USB接口来调试ARM呢?这就要说到JLINK和ULINK了。
ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器,是ULink仿真器(由KEIL公司开发)的升级版本。
ULINK2不仅具有ULINK仿真器的所有功能,还增加了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师通过结合使用RealView MDK的调试器和ULINK2,可以方便的在目标硬件上进行片上调试(使用on-chip JTAG,SWD和OCDS)、Flash编程。
ULINK仿真器
ULINK是ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,ULINK2和ULINKPro仿真器。ULINK/ULINK2可以配合Keil软件实现仿真功能,并且仅可以在Keil软件上使用。
ULINK是ARM官方的调试工具,KEIL出品。ULINK也可以支持大多数的ARM芯片,对KEIL的支持非常好,是KEIL的默认调试工具。缺点是因为不支持IAR,影响了ULINK的推广。
ULINK官方提供电路图等资料,属於半开放的,可以自做。
JLink仿真器
J-Link是德国SEGGER公司推出基于JTAG的仿真器。简单地说,是给一个JTAG协议转换盒。其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从软件到硬件转换的工作。
J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产。提供对市面上几乎所有ARM内核芯片的支持。目前最新版本的J-Link产品为V8,支持JTAG和SWD模式。并且对主要的IDE环境如KEIL、IAR都有良好的支持。优点很多,因此也是首选的调试工具
(1)编程功能:可烧写FLASH ROM、EEPROM、AFR等。
(2)仿真功能:支持全速运行、单步调试、断点调试等各种调试方法,可查看IO状态,变量数据等等。
(3)仿真性能:采用USB2.0接口进行仿真调试,单步调试,断点调试,反应速度快!
(4)编程性能:采用USB2.0接口,进行SWIM / JTAG / SWD下载,下载速度快!
ST-LINK是专门针对意法半导体STM8和STM32系列芯片的仿真器
ST-LINK可以单独购买,也可以通过ST公司的开发板自带,Discovery系列的开发板价格最低价格不到¥100。板载的ST-LINK可以仿真ST公司的所有ARM芯片。
ST-LINK除支持ST公司的ARM MCU(M3内核的STM32F1、F2,M4内核的F4、F3以及M0内核的F0),还支持STM8系列。
ST-LINK的版本目前为ST-LINK V2。虽然资料基本公开,但既然成本不高,就没必要自制。
总结:1和2是主流的调试工具,还有其他一些通用调试工具,见下一篇文章
部分来源:http://www.veryarm.com/1114.html
调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种。当仿真时,IAR、KEIL、ADS等都有一个公共的调试接口,RDI就是其中的一种, 那么我们如何完成RDI-->ARM调试协议(JTAG)的转换呢? 有以下两种做法:
1、在电脑上写一个服务程序,把IAR、KEIL和ADS中的RDI命令解析成相关的JTAG协议,然后通过一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像RS232那样的作用)发送你的的目标板。 H-JTAG就是这样的。 H-JTAG的硬件就仅是一个物理电平的转换接口,所以很简单。而电脑中装的H-JTAG软件就是前面说到的服务程序,负责协议转换的。
2、做一个板,用此板直接接收来自IAR、KEIL和ADS等软件的调试命令,由此板做RDI->JTAG协议的转换。然后与目标板通信,这就是JLINK的工作原理。
由上可以看出 H-JTAG由于是软件作协议转换的,所以速度较慢,但是硬件简单。而第二种方法的JLINK一般带一个强劲的CPU,作硬件协议转换,所以硬件复杂,但速度快。所以,JTAG就是一种arm调试协议,而JLINK只是实现由开发平台RDI接口到JTAG协议的转换。我们使用一般的JTAG调试程序需要使用并口,而现在使用笔记本(没有并口)开发也很多,所以直接使用H-JTAG软件来将RDI转成JTAG协议的方式就做不到了,这时使用使用USB接口的JLINK仿真器就是一个很不错的选择。
由于JLINK使用硬件完成RDI到JTAG协议的转换,所以JLINK的功能要比JTAG强大。因为JTAG用的是并行口,所以在使用的时候不方便,而且功能也不如JLINK。
ULINK是KEIL公司开发的仿真器,专用于KEIL 平台下使用,ADS,iar 下不能使用。
JLINK 是通用的开发工具,可以用于KEIL ,IAR ,ADS 等平台 速度,效率,功能均比ULINK强 。
ULINK2的下载速度和调试速度确实没有JLINK的快。
来源