问题汇总
- 用STM32CubeIDE新建工程时,用STM32CubeMX勾选了RTThread系统,但是生产的工程中没有MiddleWare。
原因:因为更换过workspace,更换完成后配置Firmware and software package时选择到了D:\STM32Cube。
解决:STM32CubeIDE系统设置问题,Firmware and software package必须要选到Respository文件层。
同时勾选Do code generation on .ioc file save
或者保存完.ioc文件后点击generate code
- RT-ThreadNano 3.1.5版本可以按照上述方法解决,3.1.3版本仍然无法解决,一直没有middleware文件出现,
更换编译工具
尝试更换CDT(C/C++development tools),STM32CubeIDE默认使用GNU Tools for STM32,更换使用GNU ARM Embedded
安装的时候软件反应有点慢,开始以为卡死了,等了一会才反应过来。
安装进度在整个界面的左下角,不是很直观。
更换了Toolchain后再编译,报新的错误:
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/clock.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/components.o] Error 1
arm-none-eabi-gcc: error: unrecognized command-line option '-fcyclomatic-complexity'
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/idle.o] Error 1
arm-none-eabi-gcc: error: unrecognized command-line option '-fcyclomatic-complexity'
arm-none-eabi-gcc: error: unrecognized command-line option '-fcyclomatic-complexity'
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/ipc.o] Error 1
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/irq.o] Error 1
arm-none-eabi-gcc: error: unrecognized command-line option '-fcyclomatic-complexity'
make: *** [Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/subdir.mk:49: Middlewares/Third_Party/RealThread_RTOS_RT-Thread/src/kservice.o] Error 1
"make -j8 all" terminated with exit code 2. Build might be incomplete.
结论
目前仍然不能使用STM32CubeIDE+RTThread联调测试。问题是
编译时 libcpu/arm/cortex-m4/context_gcc.s (RT-Thread 启动文件)时出现如
/opt/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32F429xx -DHAVE_CCONFIG_H -DRT_USING_MINILIBC -DRT_USING_NEWLIB -Iboard -ICORE -IHALLIB/Inc -IHALLIB/Inc/Legacy -Ihardware/CAN -Ihardware/KEY -Ihardware/LCD -Ihardware/LED -Ihardware/SDRAM -Irt-thread/components/finsh -Irt-thread/include -Irt-thread/include/libc -ISYSTEM/delay -ISYSTEM/sys -ISYSTEM/usart -IUSER -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/context_gcc.d" rt-thread/libcpu/arm/cortex-m4/context_gcc.s -o build/context_gcc.o
rt-thread/libcpu/arm/cortex-m4/context_gcc.s: Assembler messages:
rt-thread/libcpu/arm/cortex-m4/context_gcc.s:110: Error: thumb conditional instruction should be in IT block -- `vstmdbeq r1!,{d8-d15}'
rt-thread/libcpu/arm/cortex-m4/context_gcc.s:119: Error: thumb conditional instruction should be in IT block -- `moveq r4,#0x01'
rt-thread/libcpu/arm/cortex-m4/context_gcc.s:140: Error: thumb conditional instruction should be in IT block -- `vldmiane r1!,{d8-d15}'
rt-thread/libcpu/arm/cortex-m4/context_gcc.s:148: Error: thumb conditional instruction should be in IT block -- `bicne lr,lr,#0x10'
make: *** [Makefile:180:build/context_gcc.o] 错误 1
按照以下几种方式处理后仍然不能正常运行。暂时悬起,后面解决了再更新:
- context_gcc.s:110: Error: thumb conditional instruction should be in IT block `vstmdbeq r1!,{d8-d15}
- STM32cubeIDE F4移植RTT系统 context_gcc.s 报错
- RT-Thread启动过程部分过程分析(GCC链接脚本部分内容)