【问题标题】:How does a debugger like gdb work to set a breakpoint through JTAG?像 gdb 这样的调试器如何通过 JTAG 设置断点?
【发布时间】:2012-04-15 10:15:49
【问题描述】:

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

【问题讨论】:

标签: gdb embedded breakpoints jtag microblaze


【解决方案1】:

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

【讨论】:

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

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

【讨论】:

    【解决方案3】:

    有几次我将 GDB 与 JTAG 单元结合使用,GDB 通过使用处理 JTAG 细节的gdbserver 程序通过 JTAG 进行通信。例如,使用 OpenOCD JTAG 单元:http://openocd.sourceforge.net/doc/html/GDB-and-OpenOCD.html

    这实质上意味着 GDB 对 JTAG 单元一无所知 - 它依赖于 gdbserver 接口,然后该服务器在后台执行它需要执行的任何操作来执行 GDB 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2014-02-05
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多