JTAG调试原理

合集下载

jtag工作原理详解

jtag工作原理详解

jtag工作原理详解JTAG(Joint Test Action Group)是一种用于测试和调试集成电路(IC)的标准接口。

它提供了一种方便的方法来访问和控制IC内部的信号和寄存器,以便进行测试、调试和编程操作。

本文将详细解释JTAG工作原理,包括其基本原理、信号传输流程和应用案例。

一、JTAG的基本原理JTAG是一种串行接口,由四个主要信号线组成,即TCK(时钟线)、TMS(状态线)、TDI(数据输入线)和TDO(数据输出线)。

这四个信号线与目标IC的测试逻辑电路相连,通过JTAG接口与测试设备(如测试仪器或调试器)进行通信。

1. TCK(时钟线):控制数据传输的时钟信号,用于同步数据传输。

2. TMS(状态线):用于控制JTAG状态机的状态转换,控制JTAG接口的操作模式。

3. TDI(数据输入线):用于将数据输入到目标IC的测试逻辑电路。

4. TDO(数据输出线):用于从目标IC的测试逻辑电路输出数据。

JTAG接口的工作原理基于状态机的概念。

JTAG状态机有多个状态,包括测试逻辑重置状态(Test-Logic-Reset)、IDCODE读取状态(IDCODE)、数据移位状态(Data-Shift)、指令移位状态(Instruction-Shift)等。

通过TMS信号的控制,可以在不同的状态之间切换,实现不同的操作。

二、JTAG信号传输流程JTAG信号传输流程包括初始化、指令传输、数据传输和结束四个步骤。

下面将详细介绍每个步骤的具体操作。

1. 初始化在初始化阶段,测试设备通过TCK信号向目标IC发送一系列的时钟脉冲,将其置于测试逻辑重置状态(Test-Logic-Reset)。

这个过程称为测试逻辑重置。

2. 指令传输在指令传输阶段,测试设备通过TMS和TDI信号向目标IC发送指令,控制其进入指令移位状态(Instruction-Shift)。

指令可以是读取IDCODE、设置寄存器或执行其他特定操作的命令。

jtag工作原理详解

jtag工作原理详解

jtag工作原理详解JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的标准接口。

它提供了一种简单而有效的方法,可以通过一个统一的接口来访问和控制设备内部的各个组件。

JTAG的工作原理基于一种称为“链”的结构。

链是由多个设备连接在一起组成的,每一个设备都有一个JTAG接口。

这些设备可以是处理器、存储器、逻辑芯片等。

通过链的连接,可以将所有设备串联在一起,形成一个完整的测试和调试系统。

在JTAG链中,设备被称为“目标设备”。

每一个目标设备都有一个JTAG接口,其中包含多个引脚,用于与其他设备进行通信。

这些引脚包括TCK(时钟信号)、TMS(状态信号)、TDI(数据输入信号)和TDO(数据输出信号)。

JTAG的工作流程如下:1. 初始化:JTAG控制器发送一系列的控制信号,将目标设备进入测试模式。

这些控制信号通过TMS引脚发送给目标设备。

2. 时钟信号:JTAG控制器通过TCK引脚向目标设备发送时钟信号,用于同步数据传输。

3. 数据传输:JTAG控制器通过TDI引脚向目标设备发送测试数据。

目标设备将接收到的数据进行处理,并通过TDO引脚返回结果。

4. 状态转移:通过改变TMS引脚的状态,JTAG控制器可以控制目标设备的状态转移。

这样可以实现目标设备内部各个组件的控制和访问。

JTAG的工作原理可以分为两个部份:测试和调试。

在测试方面,JTAG可以通过发送测试模式和测试数据来验证目标设备的功能和性能。

通过JTAG接口,可以对目标设备进行自动化测试,提高测试效率和准确性。

同时,JTAG还可以检测和诊断目标设备中的故障和缺陷。

在调试方面,JTAG可以提供对目标设备内部组件的访问和控制。

通过JTAG 接口,可以读取和修改目标设备的寄存器和内存内容。

这样可以实现对目标设备的断点调试、单步执行等功能,加快软件开辟和调试的速度。

总结起来,JTAG是一种用于测试和调试电子设备的标准接口。

