ARM与JTAG

JTAG(Joint Test AcTIon Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试, JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG 测试工具对内部节点进行测试。

目前大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。

JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。 JTAG 接口还常用于实现 ISP ( In-System Programmable 在系统编程)功能,如对 FLASH器件进行编程等。

通过 JTAG 接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。目前 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,其定义分别如下所示。

14 针 JTAG 接口定义引 脚 名 称 描 述

1 、 13               VCC 接电源

2 、 4 、 6 、 8 、 10 、 14    GND 接地

3  nTRST             测试系统复位信号

5  TDI              测试数据串行输入

7  TMS              测试模式选择

9  TCK              测试时钟

11 TDO              测试数据串行输出

12 NC               未连接

20 针 JTAG 接口定义引 脚 名 称 描 述

1 VTref             目标板参考电压,接电源

2 VCC               接电源

3 nTRST              测试系统复位信号

4、6、8、10、12、14、16、18、20  GND 接地

5 TDI               测试数据串行输入

7 TMS               测试模式选择

9 TCK               测试时钟

11 RTCK              测试时钟返回信号

13 TDO               测试数据串行输出

15 nRESET             目标系统复位信号

17 、 19 NC            未连接

下面以S3C4510B开发板为例说明JTAG接口:

在保证电源电路、晶振电路和复位电路正常工作的前提下,可通过JTAG 接口调试S3C4510B,在系统上电前,首先应检测JTAG 接口的 TMS 、 TCK 、 TDI 、 TDO 信号是否已与 S3C4510B 的对应引脚相连,其次应检测 S3C4510B 的 nEWAIT 引脚( Pin71 )是否已上拉, ExtMREQ 引脚( Pin108 )是否已下拉,对这两只引脚的处理应注意,作者遇到多起S3C4510B 不能正常工作或无法与JTAG 接口通信,均与没有正确处理这两只引脚有关。

给系统上电后,可通过示波器查看 S3C4510B 对应引脚的输出波形,判断是否已正常工作,若S3C4510B 已正常工作,在使能片内 PLL 电路的情况下, SDCLK/MCLKO 引脚( Pin77 )应输出频率为 50MHz 的波形,同时, MDC 引脚( Pin50 )和其他一些引脚也应有波形输出。

在保证 S3C4510B 已正常工作的情况下,可使用 ADS 或 SDT 通过 JTAG 接口对片内的部件进行访问和控制。

在此,首先通过对片内控制通用 I/O 口的特殊功能寄存器的操作,来点亮连接在 P3 ~ P0 口上的4 只 LED ,用以验证 ADS 或 SDT 调试环境是否已正确设置,以及与 JTAG 接口的连接是否正常。