JTAG调试原理

article/2025/9/13 1:23:31

         转自:https://blog.csdn.net/sinat_24088685/article/details/50980501

 1.介绍

       JTAG(Joint Test Action Group,联合测试行动小组) 是一种    国际标准测试   协议,主要用于    芯片内部测试   。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入数据输出线

    JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口),通过  专用的JTAG测试工具  对进行  内部节点  进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。

    现在,JTAG接口还常用于实现  在线编程(ISP,In-System Programmable),对FLASH等器件进行编程。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程实现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程。

     简单地说,JTAG的工作原理可以归结为:在器件内部定义一个TAP(TestAccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试和调试。


2.边界扫描

     边界扫描(Boundary-Scan)即在芯片的每个输入输出管脚上都增加一个  移位寄存器单元 (Boundary-Scan Register Cell),因为这些移位寄存器单元分布在芯片的边界上,所以被称为边界扫描寄存器。在JTAG 调试中,边界扫描是一个很重要的概念,当需要调试芯片时,这些寄存器将芯片与外围电路隔离,实现对芯片输入输出信号的观察和控制

  •      对于输入管脚,可以通过与之相连的边界扫描寄存器单元把数据加载到该管脚中;
  •      对于输出管脚,可以通过与之相连的边界扫描寄存器“捕获”(CAPTURE)该管脚上的输出信号;
  •      正常运行状态下,这些边界扫描寄存器单元对芯片是透明的,所以正常的运行不会受到影响。

另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain),它可以串行的输入和输出,通过相应的时钟信号和控制信号,实现对处在调试状态下的芯片的输入和输出状态的观察和控制。

    在CPU外围,处理器内部包含了JTAG的硬件实现,并且向外界提供接口,也就是上面所说的TMS、TCK、TDI、TDO四个引脚。

  • 这里的CPU:是指运算处理单元,只包含了内部寄存器以及运算单元等基本部件。
  • 这里的处理器:是指CPU 扩展芯片,不是SoC。

说明:更多关于CPU和处理器之间的关系,请参考文章《CPU MPU MCU SOC SOPC关系及区别》

JTAGåç


3.JTAG如何用于芯片测试呢? 

      其中用到的最主要部件就是边界扫描链。命名为边界扫描链,是由于它位置处于处理器的边界上。我们知道CPU是通过引脚与外围交流的,所有的数据都会通过引脚输入或者输出,而JTAG就是通过监控引脚的信号达到芯片测试的目的。而边界扫描链就是在引脚上的一个部件。如下图:

边界扫描链位置
边界扫描链位置

 

通过边界扫描链,当有信号输入的时候,边界扫描链就能获取信号,当CPU要输出信号的时候,边界扫描链也能获取要输出的信号。另外,也可以通过边界扫描链来直接向外部输出信号。

    无论是信号的抓取还是输出,都需要有接口来保存这些信号,TDI 跟 TDO 就是做这样一些工作的。如图:

JTAG TDI TDO示意图
JTAG TDI TDO示意图

 

本来边界扫描链保存着引脚上的信号,当通过TDI引脚输入我们自己的信号的时候,会发生沿上面红线方向的移位操作,即

TDI —> 边界扫描链 ——> TDO 于是就能从TDO获取边界扫描链上的信号,我们从TDI输入的信号也会到边界扫描链上去。

      在CPU跟外界通信的引脚上的数据无非就是 指令 跟 数据信号(包括地址跟数据) 两种。但是这两者的结合形成了一个完整的程序,能对它们进行监控就表明我们能进行程序的调试。一般的芯片都会提供几条独立的边界扫描链,对边界扫描链的控制主要是通过 TAP(Test Access Port) Controller来完成的。