jtag工作原理详解

jtag工作原理详解

jtag工作原理详解JTAG(Joint Test Action Group)是一种用于测试和调试集成电路的标准接口。

它是一种通用的、标准化的接口,可以用于连接芯片或电路板上的各种测试和调试设备。

JTAG接口通常由一个标准的20针或14针连接器组成,用于连接测试和调试设备。

本文将详细介绍JTAG的工作原理。

一、JTAG接口的基本原理1.1 JTAG接口的引脚定义:JTAG接口通常由TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input)、TDO(Test Data Output)四个引脚组成,用于控制和传输测试数据。

1.2 JTAG接口的工作模式:JTAG接口工作时,通过TCK引脚提供时钟信号,通过TMS引脚控制状态机状态转换,通过TDI引脚输入测试数据,通过TDO引脚输出测试结果。

1.3 JTAG接口的链路结构:JTAG接口可以连接多个芯片或电路板,形成一个链路结构,通过JTAG链路可以同时测试和调试多个设备。

二、JTAG接口的工作流程2.1 进入测试模式:在正常工作模式下,JTAG接口处于绕回状态,当需要进行测试时,通过TMS引脚切换到测试模式。

2.2 通过TCK引脚提供时钟信号:一旦进入测试模式,通过TCK引脚提供时钟信号,控制测试数据的传输和状态机的状态转换。

2.3 通过TDI和TDO引脚传输数据:在测试模式下,通过TDI引脚输入测试数据,通过TDO引脚输出测试结果,通过这种方式完成测试和调试过程。

三、JTAG接口的应用领域3.1 芯片生产测试:在芯片生产过程中,可以通过JTAG接口进行芯片的测试和调试,确保芯片的质量和性能。

3.2 电路板调试:在电路板设计和制造过程中,可以通过JTAG接口对电路板进行测试和调试,发现和修复故障。

3.3 嵌入式系统开发:在嵌入式系统开发过程中,可以通过JTAG接口对系统进行测试和调试,确保系统的稳定性和可靠性。

jtag debug cpu原理

jtag debug cpu原理

jtag debug cpu原理JTAG(Joint Test Action Group)是一种常用的调试和测试技术,可以用于CPU(Central Processing Unit)的调试。

JTAG调试通过在芯片上添加一组专门的调试接口,实现对CPU内部状态的观察和控制,从而提供了一种非侵入式的调试方法。

在传统的调试方法中,为了观察和控制CPU内部的状态,需要在CPU的设计中预留一些专门的调试接口,这样会增加硬件的复杂性。

而使用JTAG调试则可以避免这个问题,因为JTAG调试接口是一个独立的芯片,可以通过标准的接口和CPU进行通信。

JTAG调试接口由四个线(TCK、TMS、TDI和TDO)组成,通过这四根线可以实现对CPU内部状态的观察和控制。

其中,TCK是时钟线,用于同步数据传输;TMS是状态线,用于控制调试操作的状态;TDI是数据输入线,用于向CPU发送调试指令和数据;TDO 是数据输出线,用于从CPU读取调试信息。

JTAG调试的工作原理如下:首先,通过控制TMS线的状态,将调试接口从初始状态切换到指令寄存器(IR)状态。

在IR状态下,可以向CPU发送调试指令,比如读取寄存器的值、设置断点等。

然后,通过控制TMS线的状态,将调试接口从IR状态切换到数据寄存器(DR)状态。

在DR状态下,可以向CPU发送数据,比如修改寄存器的值、写入程序代码等。

最后,通过控制TMS线的状态,将调试接口从DR状态切换回初始状态,完成一次调试操作。

JTAG调试的优点是可以在CPU运行状态下进行调试,不需要停机或者重启系统。

同时,JTAG调试接口可以通过串行方式与CPU进行通信,简化了硬件设计。

此外,JTAG调试还支持多种调试操作,比如读写寄存器、设置断点、单步执行等,方便调试人员进行代码调试和性能优化。

然而,JTAG调试也有一些局限性。

首先,JTAG调试的覆盖范围有限,只能观察和控制CPU内部的有限状态。

其次,JTAG调试的速度相对较慢,对于大规模的程序调试可能会影响调试效率。

