从STM32CubeIDE启动QEMU模拟器的问题

问题描述

我正在试用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工具链之间的某些不匹配引起的。但是,我不确定如何解决此问题。

有什么我可以解决的吗?

解决方法

因此,似乎有几个因素导致其无法正常工作。首先,GUI调试器终止后,我立即得到的错误消息是由于arm-none-eabi-gdb软件包的安装不正确造成的。为了解决此问题,我从ARM站点下载了该软件包,并遵循详细的说明here。再次安装arm-none-eabi-gdb软件包后,我进入了项目调试配置设置,导航到此窗口中的“ debugger”选项卡,然后将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

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