历史上的今天
返回首页

历史上的今天

今天是:2025年02月02日(星期日)

2020年02月02日 | ARM JTAG 调试原理

2020-02-02 来源:eefocus

JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,所以在电路版上的很多芯片可以将他们的JTAG接脚


通过Daisy Chain的方式连在一起,并且Probe只需连接到一个“JTAG端口”就可以访问一块印刷电路板上的所有IC。


这些连接引脚是:

  1. TDI(测试数据输入)

  2. TDO(测试数据输出)

  3. TCK(测试时钟)

  4. TMS(测试模式选择)

  5. 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 状态;

推荐阅读

史海拾趣

Hisetec Electronic Co Ltd公司的发展小趣事

背景:随着环保意识的增强,消费者对电子产品的环保要求也越来越高。Hisetec Electronic Co Ltd公司积极响应这一趋势,将绿色环保理念融入产品设计、生产和回收的全过程。

发展:公司投入大量资金研发环保材料和生产工艺,确保产品从源头到终端都符合环保标准。同时,公司还建立了完善的电子废弃物回收体系,对废旧电子产品进行拆解、分类和再利用。这些举措不仅赢得了消费者的信任和支持,还推动了整个电子行业的绿色升级。

Cal-Chip Electronics公司的发展小趣事

在快速发展的过程中,Cal-Chip Electronics公司始终关注社会责任和可持续发展。公司积极参与公益事业,支持教育、环保等领域的发展。同时,公司还注重环保生产,通过引进先进的环保技术和设备,减少生产过程中的污染排放。此外,公司还建立了完善的员工培训体系,为员工提供广阔的职业发展空间。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上是关于Cal-Chip Electronics公司在电子行业发展的5个相关故事,这些故事展示了公司在不同历史阶段所取得的成就和面临的挑战。通过不断努力和创新,Cal-Chip Electronics公司已经成为了电子行业的一颗璀璨明星。

CMD公司的发展小趣事

随着公司业务的不断拓展,CMD开始在全球范围内建立销售办事处。从最初的美国加利福尼亚州Irvine总部,逐渐扩展至加州、明尼苏达州、马萨诸塞州,甚至英国等地。这一布局不仅增强了公司的市场影响力,也为其提供了更多的商业合作机会。

台湾第一电阻(Firstohm)公司的发展小趣事
电冰箱电路中常见的易损部件包括启动继电器、过载保护器、温控器等。启动继电器负责启动压缩机,如果其性能不良或损坏,将导致压缩机无法启动。过载保护器用于保护压缩机免受过载损坏,如果其触点接触不良或损坏,也可能导致压缩机无法正常工作。温控器用于控制冰箱的温度,如果其出现故障,将影响冰箱的制冷效果。
AITSEMI公司的发展小趣事

AITSEMI公司成立于XXXX年,创立之初便以研发高性能模拟与混合信号IC为核心目标。面对当时市场上对高性能、高性价比集成电路的迫切需求,AITSEMI团队凭借深厚的技术积累和敏锐的市场洞察力,成功开发出了一系列具有竞争力的产品,为公司的初步发展奠定了坚实的基础。

DFI公司的发展小趣事

DFI公司自创立之初,就致力于技术创新。在电子主板领域,DFI凭借其对高性能主板的深入研究,成功开发出多款领先行业的产品。例如,在2002年,DFI推出了LanParty UT nF4 SLI-DR Venus限量版主板,这款产品凭借其出色的性能和稳定性,迅速赢得了全球玩家的青睐。这一系列的创新举措不仅提升了DFI的品牌知名度,也为其在电子主板市场占据了重要地位。

问答坊 | AI 解惑

E13C柴油发动机助力日野Profia提前实现2015年度燃效标准

日野汽车即将上市大型卡车“日野Profia”的部分级别中达到“2015年度燃效标准”的车型。该燃效标准已从2006年4月1日开始实施,作为达到“比新长期尾气排放标准PM(颗粒)降低10%”的重型车重新获得了认证。 直列6缸涡轮柴油发动机“E13C”和自动MT ...…

查看全部问答>

ULN2003可否同时驱动24伏的7个继电器

我昨天用通过单片机用两个三极管驱动了一个24V的继电器通断,但是我现在想用ULN2003通过单片机同时驱动7个24V的继电器通断。不知道这样是否能行,想请大家来讨论。如果有做过这实验的告诉我一声,谢谢!邮箱lijianhuijgsdx@163.com   QQ5 ...…

查看全部问答>

Wince(Arm9) 空白SmartCard Read/write的问题

请问在WinCE(ARM9)的环境下,我要怎么写信息到空白芯片卡? Read的部份我用winscard.dll提供的function来完成,但是不知道如果write数据进卡片,有人写过吗?请指导指导,谢谢 ~ Ps.卡片也尚未选定,如果有用过觉得不错还请推荐,主要是能读能写 ...…

查看全部问答>

求助 移植lwip 在lpc2468 上问题

我刚刚接触嵌入式编程不久 在ucos操作系统移植一个TCP/IP协议栈,我移植的是LwIP,但是过程中遇到了许多问题无法解决, 我所使用的是DM9161的网络芯片,请问那位大侠,仁兄 成功的移植,可否帮帮小弟   目前主要问题是 一个网络接收时收 ...…

查看全部问答>

这算不算STM8的BUG

我在main()函数里边定义了两个整开变量 unsigned int save1; unsigned int save2; 我仿真后发现svae1变了,save2也根着变,看一下地址才发现一样。 我又把两个定义拿到main外边。这时正常了,这是一件事,还有一件就是如下: for(;;) { ...…

查看全部问答>

FPGA使用jic下载遇到的问题

使用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 ...…

查看全部问答>

为什么低频电压源一般都不考虑内阻,而2M—30M这种高频电压源一般内阻都是50欧姆

为什么低频电压源一般都不考虑内阻,而2M—30M这种高频电压源一般内阻都是50欧姆…

查看全部问答>

关于TMS570LS31x开发板

各位大神,我买了TMS570LS31x开发板,开始是能和电脑通讯,也能烧录程序。但在做demo里的演示(在做演示之前刚烧录过一些例程里的程序)时出错,提示“flash被当前的另一个程序占用,是否继续”,我点继续但没有成功进入Hercules Safety MCU Demos ...…

查看全部问答>

ISE 某一条路径的时序约束问题

在ISE中能不能对某一条路径进行时序约束,能不能约束路径延时的最小值,不是延时的最大值哦,有没有懂的,求回答…

查看全部问答>