jtag工作原理详解

jtag工作原理详解

jtag工作原理详解引言概述:JTAG(Joint Test Action Group)是一种用于测试和调试集成电路的标准接口。

它通过一组标准的测试信号和控制信号,实现了对电路的访问和控制。

本文将详细介绍JTAG的工作原理,包括其基本原理、信号传输方式、测试模式和调试功能。

一、基本原理1.1 信号链JTAG通过一条信号链连接被测电路的各个组件。

这条信号链由多个TAP (Test Access Port)组成,每个TAP连接一个组件。

通过TAP,JTAG可以对各个组件进行测试和调试。

1.2 信号传输JTAG使用四条标准信号进行数据传输,包括TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input)和TDO(Test Data Output)。

TCK用于控制时钟信号,TMS用于控制状态转换,TDI用于输入测试数据,TDO用于输出测试结果。

1.3 状态机JTAG使用状态机来控制信号的传输和状态的转换。

状态机包括多个状态,例如Test-Logic-Reset(TLR)、Run-Test/Idle(RTI)和Shift-DR。

通过状态机,JTAG可以实现测试和调试的各种功能。

二、信号传输方式2.1 串行传输JTAG使用串行传输方式进行数据的输入和输出。

在测试模式下,测试数据从TDI输入,并通过TDO输出。

在调试模式下,调试数据也是通过这种方式进行传输。

2.2 并行传输JTAG还支持并行传输方式,可以同时传输多个数据位。

这种方式可以提高数据传输的速度,适用于大规模集成电路的测试和调试。

2.3 链接测试JTAG可以通过链路测试功能,检测信号链中的连接是否正常。

通过发送测试数据和接收测试结果,可以判断信号链的完整性和可靠性。

三、测试模式3.1 选择测试模式JTAG可以通过TMS信号切换不同的测试模式。

例如,通过将TMS信号从高电平切换到低电平,可以进入Shift-DR模式,用于数据的输入和输出。

JTAG电路的工作原理

JTAG电路的工作原理

JTAG电路的工作原理JTAG(Joint Test Action Group)是一种用于测试和调试集成电路的标准接口。

它提供了一种简单而有效的方法,用于在集成电路中插入测试和调试功能,以确保电路的正确性和可靠性。

JTAG电路的工作原理主要包括以下几个方面:1. JTAG接口JTAG接口是一种标准的串行接口,它由四根线组成,分别是TCK(时钟线)、TMS(状态线)、TDI(数据输入线)和TDO(数据输出线)。

通过这四根线,可以实现对集成电路的测试和调试操作。

2. JTAG测试模式JTAG测试模式是通过在TMS线上传输不同的状态序列来实现的。

在测试模式下,集成电路会进入特定的状态,从而可以通过TCK和TDO线来读取和写入内部寄存器的值。

3. JTAG链JTAG链是由多个JTAG设备连接而成的链路,每个设备都有一个唯一的ID号,用于区分不同的设备。

通过JTAG链,可以同时对多个设备进行测试和调试。

4. JTAG寄存器JTAG寄存器是集成电路中的一种特殊寄存器,用于存储和传输测试和调试数据。

它可以是输入寄存器(IR)或输出寄存器(DR)。

通过TMS和TDI线,可以选择要访问的寄存器,并通过TCK和TDO线进行数据的读取和写入。

5. JTAG指令JTAG指令是通过IR寄存器传输的特殊指令,用于控制集成电路的测试和调试操作。

常见的JTAG指令包括读取和写入寄存器的指令、设置和清除断点的指令、启动和停止运行的指令等。

6. JTAG Boundary ScanJTAG Boundary Scan是JTAG的一种重要应用,用于测试和调试电路板上的外部引脚连接。

通过在芯片的外部引脚上添加特殊的边界扫描电路,可以通过JTAG接口对引脚进行测试和调试,从而提高电路板的可靠性和生产效率。

总结:JTAG电路通过简单而有效的接口和寄存器,提供了一种方便的方法来测试和调试集成电路。

它可以用于验证电路的正确性、检测故障、读取和写入寄存器的值等操作。

JTAG基本原理与调试

