4

我终于想出了如何让代码在这个 LPC1768 迷你板上运行,但是现在我正试图让调试工作。

我使用的工具链是:Yagarto + Eclipse (Indigo) (w/ GDB Hardware Debugger) + OpenOCD。我的 JTAG 接口是:Bus Blaster V2板。

我找到了一个指南,其中介绍了类似的设置,但它针对的是不同的 JTAG 接口,所以不是很有用。还有这篇关于LPC1768 示例的帖子,但 gdb 命令不适用于 OpenOCD。

在这一点上,我确定的唯一命令(用于 init)是target remote localhost:3333(用于连接到 OpenOCD gdb 服务器)。

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

在此处输入图像描述

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

此外,我的开发板使用辅助引导加载程序(用户代码从 0x2000 开始)这一事实是否会影响这些调试设置?

更新:根据 dwelch 的建议,我确实设法让一些基本的 OpenOCD 命令正常工作(reset init、、、、mdwmwwload_image。奇怪的“JTAG-DP STICKY”错误与我的 ram 链接器脚本有关,找到了带有RAM 链接器脚本的 LPC1758 项目模板,只需要修改 LPC1768 的内存大小并且 load_image 工作得很好。

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

4

1 回答 1

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 运行还是从程序运行到 rom。如果从 ram 运行,您可以接管系统并占用所有 ram,一些芯片 (stm32) 有一些您可以调用的例程,这些例程需要一些 ram 不受影响,但如果您接管芯片,您可以拥有所有 ram ,如果它不知道二进制文件(使用elf文件或ihex或srec或几乎任何不是.bin的东西都很好,如果工具支持它),这就是告诉链接器和调试器的问题。

如果您要写入闪存,那么您最好确切地知道闪存的哪个部分可能包含引导加载程序,引导加载程序如何将您的代码移交给您的代码等,并再次告诉链接器和调试器这些信息。您可以轻松擦除/删除引导加载程序,具体取决于它在哪里以及您在做什么(这些 lpc 和 st 部件中的许多都有引导加载程序,串行或 USB,它们在一定程度上可以防止偶然错误,但您通常仍然可以擦除它们并如果您不小心,请更换它们)。

于 2011-10-27T20:20:26.197 回答