我见过一些商业的JTAG调试器,例如:
以及基于OpenOCD FT2232H的JTAG调试器:
与仅使用小信用卡尺寸PCB的FT2232H JTAG调试器相比,为什么这些商用调试器会大放异彩?商业调试器内部有哪些其他硬件?这些调试可以在哪一部分调试中提供帮助?
我见过一些商业的JTAG调试器,例如:
以及基于OpenOCD FT2232H的JTAG调试器:
与仅使用小信用卡尺寸PCB的FT2232H JTAG调试器相比,为什么这些商用调试器会大放异彩?商业调试器内部有哪些其他硬件?这些调试可以在哪一部分调试中提供帮助?
Answers:
JTAG电缆可以围绕各种东西构建。例如,Xilinx JTAG电缆具有赛普拉斯芯片和FPGA。Atmel电缆通常包含带有USB支持的AVR微控制器。它们通常还将包含一些接口/级别转换/保护/隔离组件。这实际上取决于制造商,它们都是专有的并且相互不兼容。通常,您需要使用与所需软件兼容的电缆。如果您只需要OpenOCD,那么基于FTDI的电缆就可以了。但是,如果您要使用,请说Xilinx ChipScope?然后,您需要为Xilinx的真品或中国仿冒品支付费用。
您拥有的链接不是针对简单的JTAG电缆,而是更加专业的链接。我个人认为这些是完整的测试设备。它们基本上是专门的协议分析器。它们旨在与集成到被测设备中的专用跟踪硬件交互。跟踪硬件不同于JTAG。目的是记录所有执行核心上正在运行的软件(即,已采取的所有分支)的完整执行跟踪,并将其通过高速总线传递给外部跟踪收集系统(有问题的盒子)。然后离线分析跟踪。这与通过设置断点并单步执行代码可以通过JTAG进行调试不同。跟踪收集应该对正在运行的程序完全透明(没有断点或添加的代码)。由于被测处理器每秒可以执行几亿条指令,因此在生成跟踪时要对其进行存储就需要大量带宽和快速存储。链接的设备支持Aurora协议(可能是其他协议),它是一种8b / 10b编码的高速串行协议,有点类似于USB 3,串行ATA,串行千兆/ 10G以太网和PCIe。它能够以6.25 Gbps的速度传输数据,远远超过了USB链接回PC所能处理的数据,因此捕获的数据必须存储在板载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。