4.测试访问口TAP

      TAP(TestAccessPort)是一个通用的端口,通过TAP 可以访问芯片提供的所有数据寄存器(DR)指令寄存器(IR)。对整个TAP的控制是通过TAP控制器(TAPController)来完成的。下面先 分别介绍一下TAP的几个接口信号及其作用。其中,前4个信号在IEEE1149.1标准里是强制要求的。

  • TCK:时钟信号,为TAP的操作提供了一个独立的、基本的时钟信号。
  • TMS:模式选择信号,用于控制TAP状态机的转换。
  • TDI:数据输入信号。
  • TDO:数据输出信号。
  • TRST:复位信号,可以用来对TAPController进行复位(初始化)。这个信号接口在IEEE1149.1标准里并不是强制要求的,因为通过TMS也可以对TAPController进行复位。
  • STCK:时钟返回信号,在IEEE1149.1标准里非强制要求

    简单地说,PC机对目标板的调试就是通过TAP接口完成对相关数据寄存器(DR)指令寄存器(IR)的访问

    系统上电后,TAPController 首先进入 Test-LogicReset 状态,然后依次进入Run-Test/Idle、Selcct-DR- Scan、Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR状态,最后回到 Run- Tcst/Idle 状态。在此过程中,状态的转移都是通过TCK信号进行驱动(上升沿),通过TMS信号对TAP的状态进行选择转换的。其中:

  • 在 Capture-IR状态下,一个特定的逻辑序列被加载到指令寄存器中;
  • 在Shift-IR状态下,可以将一条特定的指令送到指令寄存器中;
  • 在 Update—IR状态下,刚才输入到指令寄存器中的指令将用来更新指令寄存器。
  • 最后,系统又回到Run—Test/Idle状态,指令生效,完成对指令寄存器的访问。

当系统又返回到Run—Test/Idle状态后,根据前面指令寄存器的内容选定所需要的数据寄存器,开始执行对数据寄存器的工作。其基本原理与指令寄存器的访问完全相同,依次为seIect—DR—Scan、Capture—DR、Shift—D、Exitl一DR、Update—DR, 最后回到 Run-Tcst/Idle 状态。通过TDl和TDO,就可以将新的数据加载到数据寄存器中。经过一个周期后,就可以捕获数据寄存器中的数据,完 成对与数据寄存器的每个寄存器单元相连的芯片引脚的数据更新,也完成了对数据寄存器的访问。


5.仿真器

ULINK2仿çå¨

Keil、IAR、DS-5、ADS开发工具软件等都有一个公共的调试接口RDI,那么我们如何完成 RDI ->JTAG调试协议的转换呢?两种做法:

  1. 在电脑上写一个服务程序,把Keil、IAR、DS-5中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像RS232那样的作用)发送你的的目标板。H-JTAG就是这样的。H-JTAG的硬件就仅是一个物理电平的转换接口,所以很简单。 而电脑中装的H-JTAG软件就是前面说到的服务程序,负责协议转换的。
  2. 做一个板,用此板直接接收来自Keil、IAR、DS-5等软件的调试命令,由此板做RDI -> JTAG协议的转换。然后与目标板通信,这就是JLINK、ULINK2等仿真器的工作原理。

由上可以看出,H-JTAG由于是软件作协议转换的,所以速度较慢,但是硬件简单。而第二种方法的JLINK一般带一个强劲的CPU,作硬件协议转换,把以硬件复杂,但速度快。目前,市场上的JTAG接口仿真器有14引脚和20引脚两种。其中,以20引脚为主流标准,但也有少数的目标板采用14引脚。经过简单的信号转换后,可以将它们通用。

参考资料:http://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html。

注:转自http://www.veryarm.com/1124.html(JTAG调试原理)

 

 


http://chatgpt.dhexx.cn/article/tsc6KfS1.shtml

相关文章

MCU模拟JTAG接口对LATTICE CPLD FPGA 进行在线编程加载

完整版请点击 https://hifpga.com/问题/719 索取源码,向博主本人提问FPGA相关问题 作者:Rock.Ding(莱迪思半导体公司)关键字:MCU, JTAG, 在线编程, CPLD。 前言 CPLD(Complex Programmable Logic Device)复杂可编程…

JTAG+SWD在Keil5中进行仿真

JTAGSWD在Keil5中进行仿真 上一章说了STM32的烧录问题,主要有slink、TTL-usb的方法,通过相应的烧录软件,进行一个下载烧录的过程,用到的模式也主要是SWD的模式,毕竟只有四根线比较方便。 这篇主要是仿真测试&#xff…

【开发工具】【JTAG】JTAG调试原理【二】

相关链接: JTAG基础 JTAG调试原理 JTAG调试实例 模拟系统崩溃,使用JTAG调试找到崩溃点 JTAG调试原理 两个重要概念:边界扫描和TAP 边界扫描 JTAG如何用于芯片测试呢? 其中用到的最主要部件就是边界扫描链。 边界扫描&…

STM32中使用J-Link仿真器选择JTAG模式和SWD模式的区别

0. 下载调试器(仿真器) 下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。 1. J-Link J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG/SWD仿真器。配合IAR EWAR&am…

ARM JTAG仿真器电路讨论

