2

我正在尝试 STM32CubeIDE,我一直在尝试让它与作为 Eclipse CDT 包一部分的 GDB QEMU 调试插件一起使用。我已经能够为我的 STM32F4-Discovery 板创建项目和调试配置,并且调试器部分启动,但是,就在模拟器启动时,它创建的 GUI 窗口突然崩溃,我收到此错误:

Error in final launch sequence
Failed to execute MI command:
-target-select remote localhost:1234
Error message from debugger back end:
Truncated register 18 in remote 'g' packet
Failed to execute MI command:
-target-select remote localhost:1234
Error message from debugger back end:
Truncated register 18 in remote 'g' packet
Truncated register 18 in remote 'g' packet

我认为这是由于我安装的 CDT 插件和我安装的 Ubuntu 20.04 附带的 GCC 工具链之间的一些不匹配造成的。但是,我不确定如何解决这个问题。

我有什么办法解决这个问题吗?

4

1 回答 1

2

所以看起来有几个因素导致这不起作用。首先,我在 GUI 调试器终止后立即收到的错误消息是由于 arm-none-eabi-gdb 包的安装不正确造成的。为了解决这个问题,我从 ARM 站点下载了包,并按照此处详述的说明进行操作。再次安装 arm-none-eabi-gdb 包后,我进入项目调试配置设置,导航到此窗口中的“调试器”选项卡,然后将 IDE 为我设置的变量中的 GDB 可执行路径更改为实际的 GDB 可执行路径(在这种情况下/usr/bin/arm-none-eabi-gdb)。

完成后,调试器将不再立即终止,但在它启动后不久我仍然在控制台中收到一些错误(见下文)。此外,调试器 GUI 不会产生有意义的输出,并且 Ubuntu 会警告进程已冻结。

NVIC: Bad read offset 0xd88
qemu-system-gnuarmeclipse: Attempt to set CP10/11 in SCB->CPACR, but FP is not supported yet.

为了解决这个问题,我在 IDE 的项目资源管理器面板中右键单击该项目,然后转到 C/C++ 构建部分,然后到其下的设置部分,最后到此菜单的“工具设置”部分。在“MCU设置”下,有“浮点单元”和“浮点ABI”两个选项,我分别改为“无”和“软件实现”。保存这些配置更改后,我到项目的 src/ 目录下的 system_stm32f4xx.c 文件中,将这几行注释掉:

  /* FPU settings ------------------------------------------------------------*/
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  #endif

之后,我清理了项目,重建了它,然后重新启动了调试器。然后它就正常运行了。

于 2020-09-15T22:31:07.967 回答