原创 JTAG接口定义

2009-9-25 16:24 7455 20 20 分类: 消费电子

什么是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 接口定义:

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 接口定义引脚 名 称 描 述

jtag.jpg



1

 

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

2 VCC               接电源

3 nTRST              测试系统复位信号

468101214161820  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 接口的连接是否正常。

ADS SDT 均为 ARM 公司为方便用户在 ARM 芯片上进行应用开发而推出的一整套集成开发工具,其中, ADS SDT 的升级版本。该系统的调试以 ADS 为例,同时也适合于 SDT 开发环境。

连接好硬件后,打开 AXD Debugger ,建立与目标板(待调试的系统板)的连接, AXDDebugger 有软件仿真方式和带目标系统的调试方式,此时应工作在带目标系统的调试方式。

选择菜单 System Views → Command Line Interface 功能,该选项为 AXD Debugger 的一个命令行窗口,可在该窗口内输入各种调试命令,使用非常方便。在命令行窗口输入:

> setmem 0x3FF5000, 0xFFFF, 32

> setmem 0x3FF5008, 0xFFFF, 32

setmem 命令用于对特定的地址设置特定的值,待设定的值可以是 8 位、 16 位或 32 位,在此,对通用 I/O 口的模式寄存器和数据寄存器设置相应的值,点亮 LED

S3C4510B 在复位后,特殊功能寄存器的基地址为 0x3FF0000, 由表 5 -2-3 可知,I/O 口的模式寄存器偏移地址为0x5000,因此, I/O 口的模式寄存器的物理地址为 0x3FF5000 ,设定该寄存器的值为 0xFFFF ,将 I/O 口置为输出方式。 I/O 口的数据寄存器的物理地址为 0x3FF5008 ,设定该寄存器的值为 0xFFFF ,将 I/O 口的输出置为高电平。

在执行完以上两条命令后,连接在通用 I/O 口的 4 LED 应被点亮,表示调试系统的软、硬件连接完好,可进行下一步的调试工作,否则,应重新检查调试系统。

用户若使用 SDT 作为调试工具,操作方法类似。 连接好硬件后,打开 ARM Debugger for Windows ,建立与目标板(待调试的系统板)的连接,选择菜单 View → Command 功能,即可显示命令行窗口,在命令行窗口输入:

Debuglet 0x3FF5000 = 0xFFFF

Debuglet 0x3FF5008 = 0xFFFF

执行完以上两条命令后,连接在通用 I/O 口的 4 LED 应被点亮。

关于通用 I/O 口更具体的工作原理和使用方法,可参考S3C4510B 用户手册。

用户系统若能正常完成上述操作并成功点亮连接在P3P0 口上的LED 显示器,则表明S3C4510B已在正常工作,且调试环境也已正确建立,以后的调试工作就相对简单。笔者曾遇到多个用户系统因为不能完成这步工作,使开发者失去信心而最终放弃。

 

jtag1.jpg

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
20
关闭 站长推荐上一条 /2 下一条