【问题标题】:Issue with launching QEMU simulator from STM32CubeIDE从 STM32CubeIDE 启动 QEMU 模拟器的问题
【发布时间】:2021-01-01 18:08:21
【问题描述】:

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

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

【问题讨论】:

    标签: c++ c eclipse-cdt qemu stm32cubeide


    【解决方案1】:

    所以看起来这不起作用的原因有几个。首先,我在 GUI 调试器终止后立即收到的错误消息是由于 arm-none-eabi-gdb 包的安装不正确造成的。为了解决这个问题,我从 ARM 站点下载了该软件包,并按照详细说明 here 进行操作。再次安装 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
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多