热度 20
2009-9-25 16:24
7457 次阅读|
0 个评论
什么是 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 接口定义引脚 名 称 描 述 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 接口的连接是否正常。 ADS 和 SDT 均为 ARM 公司为方便用户在 ARM 芯片上进行应用开发而推出的一整套集成开发工具,其中, ADS 为 SDT 的升级版本。该系统的调试以 ADS 为例,同时也适合于 SDT 开发环境。 连接好硬件后,打开 AXD Debugger ,建立与目标板(待调试的系统板)的连接, AXDDebugger 有软件仿真方式和带目标系统的调试方式,此时应工作在带目标系统的调试方式。 选择菜单 System Views → Command Line Interface 功能,该选项为 AXD Debugger 的一个命令行窗口,可在该窗口内输入各种调试命令,使用非常方便。在命令行窗口输入: gt; setmem 0x3FF5000, 0xFFFF, 32 gt; 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 功能,即可显示命令行窗口,在命令行窗口输入: Debug : let 0x3FF5000 = 0xFFFF Debug : let 0x3FF5008 = 0xFFFF 执行完以上两条命令后,连接在通用 I/O 口的 4 只 LED 应被点亮。 关于通用 I/O 口更具体的工作原理和使用方法,可参考 S3C4510B 用户手册。 用户系统若能正常完成上述操作并成功点亮连接在 P3 ~ P0 口上的 LED 显示器,则表明 S3C4510B 已在正常工作,且调试环境也已正确建立,以后的调试工作就相对简单。笔者曾遇到多个用户系统因为不能完成这步工作,使开发者失去信心而最终放弃。