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

像gdb这样的调试器如何通过JTAG设置断点?,gdb,embedded,breakpoints,jtag,microblaze,Gdb,Embedded,Breakpoints,Jtag,Microblaze,我正在用gdb进行调试。我想知道gdb如何在内部通过JTAG在嵌入式处理器上设置brekpoint。每个处理器都不同,您必须查找特定处理器的JTAG调试器详细信息。不仅仅是处理器系列,还必须是特定的处理器。数据表/用户指南(如有),通常可从芯片供应商或核心供应商处获得,具体取决于产品。它要么编程硬件断点寄存器,要么通过将断点处的指令替换为会导致异常的指令来放置软件断点。我曾几次将GDB与JTAG单元结合使用,GDB使用处理JTAG细节的gdbserver程序通过JTAG进行通信。例如,使用Ope

我正在用gdb进行调试。我想知道gdb如何在内部通过JTAG在嵌入式处理器上设置brekpoint。

每个处理器都不同,您必须查找特定处理器的JTAG调试器详细信息。不仅仅是处理器系列,还必须是特定的处理器。数据表/用户指南(如有),通常可从芯片供应商或核心供应商处获得,具体取决于产品。

它要么编程硬件断点寄存器,要么通过将断点处的指令替换为会导致异常的指令来放置软件断点。

我曾几次将GDB与JTAG单元结合使用,GDB使用处理JTAG细节的
gdbserver
程序通过JTAG进行通信。例如,使用OpenOCD JTAG单元:


这本质上意味着GDB对JTAG单元了解不多——它依赖于
gdbserver
接口,然后该服务器在后台做任何需要做的事情来满足GDB的要求。

我想知道的可能是,在用JTAG电缆将我的主板连接到Pc之后,例如,如果我用GDB键入“bp 25”,那么为了通过JTAG使用我的嵌入式处理器(Microblaze)执行该命令,该命令之后会发生什么?您必须查找该处理器和JTAG命令,可能是几到几千个不同的命令碰巧实现了这一点。处理器处理此类命令的十几种不同方式,等等。如果您不想查看数据表,请查看gdb soruces,gdb是开源的,您的问题的答案可以在开放文档和软件中找到。重新构建gdb,添加一些printf,深入挖掘感兴趣的代码。