使用OpenOCD的ARM LPC1768的Eclipse GDB“init”和“run”设置?

时间:2011-10-27 13:59:59

标签: eclipse gdb arm cortex-m3 openocd

我终于figured out如何在this LPC1768 mini board上运行代码,但是现在我正在尝试调试工作。

我使用的工具链是: Yagarto + Eclipse(Indigo)(带GDB硬件调试器)+ OpenOCD 。我的JTAG接口是: Bus Blaster V2 board。

我发现一个guide遍历了类似的设置,但它是针对不同的JTAG接口,所以不是很有用。关于this post还有LPC1768 example,但gdb命令不适用于OpenOCD。

此时我确定的唯一命令(对于init)是target remote localhost:3333(用于连接到OpenOCD gdb服务器)。

我应该在此对话框中使用哪些设置和gdb命令?

enter image description here

(忽略“SAM7X256”,只需重新使用上述链接之一的屏幕截图。我使用的是ARM LPC1768)

另外,我的主板使用secondary bootloader(用户代码从0x2000开始)的事实会影响这些调试设置吗?

更新:根据dwelch的建议,我确实设法让一些基本的OpenOCD命令工作(reset initmdwmww,{{1}等等)。奇怪的“JTAG-DP STICKY”错误与我的ram链接器脚本有关,发现project template for the LPC1758带有RAM linker script,只需要修改LPC1768的内存大小,load_image工作得很好。

我仍然想知道如何正确配置eclipse以进行GDB调试。

1 个答案:

答案 0 :(得分:2)

也许一次尝试一步。

启动openocd,可能类似于-f interface / jlink.cfg -f target / lpc1768.cfg等等,听起来就像你有这样的工作。

第二个telnet localhost 4444或任何windows命令行(类似的东西)

在TELNET会议期间:

> halt
> mdw 0x0000

和类似的东西看到你正在谈论这部分。

如果你已经编译了一些程序,你可以简单地加载它们并运行它们,例如,如果你只创建一个ram程序(告诉链接器.text,.data等都是0x10000000)那么

> load_image /path/to/myprog.elf
> resume 0x10000001

(是加1使其变为奇数,这是拇指处理器不会运行ARM指令(lsbit = 0是手臂模式lsbit = 1是拇指模式)。

重新编译后重新运行:

> halt
> load_image /path/to/myprog.elf
> resume 0x10000001

然后在你有基于ram的程序显示生命迹象后担心闪烁等。

如果这些都不起作用那么gdb只是其中一个复杂程度,并且会让人更难理解。

就引导加载程序而言,答案是它取决于您是否尝试从ram或program to run运行。如果从ram运行你可以接管系统并占用所有内存,一些芯片(stm32)有一些你可以调用的例程,那些需要一些ram不受影响,但是如果你接管芯片就可以拥有所有内存,这是告诉链接器,也许调试器是否从二进制文件中不知道(使用elf文件或ihex或srec或几乎任何不是.bin的东西,如果工具支持它)。

如果您要写入闪存,那么您最好知道闪存的哪个部分可能包含引导加载程序,引导加载程序将哪些内容传递给您的代码等,并再次告诉链接器和调试器此信息。你可以轻松地擦除/删除引导加载程序,具体取决于它在哪里以及你在做什么(很多这些lpc和st部件都有bootloader,serial或usb,有些保护免受偶然错误的影响,但你通常仍然可以删除它们如果你不小心,请更换它们。)