原因7 - 目标需要重置 - 不可靠的调试设置

时间:2016-08-17 10:50:53

标签: gdb embedded eclipse-cdt stm32 openocd

我无法获得可靠的调试设置。 我在网上的一些论坛中看到了其他主题,但是情况似乎不同。

设定:

  • Linux(Xubuntu)64bit
  • Eclipse CDT,Neon 4.6.0
  • 来自eclipse“安装新软件”的
  • “GDB硬件调试”插件,配置为重置&延迟3秒,停止;加载符号(所有复选框,无自定义命令)
  • arm-none-eabi-gcc 4.8.3工具链
  • 最近下载的OpenOCD,在自己的控制台中运行,配置为我的确切MCU,由他们提供的脚本& st-link
  • STM32L476RG MCU,带有硬浮子,可以使用。
  • ST-Link V2调试器(独立)

现在,有一个序列,我每次都经过一番努力,能够与调试器连接,但是步进和读取变量不能正常工作,我相信我看到的一秒钟。 但是,即使达到调用堆栈不会充满明显的无意义条目而且只有极少数条目,这是累人的。

示例:

  • 使用固件刷新设备。这通常没有问题。
  • 启动openocd。
  • 在Eclipse中开始调试。
  • OpenOcd显示连接,然后说:“undefined debug reason 7 - target needs reset”
  • 我无论如何按下Eclipse中的“resume”按钮,使程序运行在它显示的虚假顶部堆栈框架上。
  • 按“暂停”(在callstack中仍然是假的),然后“终止”。
  • Ctrl + C out of OpenOcd。
  • 手动(硬件)重置stm32 MCU。
  • 重新启动OpenOcd。
  • 再次在Eclipse中开始调试。

OpenOCD输出:

GNU ARM Eclipse 64-bits Open On-Chip Debugger 0.10.0-dev-00287-g85cec24-dirty (2016-01-10-10:31)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 500 kHz
adapter_nsrst_delay: 100
none separate
none separate
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : clock speed 480 kHz
Info : STLINK v2 JTAG v24 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.192646
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x10076415
Info : flash size = 1024kbytes
undefined debug reason 7 - target needs reset

现在运气好的话,我终于有了一段时间的调试器连接。 但这可能需要一些重复。 当明确连接不好时,为什么“按下简历”呢?不确定,这似乎增加了在下一次迭代中我将有很多连接的可能性。

可能相关的说明: MCU有一个连接到它的LCD,我可以看到它何时复位。 出于某种原因,尽管在调试配置中选中了复位复选框,但在Eclipse中开始调试显然会重置设备。 如果我在终端中打开到OpenOCD的telnet连接,并在那里“重置”,则设备会重置。

导致我的设置奇怪的行为可能是什么原因?

2 个答案:

答案 0 :(得分:2)

另一个版本的OpenOCD帮助了我。来自http://gnuarmeclipse.github.io的OpenOCD 0.10.0遇到了类似的问题。最初它起作用然后问题出现了。删除它并从http://www.freddiechopin.info安装构建。

答案 1 :(得分:1)

您使用的COALESCE()客户是谁?我使用主机OpenOCD犯了一个错误,我收到了这个错误。在我将调试器路径修改为gdb的位置之后,在"调试配置"你日食的问题就消失了。

在您的帖子中,您只提到使用了arm-none-eabi-gdb工具链,因此请不要知道您是否将arm-none-eabi-gcc设置为gdb"调试配置" ,与项目工具链设置分开。