use*_*822 5 debugging arm jtag
我试图了解 JTAG 调试背后发生的过程。据我了解,支持 JTAG 调试的设备在设备中有一个称为 DOC(片上调试)的特殊组件。该组件的核心是 TAP 控制器,负责执行来自连接的 JTAG 适配器的请求。
有人可以解释一下适配器向 TAP 控制器发送暂停请求时会发生什么吗?我对电信号的细节不感兴趣,但对过程更感兴趣。是否必须设置 DOC 的任何寄存器才能停止系统?如果是这样,DOC 如何“知道”何时检查该寄存器的值?
我还知道,在大多数 ARM 处理器上,DOC 除非停止,否则无法访问内核寄存器。但是任何内核进程都可以访问 DOC 的寄存器吗?
谢谢你!
Arm 文档描述了调试 Tap 控制器、jtag 可访问寄存器、执行暂停或来自 jtag 的任何其他命令所需的寄存器写入和读取序列。
有两种基本方法
1) JTAG 并不是作为软件调试平台而发明的,而是用于芯片和电路板测试。尽管它已经用于芯片和电路板测试,您也可以将它用于软件调试。您可以做的非常丑陋但实用的事情是使用 jtag 接管芯片中的位,例如边界扫描并通过控制时钟输入单步执行处理器。您还可以接管外部总线,例如启动闪存等 - 丑陋但功能齐全。
2) 您在开发处理器时考虑到基于 JTAG 的调试,因此到核心的管道以某种形式或方式完全集成了这种调试(这取决于处理器供应商和产品线,也许每个单独的设计工程师都会做自己的事情)事物)。您基本上是通过 JTAG 接口发送命令或与调试器中的寄存器进行通信,这些寄存器以设计人员允许的任何方式控制处理器。
现在为了利益,ARM 或 mips 或英特尔或任何人都不会每次都重新设计他们的 ocd。如果他们每次都改变它,那么所有工具供应商都必须投资NRE来支持新事物,最终或时不时地,他们会查看你的产品或市场,并决定他们不会支持该新芯片/设计。如果经常使用相同的片上调试器或相同的基线设计(可能带有新的可选功能),那么工具供应商不必更改任何内容,或者可能只需将另一个 JTAG ID 添加到其已知处理器列表中类型,并且其余代码不必更改。
归档时间: |
|
查看次数: |
2631 次 |
最近记录: |