debugging - JTAG 如何用作调试器?

标签 debugging hardware jtag

我了解 JTAG 如何用作边界扫描器(http://www.fpga4fun.com/JTAG1.html 中有非常清晰的解释)。然而,我看不出如今 JTAG 如何用作硬件级调试器(有点类似于在线仿真器)。

<强>1。有人可以解释一下 JTAG 如何用作硬件级调试器吗?

我的假设是片上必须有一些额外的硬件来帮助调试,而 JTAG 只是驱动该硬件来获取调试信息。如果我的理解是正确的 -

2a。该硬件是什么?

2b。有标准吗?

我相当怀疑标准部分,因为我见过的基于 JTAG 的硬件级调试器的所有实现都彼此不同。

最后,将 JTAG 称为硬件级调试器确实令人困惑,而 JTAG 标准并未定义任何此类内容。那么使用 JTAG 时是否有不同的名称?

最佳答案

JTAG 只是一种与芯片内部接口(interface)的方法,它与“常用”芯片功能一起工作。它基本上是一个多模式(同步)串行端口。

这允许的事情之一是通过直接访问引脚进行边界扫描。

正如您所猜测的,另一个方法是访问芯片内的额外硬件。该硬件可以设置为提供(例如)硬件断点、读取寄存器和任意内存位置的能力、对内部闪存进行编程等。这些是调试器应用程序可以使用的东西。

JTAG 标准为设备特定扩展提供了空间,这些扩展始终供芯片设计人员用来提供此类功能。有人尝试标准化该接口(interface),其中包括 JTAG 以及调试硬件的更高速率连接,称为 Nexus 。然而,我只见过飞思卡尔实现它,所以它似乎并不像人们希望的那样有用!

关于术语,是的,将“JTAG”本身称为硬件调试器可能是错误的。我不完全确定“JTAG”是什么(如问题标题中所用) - 也许“JTAG pod”或“JTAG 接口(interface)模块”会更好?

然而,诸如“JTAG调试访问”甚至“JTAG调试器”(对于那些仅使用它来对闪存进行编程的用户来说,实际上是“JTAG编程器”)之类的短语很常见(至少在英国!)在我看来,将接口(interface)方法和提供的功能结合起来,不会造成混淆。

关于debugging - JTAG 如何用作调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156135/

相关文章:

debugging - Visual Studio C++ 和 Windows 中的调试内存填充模式是什么?

c - 为什么我的 fscanf 不读取?

microcontroller - 使用JTAG接口(interface)进行编程

gdb - 像 gdb 这样的调试器如何通过 JTAG 设置断点?

c - 断点如何在嵌入式设备上工作?

ios - 如何在 Xcode 调试器中更改 "View Value as"的默认类型

python - 如何用Python获取硬件信息

c++ - linux下nanopi2 fire的硬件编码

hardware - 你见过或做过的最酷的黑客攻击是什么?

c# - 检测调试器是否已连接*并*单步执行