从 STM32CubeIDE 启动 QEMU 模拟器的问题

Issue with launching QEMU simulator from STM32CubeIDE

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

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 工具链不匹配造成的。但是,我不确定如何解决这个问题。

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

看来有几个因素导致这不起作用。首先,我在 GUI 调试器终止后立即收到的错误消息是由于 arm-none-eabi-gdb 包的安装不正确造成的。为了解决这个问题,我从 ARM 站点下载了软件包并按照详细说明 here 进行操作。再次安装 arm-none-eabi-gdb 包后,我进入项目调试配置设置,导航到此 window 中的“调试器”选项卡,然后从变量 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 settings”下,有“Floating point unit”和“Floating point ABI”两个选项,我分别改成了“None”和“Software implementation”。保存这些配置更改后,我去到项目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

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