代码之家  ›  专栏  ›  技术社区  ›  Dacav

基于qemu的底层调试

  •  13
  • Dacav  · 技术社区  · 16 年前

    我必须在ARM架构上测试一些底层代码。典型的实验在真实的电路板上是相当复杂的,所以我在考虑QEMU。

    我想得到的是一些调试信息,比如printfs或gdb。我知道linux很简单,因为它实现了QEMU集成器的设备驱动程序和gdb特性,但我不使用linux。我还怀疑从Linux内核源代码中提取这种功能会很复杂。

    我在找一些 简单的 已经实现这些功能之一的操作系统。你有什么建议吗?

    3 回复  |  直到 9 年前
        1
  •  18
  •   Brooks Moses    13 年前

    您不需要一个目标操作系统来调试QEMU中运行的代码——QEMU已经为您完成了这项工作。

    具体来说,QEMU支持从GDB进行远程调试——您可以使用适当的命令行选项运行QEMU,它将导出一个GDB副本(在主机上运行)可以连接到的接口。此时,您可以在GDB中调试程序,就像在主机上运行一样。

    http://wiki.osdev.org/GDB 似乎有更多的基本信息;可能还不足以让您完全开始,但至少可以让您在QEMU和GDB文档中找到一些基本概念和术语。跳过关于“实现GDB存根”的部分,这里不适用,因为QEMU已经有了一个,从“使用仿真器存根”开始。简短的形式就是从 -s 选项(在localhost:1234上导出GDB连接)和 -S target remote :1234 而不是 run . 当然,您还需要使用ARM版本的GDB,而不是原生的x86版本。

    2012年更新:

        2
  •  2
  •   Clifford    16 年前

    我意识到我在这里解决的是您最初的问题,而不是您提出的解决方案(也许这样更好?),但是要直接在目标上使用GDB(或Insight/GDB),请使用低成本的JTAG工具和 OpenOCD . 可以找到这样一个设置的示例以及如何实现它 here .

    Abatron BDI3000 with bdiGDB firmware 它允许远程调试和设备编程通过以太网与GDB和没有特殊的驱动程序或目标调试代理。

        3
  •  -1
  •   Artelius    16 年前

    也许是像这样的微内核 OKL4 能满足你的需要吗?