JTAG基本原理与调试JTAG(Joint Test Action Group)联合测试⾏动⼩组)是⼀种国际标准测试协议(IEEE 1149.1兼容),主要⽤于芯⽚内部测试。

现在多数的⾼级器件都⽀持JTAG协议,如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没有了解过的⼈来说,上⾯的⼤部分内容都不知道说什么,当然,我是⼀开始看的时候也看不懂。

不过从上⾯得出来的信息知道,jtag是⼀个协议,标准有4个引脚,⽤于芯⽚的测试与编程调试。

jtag是有硬件实现的。

在cpu(注意:这⾥的cpu是指运算处理单元,只包含了内部寄存器以及运算单元等基本部件)外围,处理器(即cpu扩展芯⽚,不是soc)内部包含了jtag的硬件实现,并且向外界提供接⼝,也就是上⾯所说的TMS,TCK,TDI,TDO,四个引脚。

如图:边界扫描链jtag如何⽤于芯⽚测试呢? 其中⽤到的最主要部件就是边界扫描链。

命名为边界扫描链,是由于它位置处于处理器的边界上。

我们知道cpu是通过引脚与外围交流的,所有的数据都会通过引脚输⼊或者输出,⽽jtag就是通过监控引脚的信号达到芯⽚测试的⽬的。

JTAG调试原理


2.6、EmbeddedICE的断点/观察点设置 EmbeddedICE有两个WtchPoint单元。 下面介绍一下WatchPoint寄存器的使用: EmbeddedICE的一个主要作用是可以在 ARM程序中设置软件或硬件断点。在 EmbeddedICE中,集成了一个比较器,负责 把ARM处理器取指的地址A[31:0],数据 D[31:0]以及一些控制信号与EmbeddedICE 中WatchPoint寄存器中设置的数值相比较 (具体说应该是进行与或运算),比较结果 用来确定输出一个ARM断点(BreakPoint)信号。 具体运算关系如下公式所描述:
DBGRQ:用来标识DBGRQ信号的当前状态 IFEN:用来标识系统的中断控制状态:启用
还是禁用 cgenL:用来判断当前对调试器在调试状态下 对内存的访问是否完成 TBIT:该位用来判断ARM7TDMI是从ARM 状态还是THUMB状态进入到调试状 态的
Abort Status Register 格式:
{Av[31:0],Cv[4:0]} XOR {A[31:0],C[4:0]} OR {Am[31:0],Cm[4:0]} == 0xFFFFFFFF 当上述表达式值为真时,断点/观察点信 号有效,ARM内核进入Debug模式。
ARM中断点和观察点的设置 首先介绍一下与之设置密切相关的WP Control Value/Mask Register。 WP Control Value/Mask Register格式:
WP Control Value/Mask Register格式含义: ENABLE: 如果该位置0的话,意味着断点 触发条件永远不成立,也就是把全部断点 都给disable掉了 RANGE: 暂时不会用 CHAIN: 暂时不会用 EXTERN: 外部到EmbeddedICE-RT的输 入,通过该输入,可以使得断点的触发依 赖于一定的外部条件 nTRANS: 用来判断是在用户态下还是非用 户态下,用户态下:nTRANS = 0,否则 nTRANS = 1

ARMJTAG调试原理

ARMJTAG调试原理1.JTAG接口与信号线:JTAG接口是一种五线接口,包括TCK(时钟),TMS(状态),TDI(数据输入),TDO(数据输出)和nTRST(复位)线。

其中,TCK是由调试器提供的时钟信号,TMS用于控制状态转移,TDI用于向调试目标芯片发送调试数据,TDO用于从芯片读取调试数据,nTRST用于复位芯片。

2.JTAG状态机:JTAG调试使用的是一种状态机来控制和驱动芯片的调试操作。

状态机包括IDLE(空闲)、DRSELECT(数据寄存器选择)、DRCAPTURE(数据寄存器捕捉)、DRSHIFT(数据寄存器移位)、DREXIT1(数据寄存器退出1)、DRPAUSE(数据寄存器暂停)、DREXIT2(数据寄存器退出2)和DRUPDATE(数据寄存器更新)等状态。

3.JTAG链:JTAG链是由多个JTAG设备组成的链式结构,每个设备都有一个唯一的识别码,称为设备ID。

调试时可以通过JTAG链,逐个选中目标芯片进行调试。

JTAG链的顺序由TMS信号行控制。

4.JTAG指令和数据:JTAG指令用于控制芯片进行特定的操作,如读/写寄存器、设置断点等。

JTAG数据用于传输调试数据,如程序代码、寄存器数据等。

指令和数据的传输是通过TMS和TDI信号行实现的。

5.调试器和调试目标芯片之间的通信:调试器通过JTAG接口与目标芯片进行通信,通过命令和数据传输来控制芯片进行调试操作。

调试器可以向芯片发送指令,读取和写入芯片的寄存器数据,加载和执行程序代码等。

在进行ARM芯片的JTAG调试时,通常包括以下步骤:1.连接JTAG调试器和目标芯片:将JTAG调试器通过JTAG接口与目标芯片进行连接,并确保连接稳定可靠。

2.识别与配置芯片:通过JTAG链识别和配置目标芯片,选择要调试的芯片。

调试器可以读取芯片的设备ID和其他信息,并为芯片配置合适的调试模式。

3.设定调试模式:通过JTAG指令设置芯片的调试模式,如停止模式、单步模式等。

jtag debug cpu原理

jtag debug cpu原理JTAG(Joint Test Action Group)是一种硬件调试和测试接口标准,它在集成电路设计中起着至关重要的作用。

通过JTAG接口,可以实现对CPU(Central Processing Unit,中央处理器)的调试和测试。

本文将介绍JTAG调试CPU的原理和工作方式。

我们来了解一下JTAG接口的基本原理。

JTAG接口是由IEEE (Institute of Electrical and Electronics Engineers,电气和电子工程师学会)制定的标准,它定义了一种用于测试和调试集成电路的通信协议。

JTAG接口通常由四个线路组成,即TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input)和TDO(Test Data Output)。

其中,TCK是时钟信号线,用于同步数据传输;TMS是模式选择线,用于控制JTAG接口的状态转换;TDI是数据输入线,用于向被调试的设备发送数据;TDO是数据输出线,用于从被调试的设备读取数据。

接下来,我们将JTAG接口应用于CPU的调试过程中。

在CPU的设计中,通常会在芯片上加入一个JTAG调试模块,用于与调试工具进行通信。

当CPU进入调试模式时,它将通过JTAG接口与调试工具进行连接。

调试工具可以是专用的调试器,也可以是支持JTAG 接口的开发板或者仿真器。

在调试过程中,调试工具通过TMS线控制JTAG接口的状态转换,使得CPU进入特定的调试模式。

然后,调试工具通过TDI线向CPU发送调试命令和数据。

CPU接收到这些命令和数据后,执行相应的操作,并通过TDO线将执行结果返回给调试工具。

调试工具可以根据返回的结果进行分析和判断,进一步调试CPU的运行状态。

通过JTAG接口,调试工具可以对CPU进行多种操作,例如设置断点、单步执行、读写寄存器等。

