历史上的今天
今天是:2025年02月02日(星期日)
2020年02月02日 | ARM JTAG 调试原理
2020-02-02 来源:eefocus
JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,所以在电路版上的很多芯片可以将他们的JTAG接脚
通过Daisy Chain的方式连在一起,并且Probe只需连接到一个“JTAG端口”就可以访问一块印刷电路板上的所有IC。
这些连接引脚是:
TDI(测试数据输入)
TDO(测试数据输出)
TCK(测试时钟)
TMS(测试模式选择)
TRST(测试复位)可选。
因为只有一条数据线,通信协议有必要像其他串行设备接口,如SPI一样为串列传输。
时钟由TCK引脚输入。配置是通过TMS引脚采用状态机的形式一次操作一位来实现的。
每一位数据在每个TCK时钟脉冲下分别由TDI和TDO引脚传入或传出。
可以通过加载不同的命令模式来读取芯片的标识,对输入引脚采样,驱动(或悬空)输出引脚,
操控芯片功能,或者旁路(将TDI与TDO连通以在逻辑上短接多个芯片的链路)。
TCK的工作频率依芯片的不同而不同,但其通常工作在10-100MHz(每位10-100ns)。
当在集成电路中进行边界扫描时,被处理的信号是在同一块IC的不同功能模块间的,而不是不同IC之间的。
TRST引脚是一个可选的相对待测逻辑低电平有效的复位开关——通常是异步的,但有时也是同步的,依芯片而定。
如果该引脚没有定义,则待测逻辑可由同步时钟输入复位指令而复位。
尽管如此,极少消费类产品提供外部的JTAG端口接口,但作为开发样品的残留,
这些接口在印刷电路板上十分常见。在研发后,这些接口常常为反向工程提供了非常良好的途径。
Test Clock Input (TCK)
TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。
Test Mode Selection Input(TMS)
TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。
Test Data Input(TDI)
TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI输入端口串行输入的(由TCK驱动)。
Test Data Output(TDO)
TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO输出端口串行输出的(由TCK驱动)。
Test Reset Input(TRST)
TRST可以用来对TAP Controller进行复位(初始化)。
不过这个信号接口在IEEE 1149.1标准里是可选的,因为通过TMS也可以对TAP Controller进行复位(初始化)操作。
(VTREF) :接口信号电平参考电压一般直接连接Vsupply。
这个可以用来确定ARM的JTAG接口使用的逻辑电平(比如3.3V,还是5.0V)
Return Test Clock ( RTCK) :
可选项,由目标端反馈给仿真器的时钟信号,用来同步TCK信号的产生,不使用时直接接地。
System Reset ( nSRST):
可选项,与目标板上的系统复位信号相连,可以直接对目标系统复位。
同时可以检测目标系统的复位情况,为了防止误触发应在目标端加上适当的上拉电阻。



Note
• The signals TDI, TMS, TCK, RTCK and TDO are typically pulled up on the target board to keep them stable when the debug equipment is not connected.
• DBGRQ and DBGACK are typically pulled down on the target.
• If there is no RTCK signal provided on the processor, it can either be pulled to a fixed logic level or connected to the TCK signal to provide a direct loop-back.
• All pull-up and pull-down resistors must be in the range 1K-100KΩ.
• The VTREF signal is typically connected directly to the VDD rail. If a series resistor is used to protect against short-circuits, it must have a value no greater than 100Ω.
• To improve signal integrity, it is good practice to provide an impedance matching resistor on the TDO and RTCK outputs of the processor.
The value of these resistors, added to the impedance of the driver must be approximately equal to 50Ω.

In a JTAG device that fully complies to IEEE1149.1-2001, TDI and TMS are sampled on the rising edge of TCK,
and TDO changes on the falling edge of TCK.
To take advantage of these properties, DSTREAM samples TDO on the rising edge of TCK and changes its TDI and TMS signals on the falling edge of TCK.
This means that with a fully compliant target, issues with minimum setup and hold times can always be resolved by decreasing the TCK frequency,
because this increases the separation between signals changing and being sampled.
Note
There are no separate timing requirements for adaptive clocking mode,
because the minimum Tbsch and Tbscl times are identical and are the same as for non-adaptive clocking.
Tbsis and Tbsih are relative to RTCK rising, and not TCK rising, as RTCK is used to sample TDO in adaptive clocking mode.
The only real timing difference is that in adaptive mode,
DSTREAM samples TDO on the rising edge of RTCK and not TCK, so TDO timing is relative to RTCK.

