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

use*_*822 5 debugging arm jtag

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

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

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

谢谢你!

old*_*mer 2

Arm 文档描述了调试 Tap 控制器、jtag 可访问寄存器、执行暂停或来自 jtag 的任何其他命令所需的寄存器写入和读取序列。

http://infocenter.arm.com

有两种基本方法

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

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

现在为了利益,ARM 或 mips 或英特尔或任何人都不会每次都重新设计他们的 ocd。如果他们每次都改变它,那么所有工具供应商都必须投资NRE来支持新事物,最终或时不时地,他们会查看你的产品或市场,并决定他们不会支持该新芯片/设计。如果经常使用相同的片上调试器或相同的基线设计(可能带有新的可选功能),那么工具供应商不必更改任何内容,或者可能只需将另一个 JTAG ID 添加到其已知处理器列表中类型,并且其余代码不必更改。