其中,断点是一种调试技术,可以在CPU执行到指定的地址时停下来,方便我们对程序进行跟踪和分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
‘1’ 表 示 写 操 作 , ‘ 00000 ’ 标 识 的 是 Debug Control Register的地址,中间32位是 要写入到Debug Control Register的数据。因 Debug Control Register长度为6,所以只有低 6位的数据序列‘111111’有效。
基本思想:在靠近芯片输入/输出管脚上 增加一个移位寄存器单元(边界扫描寄存 器)。
正常状态下,边界扫描寄存器对芯片 来说是透明的,所以正常的运行不会受到 任何的影响。
调试状态下,边界扫描寄存器将芯片 和外的输入输出隔离开,通过这些边界扫 描寄存器可以实现对芯片输入输出信号的 控制。具体控制过程如下:
2.6、EmbeddedICE的断点/观察点设置 EmbeddedICE有两个WtchPoint单元。
下面介绍一下WatchPoint寄存器的使用:
EmbeddedICE的一个主要作用是可以在 ARM程序中设置软件或硬件断点。在 EmbeddedICE中,集成了一个比较器,负责 把ARM处理器取指的地址A[31:0],数据
三、 JTAG常用指令
一、JTAG基本知识
1.1、 什么是JTAG JTAG是Joint Test Action Group(联合测
试行动组)的缩写,是IEEE1149.1标准。
1.2 、 JTAG的作用 使得IC芯片固定在PCB版上,只通过边
界扫描便可以被测试。
1.3、 JTAG调试结构
(1)、DEBUG主控制器:
将上面长度为38位的序列写入到扫描链 2中,TAP状态转换过程如下:
RUN-TEST/IDLE→ SELECT-DR-SCAN
→CAPTURE-DR →SHIFT-DR →EXIT1-DR
→UPDATE-DR →RUN-TEST/IDLE 在SHIFT-DR状态下,通过38个TCK时
钟驱动,就可以将上面的序列串行输入到 扫描练2当中去。在回到RUN-TEST/IDLE 状态后,Debug Control Register的值就会 被改写为111111。
也可以是第三方自定义的标准。典型的协 议转换器有:ARM公司的Multi-ICE,HJTAG,JLink等。
H-JTAG运行界面
J-Link的运行界面
(3)、调试目标机
系统的调试对象。典型的ARM7TDMI 内核的调试结构:
二、JTAG的工作原理
2.1、两个重要概念:边界扫描和TAP (1)边界扫描(Boundary-Scan):
nOPC: 检测当前的周期是取指令还是进行数 据访问。nOPC=0,表示当前周期进行取指。 nOPC=1,表示当前周期进行普通数据的访 问。(该位用的较多)
用INTEST 指令实现该操作,指令写入 与SCAN_N指令的过程类似
3)、写Debug Control Register 假设要将Debug Control Register的6位全
部置“1”,按照扫描链2的格式,需要写入到 扫描链2第序列应该为:
1,00000,0000,0000,0000,0000,0000,0000,0011,1 111
该寄存器的长度为1,来判断一个异常的 产生的原因:断点触发?观察点触发?还是 一个真的异常?
实例1:用Scan Chain 2 设置Debug Control Register
1)、 选择扫描链2,将其连接到TDI,TDO 之 间。具体过程如下:
通过TAP将SCAN_N指令写入到指令寄存器 当中去, TAP状态转换如下:RUNTEST/IDLE→SELECT-DR-SCAN→ SELECT-IRSCAN → CAPTURE-IR → SHIFT-IR → EXIT1-IR → UPDATE-IR → RUN-TEST/IDLE,在SHIFTIR状态下,将SCAN_N通过TDI写到指令寄存器 中去;接下来,访问被SCAN_N指令连接到TDI
运行有ARM公司或是第三方提供的 调试软件的PC机。如:ARM公司提供的 ADS、LINUX下的arm-elf-gdb等。通过这 些调试软件,可以发送高级调试命令,如: 设置/取消断点,读写MEMORY,单步跟 踪,全速运行等。
(2)、协议转换器(Protocol converter)
负责将Debug主控端发出的高级ARM 调试命令转换为底层的ARM JTAG调试命 令。 Debug主控端和协议转换器间的介质 可以有很多种,如:Earthnet、USB,串口, 并口等。 Debug主控端和协议转换器间的 通信协议可以是ARM公司的ANGEL标准,
测试模式选择,通过该信号控制 JTAG状态机的状态。TMS在TCK的上升 沿有效。标准强制要求
◆TDI(Test Data Input)
数据输入口。所有要输入到特定寄存器 的数据都是通过TDI口一位一位串行输入的 (TCK驱动)。标准里强制要求
◆TDO(Test Data Output)
数据输出口。所有要从特定的寄存器中 输出的数据都是通过TDO口串行的一位一 位输出的(TCK驱动)。标准里强制要求
JTAG调试原理
目录
一、JTAG基本知识 1.1、什么是JTAG 1.2 、 JTAG的作用 1.3、 JTAG调试结构
二、 JTAG的工作原理 2.1、两个重要概念:边界扫描和TAP 2.2、JTAG的状态机 2.3、 ARM7TDMI内核结构 2.4、 JTAG扫描链结构及工作过程 2.5、 EmbeddedICE-RT Logic的结构 2.6、 EmbeddedICE的断点/观察点设置
ARM7TDMI处理器包括三大部分: ◆ARM CPU Main Processor Logic
包括了对调试的硬件支持 ◆Embedded ICE-RT Logic
包括一组寄存器和比较器,用来产生调试 异常,设置断点和观察点。 ◆TAP Controller 通过JTAG接口来控制和操作扫描链
ARM7TDMI还提供了3个附加的信号: DBGRQ : 调试请求,通过把DBGREQ置 “1”,可以迫使ARM7TDMI进入调试状态
EmbeddedICE寄存器格式及含义 Debug Control Register 格式:
DBGACK:用来控制DBGACK信号的值 DBGRQ:是调试请求信号,通过将该信号
置“1”,可以强制ARM7TDMI暂停当前的 指令,进入调试状态 INTDIS:用来控制中断 SBZ/RAZ:任何时候都必须被置“0”
Monitor Mode Enable:用来控制是否进入 Monitor模式
EmbeddedICE-RT Disable:用来控制整个 EmbeddedICE-RT,是启用还是禁用
Debug Status Register 格式:
DBGACK:用来标识当前系统是否处于调试 状态。‘1’,表示进入;‘0’,表示未进入。
DBGRQ:用来标识DBGRQ信号的当前状态
IFEN:用来标识系统的中断控制状态:启用 还是禁用
cgenL:用来判断当前对调试器在调试状态下 对内存的访问是否完成
TBIT:该位用来判断ARM7TDMI是从ARM 状态还是THUMB状态进入到调试状 态的
Abort Status Register 格式:
当上述表达式值为真时,断点/观察点信 号有效,ARM内核进入Debug模式。
ARM中断点和观察点的设置 首先介绍一下与之设置密切相关的WP
Control Value/Mask Register。 WP Control Value/Mask Register格式:
WP Control Value/Mask Register格式含义:
D[31:0]以及一些控制信号与EmbeddedICE 中WatchPoint寄存器中设置的数值相比较 (具体说应该是进行与或运算),比较结果 用来确定输出一个ARM断点(BreakPoint) 信号。具体运算关系如下公式所描述:
{Av[31:0],Cv[4:0]} XOR {A[31:0],C[4:0]} OR {Am[31:0],Cm[4:0]} == 0xFFFFFFFF
ENABLE: 如果该位置0的话,意味着断点 触发条件永远不成立,也就是把全部断点 都给disable掉了
RANGE: 暂时不会用
CHAIN: 暂时不会用
EXTERN: 外部到EmbeddedICE-RT的输 入,通过该输入,可以使得断点的触发依 赖于一定的外部条件
nTRANS: 用来判断是在用户态下还是非用 户态下,用户态下:nTRANS = 0,否则 nTRANS = 1
① 、输入管脚:通过与之相连的边界 扫描寄存器把信号(数据)加载到该管脚 中去。
②、输出管脚:通过与之相连的边界 扫描 寄存器“捕获”该管脚上的输出信号。
注意:
芯片输入输出管脚上的边界扫描寄存器 单元可以相互连接起来,在芯片周围形成 一个边界扫描链。该链可以实现串行的输 入输出,通过相应的时钟信号和控制信号, 可方便的观察和控制在调试状态下的芯片。
DBGACK :调试确认,通过DBGACK,可 以判断当前ARM7TDMI是否在调试状态
BREAKPT :断点信号,这个信号是输入到 ARM7TDMI处理器内核的
2.4、JTAG扫描链结构及工作过程
ARM7TDMI的框图提供了3条扫描链: ◆Scan Chain 0
113个扫描单元,包括ARM所有的I/O,地 址/数据总线和输入/输出控制信号。此链很 复杂,不易控制,但包含信息丰富,可通 过它得到ARM7TDMI内核的所有信息。 ◆Scan Chain 1 33个扫描单元,包括数通过将2 写入到扫描链选择寄存器当中去,以将扫 描链2连接到TDI和TDO之间。将2写入扫 描链选择寄存器的状态转换如下:
RUN-TEST/IDLE →SELECT-DR-SCAN
→CAPTURE-DR →SHIFT-DR → EXIT1-DR
相关文档
最新文档