The debug software enables you to change the TCK frequency.
The TCK LOW:HIGH mark-space ratio is always 50:50.
The other parameters must be considered with the specific values of Tbscl and Tbsch that you have chosen.
The default values for an autoconfigured single-TAP system are, nominally, Tbscl=50ns and Tbsch=50ns.
• Tbsod is the maximum delay between the falling edge of TCK and valid levels on the TDI and TMS DSTREAM output signals.
The target samples these signals on the following rising edge of TCK
and so the minimum setup time for the target, relative to the rising edge of TCK, is Tbscl–Tbsod.
• Tbsis is the minimum setup time for the TDO input signal, relative to the rising edge of TCK when DSTREAM samples this signal.
The target changes its TDO value on the previous falling edge of TCK
and so the maximum time for the target TDO level to become valid, relative to the falling edge of TCK, is Tbscl–Tbsis.

The SWDIO, SWCLK and SWO signals are typically pulled up on the target to keep them stable when the debug equipment is not connected.
• All pull-up resistors must be in the range 1K-100KΩ.
• The VTREF signal is typically connected directly to the VDD rail. If a series resistor is used to protect against short-circuits, it must have a value no greater than 100Ω.
• To improve signal integrity, it is good practice to provide an impedance matching resistor on the SWDIO and SWO outputs of the processor.
The value of these resistors, added to the impedance of the driver must be approximately equal to 50Ω.










