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

时间:2013-10-22 08:10:59

标签: debugging arm jtag

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

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

我也知道,在大多数ARM处理器上,DOC不能访问核心寄存器,除非它被暂停。但是任何内核进程都可以访问DOC的寄存器吗?

谢谢你!

1 个答案:

答案 0 :(得分:1)

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

http://infocenter.arm.com

有两种基本方法

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

2)您在开发基于jtag调试的处理器时,所以管道,某种形式或方式的核心(依赖于处理器供应商和产品线,也许每个设计工程师都做自己的事情)这个调试完全集成。您基本上是通过jtag作为接口发送命令或与调试器中的寄存器通信,这些寄存器以设计者允许的任何方式控制处理器。

现在它有利于arm或mips或intel或者任何人每次都不重新设计他们的ocd。如果您每次都更改它,那么所有工具供应商都必须投资NRE来支持您的新产品,并最终或不时地看待您的产品或市场,并决定他们不会支持新的芯片/设计。如果您使用相同的片上调试器或具有相同的基线设计,可能每隔一段时间使用一个新功能,这是可选的。工具供应商不必更改任何内容,或者您​​只需要在列表中添加另一个jtag id即可知道它是那种处理器而其余代码不必更改。