arm 文档描述了调试抽头控制器、jtag 可访问寄存器、执行暂停或来自 jtag 的任何其他命令所需的寄存器写入和读取序列。
http://infocenter.arm.com
有两种基本方法
1) JTAG 并不是为了芯片和电路板测试而发明的软件调试平台。即使它已经用于芯片和电路板测试,您也可以将它用于软件调试。您可以做的非常丑陋但实用的事情是使用 jtag 接管芯片中的位,例如边界扫描,并通过控制时钟输入来单步处理处理器。您还可以接管外部总线,例如启动闪存等 - 丑陋但功能齐全。
2) 您在开发处理器时考虑到了基于 JTAG 的调试,因此到内核的管道以某种形式或方式完全集成了这种调试(这取决于处理器供应商和产品线,也许每个设计工程师都有自己的事物)。您基本上是通过 JTAG 接口发送命令或与调试器中的寄存器通信,这些寄存器以设计人员允许的任何方式控制处理器。
现在为了利益,ARM 或 mips 或 Intel 或任何不会每次都重新设计他们的 ocd 的人。如果他们每次都更改它,那么所有工具供应商都必须投资NRE来支持新事物,最终或不时他们会查看您的产品或市场并决定他们不会支持该新芯片/设计。如果经常使用相同的片上调试器或相同的基线设计,并且可能经常使用新的可选功能,那么工具供应商无需更改任何内容,或者只需将另一个 JTAG ID 添加到他们的已知处理器列表中类型,并且他们的其余代码不必更改。