OPEN-JTAG 开发小组
1 前言
这篇文章主要介绍 ARM JTAG 调试的基本原理。
基本的内容包括了 TAP (TEST ACCESS PORT) 和 BOUNDARY-SCAN ARCHITECTURE 的介绍,
在此基础上,结合 ARM7TDMI 详细 介绍了的 JTAG 调试原理。
这篇文章主要是总结了前段时间的一些心得体会,希望对想了解 ARM JTAG 调试的网友们 有所帮助。
我个人对 ARM JTAG 的理解还不是很透彻,在文章中,难免会有偏失和不准确的地 方,
希望精通 JTAG 调试原理的大侠们不要拍砖,有什么问题提出来,我一定尽力纠正。
同时 也欢迎对 ARM JTAG 调试感兴趣的朋友们一起交流学习。
2 IEEE Standard 1149.1 - Test Access Port and Boundary-Scan Architecture
既然是介绍 JTAG 调试,还是让我们从 IEEE 的 JTAG 调试标准开始吧。
JTAG 是 JOINT TEST ACTION GROUP 的简称。IEEE 1149.1 标准就是由 JTAG 这个组织最初提出的,最终由 IEEE 批准并且标准化的。
所以,这个 IEEE 1149.1 这个标准一般也俗称 JTAG 调试标准。
接 下 来的这 一 部分, 主 要简单 的 介绍了 TAP (TEST ACCESS PORT) 和 BOUNDARY-SCAN ARCHITECTURE 的基本构架。
虽然不是很全面,但对了解 JTAG 的基本 原理来说,应该是差不离了。
如果希望更全面深入的了解 JTAG 的工作原理,可以参考 IEEE 1149.1 标准。
2-1 边界扫描
在 JTAG 调试当中,边界扫描(Boundary-Scan)是一个很重要的概念。
边界扫描技术的 基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。
因为这些移位寄存器单 元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。
当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。
通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。
对于芯片的输 入管脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载倒该管脚中去;
对于 芯片的输出管脚,也可以通过与之相连的边界扫描寄存器“捕获”(CAPTURE)该管脚上的 输出信号。
在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,所以正常的运 行不会受到任何影响。
这样,边界扫描寄存器提供了一个便捷的方式用以观测和控制所需要 调试的芯片。
另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来, 在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。
一般的芯片都会提供几条独立的 边界扫描链,用来实现完整的测试功能。
边界扫描链可以串行的输入和输出,通过相应的时 钟信号和控制信号,就可以方便的观察和控制处在调试状态下的芯片。
利用边界扫描链可以实现对芯片的输入输出进行观察和控制。
下一个问题是:如何来管 理和使用这些边界扫描链?
对边界扫描链的控制主要是通过 TAP(Test Access Port)Controller 来完成的。
在下一个小节,我们一起来看看 TAP 是如何工作的。
2-2 TAP (TEST ACCESS PORT)
在上一节,我们已经简单介绍了边界扫描链,而且也了解了一般的芯片都会提供几条边 界扫描链,用来实现完整的测试功能。
下面,我将逐步介绍如何实现扫描链的控制和访问。
在 IEEE 1149.1 标准里面,寄存器被分为两大类:
数据寄存器(DR-Data Register)和指令 寄存器(IR-Instruction Register)。
边界扫描链属于数据寄存器中很重要的一种。
边界扫描链用 来实现对芯片的输入输出的观察和控制。而指令寄存器用来实现对数据寄存器的控制,
例如: 在芯片提供的所有边界扫描链中,选择一条指定的边界扫描链作为当前的目标扫描链,并作 为访问对象。
下面,让我们从 TAP(Test Access Port)开始。
TAP 是一个通用的端口,通过 TAP 可以访问芯片提供的所有数据寄存器(DR)和指令 寄存器(IR)。
对整个 TAP 的控制是通过 TAP Controller 来完成的。
TAP 总共包括 5 个信号接 口 TCK、TMS、TDI、TDO 和 TRST :
其中 4 个是输入信号接口和另外 1 个是输出信号接口。
一般,我们见到的开发板上都有一个 JTAG 接口,该 JTAG 接口的主要信号接口就是这 5 个。
下面,我先分别介绍这个 5 个接口信号及其作用。
Test Clock Input (TCK) TCK 为 TAP 的操作提供了一个独立的、基本的时钟信号,TAP 的所有操作都是通过 这个时钟信号来驱动的。
TCK 在 IEEE 1149.1 标准里是强制要求的。
Test Mode Selection Input (TMS) TMS 信号用来控制 TAP 状态机的转换。
通过 TMS 信号,可以控制 TAP 在不同的状 态间相互转换。TMS 信号在 TCK 的上升沿有效。
TMS 在 IEEE 1149.1 标准里是强制 要求的。
Test Data Input (TDI) TDI 是数据输入的接口。所有要输入到特定寄存器的数据都是通过 TDI 接口一位一位 串行输入的(由 TCK 驱动)。
TDI 在 IEEE 1149.1 标准里是强制要求的。
Test Data Output (TDO) TDO 是数据输出的接口。
所有要从特定的寄存器中输出的数据都是通过 TDO 接口一 位一位串行输出的(由 TCK 驱动)。
TDO 在 IEEE 1149.1 标准里是强制要求的。
Test Reset Input (TRST) TRST可以用来对TAP Controller进行复位(初始化)。
不过这个信号接口在IEEE 1149.1 标准里是可选的,并不是强制要求的。
因为通过 TMS 也可以对 TAP Controller 进行复 位(初始化)。
事实上,通过 TAP 接口,对数据寄存器(DR)进行访问的一般过程是:
通过指令寄存器(IR),选定一个需要访问的数据寄存器; 把选定的数据寄存器连接到 TDI 和 TDO 之间;
由 TCK 驱动,通过 TDI,把需要的数据输入到选定的数据寄存器当中去;
同时把选 定的数据寄存器中的数据通过 TDO 读出来。
接下来,让我们一起来了解一下 TAP 的状态机。
TAP 的状态机如图 1 所示,总共有 16 个 状态。在图中,每个六边形表示一个状态,六边形中标有该状态的名称和标识代码。
图中的 箭头表示了 TAP Controller 内部所有可能的状态转换流程。
状态的转换是由 TMS 控制的,所 以在每个箭头上有标有 tms = 0 或者 tms = 1。
在 TCK 的驱动下,从当前状态到下一个状态 的转换是由 TMS 信号决定。
假设 TAP Controller 的当前状态为 Select-DR-Scan,在 TCK 的驱 动下,
如果 TMS = 0,TAP Controller 进入 Capture-DR 状态;
如果 TMS = 1,TAP Controller 进入 Select-IR-Scan 状态。

