我见过一些商业 JTAG 调试器,例如:
以及基于 OpenOCD FT2232H 的 JTAG 调试器:
为什么这些商业调试器与只有信用卡大小 PCB 的 FT2232H JTAG 调试器相比是大盒子?商业调试器中存在哪些附加硬件,这些硬件在调试的哪一部分有帮助?
我见过一些商业 JTAG 调试器,例如:
以及基于 OpenOCD FT2232H 的 JTAG 调试器:
为什么这些商业调试器与只有信用卡大小 PCB 的 FT2232H JTAG 调试器相比是大盒子?商业调试器中存在哪些附加硬件,这些硬件在调试的哪一部分有帮助?
JTAG 电缆可以围绕各种东西构建。例如,赛灵思 JTAG 电缆具有赛普拉斯芯片和 FPGA。Atmel 电缆通常包含一个支持 USB 的 AVR 微控制器。它们通常还会包含一些接口/级别转换/保护/隔离组件。这真的取决于制造商,它们都是专有的并且相互不兼容。通常,您需要使用适用于您需要使用的任何软件的电缆。如果您只需要 OpenOCD,那么基于 FTDI 的电缆就可以了。但是如果你想用,说Xilinx ChipScope?然后,您需要支付 Xilinx 的真品或中国仿冒品的费用。
您拥有的链接不是简单的 JTAG 电缆,它们更加专业。我个人认为这些是一个完整的测试设备。它们基本上是专门的协议分析器。它们旨在与集成到被测设备中的专用跟踪硬件接口。跟踪硬件不同于 JTAG。其目的是记录所有执行核心上正在运行的软件的完整执行跟踪(即所有分支),并通过高速总线将其传递给外部跟踪收集系统(有问题的盒子)。然后离线分析跟踪。这与可以通过设置断点和单步执行代码在 JTAG 上完成的调试不同。跟踪收集应该对正在运行的程序完全透明(没有断点或添加代码)。由于被测处理器每秒可以执行数亿条指令,因此在生成轨迹时存储轨迹需要大量带宽和快速内存。链接的设备支持 Aurora 协议(可能是其他协议),这是一种 8b/10b 编码的高速串行协议,有点类似于 USB 3、串行 ATA、串行千兆/10G 以太网和 PCIe。它能够以 6.25 Gbps 的速度传输数据,远远超过返回 PC 的 USB 链路所能处理的速度,因此捕获的数据必须存储在板载 RAM 中以供离线分析。这些设备将包含相当高端的 FPGA,带有内部高速解串器以捕获数据以及相当多(几 GB)的快速 DRAM,
区别在于软件和功能,这对硬件影响很大。
FTDI JTAG 电缆使用命令集来产生 JTAG 信号。这些是非常低级的命令,通常会详细介绍 JTAG 状态机如何工作和操作。为您的设置发送正确命令的逻辑是在您 PC 上的调试主机上完成的。
这是功能性的、廉价的硬件、免费软件(GNU GCC+GDB+OpenOCD)等。它足够灵活(因为低级命令集)有用于 ARM 调试、FPGA 编程或通用 JTAG 链扫描的端口.
商用电缆对平台更加具体,并且通常在电缆内包含逻辑。这允许 PC 程序以更抽象的方式与设备对话,这可以更快。
例如:查看JLINK USB 协议。它包含像 EMU_CMD_WRITE_MEM_ARM79 这样的命令。FTDI 电缆也可以执行此命令,但它在 PC 端被转换为 FTDI 电缆可以理解的低级 JTAG 命令。这也意味着高级命令(写入一些内存)被分解为更多的子命令,JLINK 可以在它自己的电缆上执行这些操作。这可能会导致更好的延迟(考虑到 USB 的限制)和/或更高的速度。
他们支持哪种电缆也取决于 IDE 商业供应商,并且更有可能支持商业电缆。另一方面,免费的 IDE 更有可能支持廉价的 FTDI 调试电缆。
一些商业软件还包含对软件代码断点的支持,您可以在其中设置比硬件允许的更多的代码断点。
使用某些微控制器的跟踪功能需要非常快速的硬件来捕获 4 位并行总线。具有此功能的硬件通常包含一个 FPGA 来执行此操作。