JTAG定义:(Joint Test Action Group 联合测试行动小组),是一种国际通用的测试协议。html
JTAG 主要功能有2种或者说对绝大数JTAG来讲主要有两大类:编程
(1) 用来测试芯片的电气特性,检测芯片是否有问题;windows
(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 接口组成:也是分为两部分。spa
(1) JTAG端口:标准的JTAG接口是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。这里又分为并口的和USB接口形式的。操作系统
(2) 控制器:与JTAG 接口兼容的器件能够是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、DSP、ASIC 或其它符合IEEE1149.1 规范的芯片。(实际上IEEE1149.1就是规定了一种边界扫描技术,规定对应于数字集成电路芯片的每一个引脚都设有一个移位寄存单元)debug
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的烧写功能几乎同样强。
可是对于S3C24十、S3C2440来讲,OpenJTAG更胜一筹:OpenJTAG能够烧写NAND Flash;JLink理论上也行,可是没人实现这点。
4. 如何选择:
若是是学习Linux,那么OpenJTAG比较适用;
若是比较喜欢ADS、Keil等工具,那么JLink比较适用;
若是你的开发板是S3C24十、S3C2440,那么OpenJTAG绝对适用
附3 ARM经常使用工具简介
Oflash 结合JTAG工具下载程序用
Tftpboot 能够在uboot下用其下载程序至nandflash中(uboot一般是在norflash中的)
Dnw 功能与tftpboot同样,只不过 dnw在windows7下支持不太好,不如用tftpboot
参考:
〈1〉 http://blog.sina.com.cn/s/blog_7d03f8d30100w6hx.html
〈2〉 http://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html
〈3〉 度娘