Debugging JTAG调试器如何停止基于ARM的设备的核心?

Debugging JTAG调试器如何停止基于ARM的设备的核心?,debugging,arm,jtag,Debugging,Arm,Jtag,我试图理解JTAG调试背后的过程。 据我所知,支持JTAG调试的设备中有一个特殊的组件,叫做DOC(芯片上调试)。该组件的核心是TAP控制器,负责执行来自所连接JTAG适配器的请求 有人能解释一下适配器向TAP控制器发送停止请求时会发生什么吗?我对电信号的细节不感兴趣,但对过程更感兴趣。是否必须设置文档的任何注册表才能停止系统?如果是,文档如何“知道”何时检查此寄存器的值 我还知道,在大多数ARM处理器上,除非停止,否则DOC无法访问核心寄存器。但是,是否有任何内核进程可以访问DOC的寄存器 谢

我试图理解JTAG调试背后的过程。 据我所知,支持JTAG调试的设备中有一个特殊的组件,叫做DOC(芯片上调试)。该组件的核心是TAP控制器,负责执行来自所连接JTAG适配器的请求

有人能解释一下适配器向TAP控制器发送停止请求时会发生什么吗?我对电信号的细节不感兴趣,但对过程更感兴趣。是否必须设置文档的任何注册表才能停止系统?如果是,文档如何“知道”何时检查此寄存器的值

我还知道,在大多数ARM处理器上,除非停止,否则DOC无法访问核心寄存器。但是,是否有任何内核进程可以访问DOC的寄存器


谢谢大家!

arm文档描述了调试tap控制器、jtag可访问寄存器、执行halt或来自jtag的任何其他命令所需的寄存器写入和读取顺序

有两种基本方法

1) JTAG并不是为了成为一个软件调试平台而被发明的,它是为了芯片和电路板的测试。即使它已经用于芯片和电路板测试,您也可以将其用于软件调试。你能做的一件丑陋但实用的事情是使用jtag来接管芯片中的位,例如边界扫描和通过控制时钟输入单步执行处理器。您还可以接管外部总线,如启动闪存等-丑陋但功能正常

2) 您在开发处理器时考虑了基于JTAG的调试,因此到核心的管道以某种形式或方式完全集成了这种调试(这取决于处理器供应商和产品线,可能每个设计工程师都会做自己的事情)。您基本上是通过JTAG接口发送命令或与调试器中的寄存器通信,这些寄存器以设计器允许的任何方式控制处理器


现在为了利益,ARM或mips或Intel或任何人都不会每次都重新设计他们的ocd。如果他们每次都改变它,那么所有的工具供应商将不得不投资支持一个新的东西,最终或不时地,他们会看看你的产品或市场,并决定他们不会支持新的芯片/设计。如果使用相同的片上调试器或相同的基线设计,可能每隔一段时间就有一个新的可选功能,那么工具供应商无需更改任何内容,或者可能只需在已知处理器类型列表中添加另一个JTAG ID,他们的其余代码不必更改。

您可能可以参考Trace32 Lauterbach文档。[1]: