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