【问题标题】:STM32Cube - project does not build (Selected processor does not support Thumb mode)STM32Cube - 项目未构建(所选处理器不支持 Thumb 模式)
【发布时间】:2015-05-24 02:06:35
【问题描述】:

我已经使用 STM32Cube 为 STM32F205RB 生成了一个代码库,以便在 Atollic TrueSTUDIO 中使用。项目没有构建,报错:

arm-atollic-eabi-gcc -c -mthumb -std=gnu90 -DUSE_HAL_DRIVER -DSTM32F205xx -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Inc -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Drivers/STM32F2xx_HAL_Driver/Inc -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Drivers/CMSIS/Include -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube/Drivers/CMSIS/Device/ST/STM32F2xx/Include -IC:\Users\Elliott\Atollic\TrueSTUDIO\ARM_workspace\USBInterfaceCUBE\USBInterfaceCube\Projects\TrueSTUDIO\USBInterfaceCube Configuration/Debug/ -Os -ffunction-sections -fdata-sections -g -Wall -o Drivers\STM32F2xx_HAL_Driver\stm32f2xx_hal_rcc.o ..\..\..\..\Drivers\STM32F2xx_HAL_Driver\Src\stm32f2xx_hal_rcc.c 
C:\Users\Elliott\AppData\Local\Temp\ccnE9ju5.s: Assembler messages:
C:\Users\Elliott\AppData\Local\Temp\ccnE9ju5.s:288: Error: selected processor does not support Thumb mode `rbit r3,r3'
C:\Users\Elliott\AppData\Local\Temp\ccnE9ju5.s:298: Error: selected processor does not support Thumb mode `clz r3,r3'
...

我不太确定该去哪里 - 我已经看到了更改编译器选项的建议,尽管我无法在 TrueSTUDIO 中找到执行此操作的位置(让我有些担心的是当我选择项目时properties>C/C++ Build>Settings,我得到一个错误“当前显示的页面包含无效值” - 但是,我在 TrueSTUDIO 中新创建的项目上也得到同样的错误)

非常感谢任何想法、建议或澄清!

【问题讨论】:

  • 看起来您缺少一个宏。打开ccnE9ju5.s 看看它是否有error 预处理指令。
  • 我猜工具链配置了一个相当古老的默认 CPU/架构版本(提到的指令是相对较新的),所以你可能需要通过 -mcpu=cortex-m3 让它按预期工作.假设 IDE 与其他基于 Eclipse 的东西没有太大不同,我会在项目属性中查看构建设置或工具链编辑器,但不能肯定地说,因为我从未听说过 TrueSTUDIO确实有使用外部 Makefile 的经验,并且只是调整 Eclipse 设置以使索引器模糊准确。
  • @fiddling-bits - 我试图寻找 ccnE9Ju5,但这是一个临时文件,在我查看之前会自动删除!
  • @Notlikethat 我已经查看了构建设置 - 尝试将目标更改为 cortex-m3,尽管我仍然遇到相同的错误。通过将编译器更改为(CDT Internal Builder --> Gnu Make Builder),我遇到了类似的问题,尽管它现在使用了一个启动脚本,它是我项目的一部分(startup_stm32f205xx.s,由 STM32Cube 生成)

标签: c compilation arm stm32 thumb


【解决方案1】:

我遇到了同样的问题,我通过添加-mcpu=cortex-m3解决了它

【讨论】:

    【解决方案2】:

    在此 IDE 中,您必须在 project/right_click/properties 中设置 uC。然后它将知道在-mcpu gcc 选项中设置什么。 []1

    【讨论】:

      【解决方案3】:

      经过一番折腾,我相信我已经找到了问题的根源——STM32Cube生成的启动脚本是针对MDK-ARM的(我已经仔细检查了——我当然选择了TrueSTUDIO和Cube,看起来像个bug?) .我可以通过在 TrueSTUDIO 中创建一个新项目并将该项目中的 .s 文件复制/粘贴到 Cube 生成的项目上来让我的代码编译而不会出现任何错误。

      查看startup_stm32f205xx.s的顶部,可以看到下面一行:

      ;* Description        : STM32F205xx devices vector table for MDK-ARM toolchain. 
      

      正确的文件提到了 TrueSTUDIO:

      * @brief     STM32F2xx Devices vector table for Atollic TrueSTUDIO toolchain. 
      

      【讨论】:

        【解决方案4】:

        我遇到了这个问题。检查配置设置以查看您的 STM 设备是否已安装。我必须改变我的stm

        【讨论】:

          猜你喜欢
          • 2012-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-24
          • 2020-07-20
          相关资源
          最近更新 更多