JTAG定义:(Joint Test Action Group 联合测试行动小组),是一种国际通用的测试协议。

 

JTAG 主要功能有2种或者说对绝大数JTAG来说主要有两大类:

(1)       用来测试芯片的电气特性,检测芯片是否有问题;

(2)       用来DEBUG,对各类芯片以及其外围设备进行调试。

一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。

(3)       还常用于实现ISP(In-System Programmable;在线编程),对FLASH等器件进行编程。传统生产流程中先对芯片进行预编程后再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。

 

JTAG 接口组成:也是分为两部分。

(1)       JTAG端口:标准的JTAG接口是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。这里又分为并口的和USB接口形式的。

(2)       控制器:与JTAG 接口兼容的器件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、DSP、ASIC 或其它符合IEEE1149.1 规范的芯片。(实际上IEEE1149.1就是规定了一种边界扫描技术,规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元)

 

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

 

附1

Atmel的单片机通常有JTAG,ISP,Debugwire这三种接口,它们的区别。

JTAG可以进行程序的下载和在线仿真调试,程序下载速度快。只有部分器件支持。在JTAG使能的前提下程序的下载和仿真无需进行其他设定即可。

ISP只能进行程序的下载,程序下载速度慢。所有AVR单片机均支持ISP程序下载。

Debugwire只能进行程序的在线仿真调试不能进行程序的下载。只有比较少的器件支持Debugwire方式仿真。目标MCU的ISP功能和debug WIRE功能是互斥的,使能了目标MCU的 debug WIRE 功能后ISP功能就无法使用,使能了ISP功能后debug WIRE功能就无法使用。

 

附2

在ARM烧写中,常用两种JTAG仿真器,OpenJtag 和 Jlink

OpenJTAG与JLink的区别比较:

相同点:都同时具备USB转JTAG、USB转串口功能

差别:

1. 操作系统:

OpenJTAG可以用在Windows、Linux下;

JLink只能用在Windows下,在Linux下它的调试功能无法使用,只能使用“JLink+USB转串口2合1”中的USB转串口功能

2. 集成开发环境:

OpenJTAG能用在所有支持GDB调试协议的工具上,比如IAR、Eclipse、winarm,不能用在支持RDI协议的工具上,比如ADS。

JLink支持多种调试协议RDI、GDB调试,几乎所有Windows下的工具都支持,比如ADS、Keil MDK、IAR

3. 对Flash的烧写:

OpenJTAG、JLink对FLASH的烧写功能几乎一样强。

但是对于S3C2410、S3C2440来说,OpenJTAG更胜一筹:OpenJTAG可以烧写NAND Flash;JLink理论上也行,但是没人实现这点。

4. 如何选择:

如果是学习Linux,那么OpenJTAG比较适用;

如果比较喜欢ADS、Keil等工具,那么JLink比较适用;

如果你的开发板是S3C2410、S3C2440,那么OpenJTAG绝对适用

 

附3 ARM常用工具简介

Oflash 结合JTAG工具下载程序用

Tftpboot  可以在uboot下用其下载程序至nandflash中(uboot通常是在norflash中的)

Dnw 功能与tftpboot一样,只不过 dnw在windows7下支持不太好,不如用tftpboot