这个状态机看似很复杂,其实理解以后会发现这个状态机其实很直接、很简单。
观察图 1,我们可以发现,除了 Test-Logic Reset 和 Test-Run/Idle 状态外,其他的状态有些类似。
例 如 Select-DR-Scan 和 Select-IR-Scan 对应,Capture-DR 和 Capture-IR 对应,Shift-DR 和 Shift-IR 对应,等等。
在这些对应的状态中,DR 表示 Data Register,IR 表示 Instruction Register。
记 得我们前面说过吗,寄存器分为两大类,数据寄存器和指令寄存器。
其实标识有 DR 的这些 状态是用来访问数据寄存器的,而标识有 IR 的这些状态是用来访问指令寄存器的。
在详细描述整个状态机中的每一个状态之前,首先让我们来想一想:
要通过边界扫描链 来观察和控制芯片的输入和输出,需要做些什么?
如果需要捕获芯片某个管脚上的输出,首 先需要把该管脚上的输出装载到边界扫描链的寄存器单元里去,
然后通过 TDO 输出,这样我 们就可以从 TDO 上得到相应管脚上的输出信号。
如果要在芯片的某个管脚上加载一个特定的 信号,则首先需要通过 TDI 把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元 里去,
然后把该寄存器单元的值加载到相应的芯片管脚。
下面,让我们一起来看看每个状态 具体表示什么意思?完成什么功能?
Test-Logic Reset 系统上电后,TAP Controller 自动进入该状态。
在该状态下,测试部分的逻辑电路全部被禁用,以保证芯片核心逻辑电路的正常工作。
通过 TRST 信号也可以对测试逻辑电路进 行复位,使得 TAP Controller 进入 Test-Logic Reset 状态。
前面我们说过 TRST 是可选的 一个信号接口,这是因为在 TMS 上连续加 5 个 TCK 脉冲宽度的“1”信号
也可以对测试 逻辑电路进行复位,使得 TAP Controller 进入 Test-Logic Reset 状态。
所以,在不提供 TRST 信号的情况下,也不会产生影响。
在该状态下,如果 TMS 一直保持为“1”,TAP Controller 将保持在 Test-Logic Reset 状态下;
如果 TMS 由“1”变为“0”(在 TCK 的上升沿触发), 将使 TAP Controller 进入 Run-Test/Idle 状态。
Run-Test/Idle 这个是 TAP Controller 在不同操作间的一个中间状态。
这个状态下的动作取决于当前指令 寄存器中的指令。
有些指令会在该状态下执行一定的操作,而有些指令在该状态下不需 要执行任何操作。
在该状态下,如果 TMS 一直保持为“0”,TAP Controller 将一直保持 在 Run-Test/Idle 状态下;
如果 TMS 由“0”变为“1”(在 TCK 的上升沿触发),将使 TAP Controller 进入 Select-DR-Scan 状态。
Select-DR-Scan 这是一个临时的中间状态。
如果 TMS 为“0” (在 TCK 的上升沿触发),TAP Controller 进入 Capture-DR 状态,后续的系列动作都将以数据寄存器作为操作对象;
如果 TMS 为 “1” (在 TCK 的上升沿触发),TAP Controller 进入 Select-IR-Scan 状态。
Capture-DR 当 TAP Controller 在这个状态中,在 TCK 的上升沿,芯片输出管脚上的信号将被“捕获” 到与之对应的数据寄存器的各个单元中去。
如果 TMS 为“0”(在 TCK 的上升沿触发), TAP Controller 进入 Shift-DR 状态;
如果 TMS 为“1” (在 TCK 的上升沿触发),TAP Controller 进入 Exit1-DR 状态。
Shift-DR 在这个状态中,由 TCK 驱动,每一个时钟周期,被连接在 TDI 和 TDO 之间的数据寄存 器
将从 TDI 接收一位数据,同时通过 TDO 输出一位数据。
如果 TMS 为“0” (在 TCK 的上升沿触发),TAP Controller 保持在 Shift-DR 状态;
如果 TMS 为“1” (在 TCK 的 上升沿触发),TAP Controller 进入到 Exit1-DR 状态。
假设当前的数据寄存器的长度为 4。
如果 TMS 保持为 0,那在 4 个 TCK 时钟周期后,该数据寄存器中原来的 4 位数据(一 般是在 Capture-DR 状态中捕获的数据)将从 TDO 输出来;
同时该数据寄存器中的每个 寄存器单元中将分别获得从 TDI 输入的 4 位新数据。
Update-DR 在 Update-DR 状态下,由 TCK 上升沿驱动,数据寄存器当中的数据将被加载到相应的芯 片管脚上去,用以驱动芯片。
在该状态下,如果 TMS 为“0”,TAP Controller 将回到 Run-Test/Idle 状态;
上一篇:ARM2440换lcd
史海拾趣
|
E13C柴油发动机助力日野Profia提前实现2015年度燃效标准 日野汽车即将上市大型卡车“日野Profia”的部分级别中达到“2015年度燃效标准”的车型。该燃效标准已从2006年4月1日开始实施,作为达到“比新长期尾气排放标准PM(颗粒)降低10%”的重型车重新获得了认证。 直列6缸涡轮柴油发动机“E13C”和自动MT ...… 查看全部问答> |
|
我昨天用通过单片机用两个三极管驱动了一个24V的继电器通断,但是我现在想用ULN2003通过单片机同时驱动7个24V的继电器通断。不知道这样是否能行,想请大家来讨论。如果有做过这实验的告诉我一声,谢谢!邮箱lijianhuijgsdx@163.com QQ5 ...… 查看全部问答> |
|
Wince(Arm9) 空白SmartCard Read/write的问题 请问在WinCE(ARM9)的环境下,我要怎么写信息到空白芯片卡? Read的部份我用winscard.dll提供的function来完成,但是不知道如果write数据进卡片,有人写过吗?请指导指导,谢谢 ~ Ps.卡片也尚未选定,如果有用过觉得不错还请推荐,主要是能读能写 ...… 查看全部问答> |
|
我刚刚接触嵌入式编程不久 在ucos操作系统移植一个TCP/IP协议栈,我移植的是LwIP,但是过程中遇到了许多问题无法解决, 我所使用的是DM9161的网络芯片,请问那位大侠,仁兄 成功的移植,可否帮帮小弟 目前主要问题是 一个网络接收时收 ...… 查看全部问答> |
|
我在main()函数里边定义了两个整开变量 unsigned int save1; unsigned int save2; 我仿真后发现svae1变了,save2也根着变,看一下地址才发现一样。 我又把两个定义拿到main外边。这时正常了,这是一件事,还有一件就是如下: for(;;) { ...… 查看全部问答> |
|
使用JTAG下载.sof文件,FPGA运行正常;但是使用.jic文件固化代码的话,1、只勾选config显示可以下载,但是掉电后不能重配置成功。2、勾选config和verify的话,就会出现下面的信息:Info: Configuring device index 1Info: Device 1 contains JTAG I ...… 查看全部问答> |
|
小弟初接触电子监控,现在有个开发项目前期需要按围墙电子监控。 基本情况如下: 1、围墙平面为不规则四边形,四边长分别为:西边280米、北边329米、东边242米、南边330米; 2、在距离西北角120 ...… 查看全部问答> |
|
各位大神,我买了TMS570LS31x开发板,开始是能和电脑通讯,也能烧录程序。但在做demo里的演示(在做演示之前刚烧录过一些例程里的程序)时出错,提示“flash被当前的另一个程序占用,是否继续”,我点继续但没有成功进入Hercules Safety MCU Demos ...… 查看全部问答> |




