1. JTAG的字面意思
JTAG ——Joint Test Action Group,联合测试行动组。
2. JTAG标准
随着技术的发展,芯片的结构和功能越来越复杂,传统的使用万用表、示波器测试芯片
的“探针”方法已不能满足要求。在这种背景下 ,早在20世纪80年代 ,联合测试行动组(简称JTAG)起草了边界扫描测试规范 , 后来在1990年被批准为IEEE标准1149. 121990规定,简称JTAG标准。
3. JTAG引脚定义
具有JTAG接口的芯片都有如下JTAG引脚定义:
- TDI(测试数据输入)
- TDO(测试数据输出)
- TCK(测试时钟)
- TMS(测试模式选择)
- TRST(测试复位),可选
4. JTAG的用途
JTAG最初是用来对芯片进行测试的;如今,JTAG接口还用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。
5. JTAG测试芯片的原理——边界扫描
边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上,所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,就可以实现对芯片输入输出信号的观察和控制。
对于芯片的输入管脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该管脚中去;对于芯片的输出管脚,也可以通过与之相连的边界扫描寄存器“捕获”该管脚上的输出信号。
在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,所以芯片的正常运行不会受到任何影响。
另外,芯片输入输出管脚上的边界扫描寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。
一句话概括,JTAG测试芯片的原理是:利用边界扫描链对芯片的输入输出进行观察和控制。
6. 为什么JTAG可以烧写Flash
一般来说,CPU通过地址总线、数据总线、片选、读写控制与外部Flash物理相连。当CPU对外部Flash进行操作时,将程序员给出的地址和数据通过系统总线送出,同时使对应的控制信号有效,由此完成操作。利用JTAG的特殊结构,只要把对Flash操作所需要的地址、数据、控制信号,从TDI串行输入,锁存到对应引脚的边界扫描单元,更新引脚状态,最后输出即可。同样,引脚也可以把从Flash接收到的数据或信号锁存到内部扫描单元,然后从TDO串行输出到系统以外的测试设备。
以前是通过CPU的内部逻辑控制控制Flash,而现在是由外部测试设备通过JTAG直接对CPU的引脚进行控制(设置电平的高低),进而控制Flash. 可以说,JTAG是通过在CPU相关引脚上模拟出读写时序,以往Flash里面写数据。
7. JTAG接口与PC的连接
ARM芯片上有若干根引脚可扩展成标准JTAG接口,如S3C2440的五根引脚:nTRST、TMS、TCK、TDI、TDO,可以扩展成20针(也有14针、10针、8针等)的JTAG接口。韦东山的JZ2440开发板,上面就有一个20针JTAG接口。
要调试板子,PC端肯定要有一个调试软件;另外板子的JTAG口要和PC连起来。韦东山的视频介绍了两种方法:
(1)JTAG口通过一个转接板(主要用于JTAG信号线的电平转换)和PC的并口连接。
(2)JTAG口通过一个比转接板复杂的装置(比如Open JTAG,或者J-link等)和PC的USB口连接。
对于现在的笔记本电脑,没有并口。所以,最常规的方法就是(2)。可以说,Open JTAG或者J-link,它们都实现了USB转JTAG协议的功能。
8. JTAG调试器算不算ARM仿真器?
我认为,仿真器是可以仿真目标CPU的一台设备,可以完全取代目标板上的CPU,且可以提供更加深入的调试功能。比如说程序员可以通过仿真器设置断点、设置条件断点、监视内存内容等。
而JTAG则是一个通用的调试接口。现在有些厂商的广告,将JTAG调试器也叫做ARM仿真器,这有误导之嫌。其实Open JTAG、J-link等东西的本质是在PC和板子上的JTAG接口之间建立一个数据通路,它并不能仿真什么。
参考资料
【1】百度百科
【2】维基百科
【3】
http://nancy.spaces.eepw.com.cn/articles/trackback/item/16322
【4】
http://www.360doc.com/content/17/0422/20/42222087_647701392.shtml