如何在Linux PC上使用gdb调试Arduino Uno?


10

如何在Linux PC上使用gdb调试(单步执行源代码)Arduino Uno?请注意,我不喜欢在wine或VirtualBox中使用AVR Studio。

问题1:物理连接

如何和什么连接到Uno板?我的猜测是,由于Uno板上装有ATmega328,因此应该可以使用一步式源代码?我还猜想我可以在ICSP头上使用AVR JTAGICE mkIIAVR Dragon

问题2: GDB服务器

然后我注意到有一些项目,例如AVaRICE,似乎为gdb函数提供了jtag,但可能还有其他项目吗?

问题3:小精灵在哪里?

如果我启动并运行它,那么Arduino IDE在哪里将生成的输出像带有调试符号的elf文件一样隐藏(应该有一个)?还是我需要生成仅使用Ardino库的经典Makefile?

我试图找到有关使用什么/如何使用的信息,但是我只发现了那些告诉我可以做什么的线索。有人可以将我推向正确的方向吗?


Answers:


3

您可以通过在旧版IDE(单击<1.0)中单击“编译”按钮时按住Shift键来找到编译器工件。在较新的版本(阅读> = 1.0)中,首选项对话框下有一个选项,用于在编译过程中显示详细的输出(请参见屏幕截图)。对于详细输出,将在控制台中(重复)打印所有编译器输出结束的文件夹。那至少应该让您入门。

屏幕截图arduino在编译过程中显示详细输出

附带说明一下,2012年6月早些时候在Arduino开发人员列表上有很多关于此主题的话题,有人在Arduino开发人员列表上发布了有关Arduino的GDB调试的改进/集成方式的公告,但是我没有调查更远。我猜这个项目叫做VisualMicro(?)。看起来它是作为Visual Studio插件构建的,因此在Linux环境中可能对您没有帮助,并且它处于beta测试阶段,但我让您决定。


我启用了“在编译过程中启用详细输出”,它们使用/tmp/build3652385594823436592.tmp/作为其构建目录,并且elf是使用-g标志构建的,因此它应包含调试符号。这意味着我已经找到了构建工件,现在只需要使jtag起作用即可。
2012年

3

Simavr AVR处理器模拟器现在为包括Arduino在内的AVR固件调试提供了很好的GDB服务器。您可以单独使用它(要求您为特定的硬件配置编写一个小型控制台应用程序),也可以在Simutron GUI环境中使用它,您可以在其中通过原理图捕获定义硬件配置。

注意:使用这些工具时,由于所有硬件都是模拟的,因此您没有物理连接。


2

在类似问题中引用的linux期刊文章中对此进行了回答:Jtag调试AVR

基本上,一并使用avr-gdb和simulavr,您可以通过模拟器在各种AVR微控制器上运行软件,同时使用GDB逐步观察并观察执行的代码。

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.