为什么 JTAG 和 Lauterbach 的 TRACE32 软件之间需要一个设备?

Why is a device needed between JTAG and the TRACE32 software from Lauterbach?

https://www.microsemi.com/images/soc/partners/solution/ip/Trace_small.jpg 这样长方形的东西有什么意义?为什么 gdbserver 能够在没有任何额外 H/W 的情况下通过以太网进行调试,而这个 TRACE32 庞然大物 S/W 本身不能 decode/encode 信号从 JTAG 端口传出和传出? JTAG 本身不是端口吗?不会发出信号吗?为什么这篇S/W不能解读它们呢?为什么需要这个东西(顺便说一句,曾经有效,曾经无效,通常是黑魔法)。在 JTAG 和 USB 端口之间存在特定设备是否有原因(请记住 TRACE32 安装有 800 MB...)

可能有某些方面需要考虑:

  • 运行 模式调试与停止模式调试
  • 简单的信号转换器与智能调试器
  • 纯 JTAG 调试器与调试和跟踪工具

运行 模式调试与停止模式调试

"运行 mode debugging" 表示“在系统 运行 操作系统上调试应用程序”。当您在 Windows/Linux/Mac 机器上调试应用程序时也会发生这种情况。当您在应用程序中遇到断点时,CPU 仍然是 运行。只有被调试的应用程序被停止。
因此,如果您的嵌入式系统是 运行 操作系统,您的 GDB 可能能够通过以太网连接到目标 OS 上的 gdbserver 运行,这允许您在设备上调试应用程序.

停止模式调试”的意思是“通过控制CPU的run-state来调试CPU上的所有软件”。因此,如果您使用停止模式调试在 CPU 上遇到断点,则整个 CPU 都将停止。这允许您调试裸机应用程序或操作系统本身或在操作系统甚至管理程序上下文中的应用程序。
对于停止模式调试,您通常需要一个带有 JTAG 接口(或 SWD 或类似接口)的芯片和一个 in-circuit 调试器 。基本上可以让您在非常低的水平上控制 CPU。在以前,这是通过使用 in-circuit 仿真器 (而不是 JTAG)来完成的,它用特殊的 bond-out 芯片取代了 CPU,这允许还可以将芯片控制在一个非常低的水平上。为了让思考更加混乱,一些供应商也称他们的 JTAG 探针为“in-circuit 仿真器”。

简单的信号转换器与智能调试器

对于停止模式调试,您需要一个探针,将您的 PC 接口转换为芯片的低级调试接口。所以基本上是一些 USB 到 JTAG 转换器。或者和以太网到 JTAG 转换器。

我能想到的最简单的探针就是一些允许您通过 USB 控制某些 GPIO(通用输入输出)引脚的设备。然后所有的 JTAG 通信协议和更高的调试协议都完全在软件中完成。优点:非常灵活。缺点:很慢。

更高级的探头知道如何执行 JTAG,因此,只有高级调试协议必须通过 USB 处理,而低级 JTAG 通信由探头本身完成。这些探测器通常仍然很慢,因为当您需要较短的延迟时 USB 效率不高。

高端探测器通常会处理调试协议本身,这对于每个 CPU 架构都是独立的,有时甚至对于单个芯片也是如此。因此主机 PC 运行 调试软件仅发送高级命令,如“执行单步操作”,而其余所有由探测器本身处理。这提高了性能,尤其是对于复杂的多核芯片,这些芯片通常需要大量的 JTAG 通信,直到完成一个简单的任务。

简单的 USB 到 JTAG 转换器通常已经在廉价评估板的 PCB 上。理论上,您也可以将这样的转换器直接集成在芯片本身中,但芯片制造商通常不会这样做,因为这会增加每个芯片的成本。在专业领域,高端调试器非常普遍,因为公司不希望他们的开发人员坐在他们的 PC 前等待缓慢的调试器完成应用程序下载。

一般来说,我认为调试器越快、越灵活、越feature-rich,它就越大、越贵。所以这在很大程度上取决于您的需求。

纯 JTAG 调试器与调试和跟踪工具

所有 JTAG 调试器都允许您停止和重新启动 CPU、设置断点以及读写内存和 CPU 寄存器。这就是我上面提到的停止更多调试。

一些调试探针还允许您在 CPU 为 运行 时记录 CPU 的代码执行和数据访问,而无需停止它。这称为实时跟踪。对于这样的跟踪记录,您需要一个调试探针和一个支持它的芯片。

例如在 ARM Cortex 芯片上,此功能称为 ETM,Cortex-M0/M0+ 芯片不可用,但通常在 Cortex-A/R 芯片和 Cortex-M3(及更大)芯片上可用,当芯片有 100图钉等。

支持跟踪的工具通常比不支持跟踪的调试器更大、更贵。
影响带有跟踪记录器的调试器价格的因素:

  • 保存轨迹数据的内存大小
  • 一个目标跟踪引脚(用于并行跟踪)支持的最大速度。
  • 支持的跟踪引脚数(并行跟踪)(例如单引脚 SWO 跟踪通常是比 ETM trace 便宜很多)。
  • 支持高速串行跟踪 ports/maximum 每 lane/number 支持通道的速度。
  • 上传到主机 PC 的速度(探头有 USB 3 and/or 千兆以太网接口还是只有 USB 2?)

您所指的Lauterbach的设备支持跟踪Cortex-M个芯片,跟踪端口上总共有1600个MBit/s。官方产品页面在这里 https://www.lauterbach.com/microtrace_cortexm.html


你写了

which BTW once works, once doesn't and in general is black magic

如果您的工具无法正常工作,我建议您向您的工具供应商寻求支持。对于劳特巴赫,请访问 https://www.lauterbach.com/tsupport.html
JTAG 调试本身并不是黑魔法:JTAG 协议本身是一个 IEEE 标准,调试协议(在下一级)通常在 public 可访问的芯片制造商手册中进行描述。然而,这当然是很多工程。