一. JTAG仿真器的实质 JTAG (Joint Test Action Group) 编程调试实质上是利用了MCU/MPU片上自带的跟踪调试功能(需MCU/MPU硬件支持)。JTAG编程板一端与PC的并口相连,另一端连接至目标板,由于通常的MCU/MPU的工作电压在1.8V…

JTAG和SWD调试器

文章目录 一、调试器二、JTAG三、SWD三、各自优缺点 一、调试器 当我们开发单片机程序时,通常是在Windows或Linux上进行代码编写和编译,但是单片机并不直接集成在电脑上,怎么验证我们的单片机程序是否正确并烧录到单片机中,此时就…

JTAG基本原理及仿真器性能比较

转载自:http://www.gd-emb.org/detail/id-48408.html JTAG(Joint Test Action Group,联合测试行动组)是一种国际标准测试协议(IEEE 1149.1兼容)。标准的JTAG接口是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数…

JTAG、JLink、ULINK、ST-LINK仿真器区别

首先要了解一下JTAG。 JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如AR…

关于调试/仿真器的JTAG和SWD的使用==总结

嵌入式行业,涉及到系统设计,难免要考虑这些接口的设计, 当前手上的一个项目,为了减小体积、节省资源,使用了stm32 swd接口,下面及此简要说明下常用的一些调试接口,,, 常…

ADI DSP的JTAG设计规范(提供JTAG标准设计原理图)

早就想写点这方面内容了,14PIN的JTAG设计,是ADI从2000年至今一直延续下来的一个JTAG标准设计,很多兄弟在做硬件设计的时候,最常问的一个问题就是:JTAG接口定义是什么?更多的只知道抄原厂评估板的参考设计&a…

【开发工具】【JTAG】JTAG调试实例【三】

JTAG因为文章内容比较多,拆分成了四个部分,读者可以根据需求,点击查看其它的JTAG信息: JTAG基础 JTAG调试原理 JTAG调试实例 模拟系统崩溃,使用JTAG调试找到崩溃点 JTAG调试实例 本文以DM8168芯片为例&#xff0c…

JTAG基本介绍

JTAG 1. JTAG接口形式 JTAG作为一项国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试和调试。目前的DSP、FPGA、ARM、部分单片机等主流芯片均支持JTAG协议。标准的JTAG接口是20Pin,但JTAG实际使用的只有4根信号线&#x…

STM32 JTAG电路设计

学习需要刨根问底 1. 什么是JTAG? JTAG(Joint Test Action Group)是一个接口,为了这个接口成立了一个小组叫JTAG小组,它成立于1985年,比推丸菌的年龄还大。 在1990年IEEE觉得一切妥当,于是发布…

【开发工具】【JTAG】JTAG基础【一】

JTAG基础 什么是JTAG? JTAG(Joint Test Action Group ,联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。 JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP &#…

J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?

四种仿真器和五种下载模式调试差异? 一、J-LINK、ST-Link、升级版DAPLink(旧版CMSIS-DAP)、ULink 仿真器区别?几种JTAG、SWD、SWIM、SWV下载模式或者调试方式差异(细看)? 总结:J-Link、ST-Lin…

基于仿真器的两种程序烧录模式:JTAG和SWD

关于JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。 现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等…

自制Xilinx JTAG仿真器

目录 工具原理图PCB烧录 eeprom工程地址注 本草稿最后日期为 2021-01-23,本次趁闲暇时间完善,本文主要说明的是自制Xilinx Jtag 仿真器。 也是巧合,在 GitHub 上无意中发现了有人发布了Jtag 的做法,于是根据上面提供的原理图试着做…

J-Link仿真器与JTAG和SWD下载与接线

目录 1.JTAG 1.1JTAG今天被用来主要的三大功能: 1.2JTAG引脚: 1.3可选引脚: 2.SWD 2.1 SWD引脚: 2.2 可选择引脚: 2.3 JTag和SWD模式引脚定义 3. J-Link仿真器 4 IAR与MDK配置两种下载方式 1.JTAG JTAG诞…

简述调试/仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)

入门嵌入式编程,总会对市面上种类繁多的调试器感到困惑。本文简单介绍一下现在主流的仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)。 一. 协议 1.JTAG协议 JTAG(Joint Test Action Group,联…

JTAG基本原理及仿真器性能比较和JTAG接口解读

JTAG(Joint Test Action Group,联合测试行动组)是一种国际标准测试协议(IEEE 1149.1兼容)。标准的JTAG接口是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 JTAG的主要功能有两种,或者说JTAG主要有两大…