问题遇到的现象和发生背景
用rt thread env生成的是gd32f303ZE工程,我在mdk改成gd32f303RC就警告,报错,rt thread程序不能正常运行。
- 先是在 device 中将gd32f303ZE改成gd32f303RC
然后mdk5编译信息:
这时程序下载后,不能正常运行。#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" Libraries\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c: 1 warning, 0 errors compiling gd32f30x_timer.c... Libraries\CMSIS\core_cm4.h(118): warning: #1215-D: #warning directive: "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" Libraries\GD32F30x_standard_peripheral\Source\gd32f30x_timer.c: 1 warning, 0 errors linking... Program Size: Code=93248 RO-data=12436 RW-data=900 ZI-data=4492 After Build - User command #1: fromelf --bin .\build\rtthread-gd32f30x.axf --output rtthread.bin ".\build\rtthread-gd32f30x.axf" - 0 Error(s), 32 Warning(s).
2.然后在 target 中关掉 single precision 后
mdk5编译信息:报错
.\build\rtthread-gd32f30x.axf: Error: L6366E: main.o attributes are not compatible with the provided attributes .
Object main.o contains Build Attributes that are incompatible with the provided attributes.
Tag_FP_arch = VFPv4 instructions were permitted, but only citing registers D0-D15 (=6)
Tag_ABI_HardFP_use = This code should execute on the single-precision variant derived from Tag_FP_arch (=1)
Tag_FP_HP_extension = Use of the optional half-precision extension to VFPv3/Advanced SIMDv1 was permitted (=1)