cortex-m3 fpu指令硬故障

时间:2015-12-11 22:59:33

标签: stm32 cortex-m3

我的stm32f103固件导致硬故障。 以下是崩溃执行的代码行:

 float shuntResistance = p[SHUNT_RESISTANCE];

其中p - 是浮点数的全局数组:

float p[CONFIG_NUM_PARAMS];

调试时有解决方法:

0800177c:   ldr r3, [pc, #332]      ; (0x80018cc <adcSetConstants+336>)
0800177e:   vldr s10, [r3, #48]     ; 0x30 ; on that instruction program results in hard fault

这是编译器标志:

-c -fmessage-length=0 -mthumb -mcpu=cortex-m3 -mfloat-abi=softfp -ffunction-sections -fdata-sections -fsingle-precision-constant

链接器标志:

-Wl,--static,--gc-sections,-Map=${ProjName}.map,-T../stm32_flash.ld -fmessage-length=0 -mthumb -mcpu=cortex-m3 -ffunction-sections -fdata-sections -fsingle-precision-constant -Dprintf=iprintf -u _printf_float -lc -lnosys -lc

使用的编译器是launchpad的arm-none-eabi-gcc。 使用的IDE是eclipse。 原因是什么?

1 个答案:

答案 0 :(得分:1)

  

这是编译器标志:

     

-c -fmessage-length=0 -mthumb -mcpu=cortex-m3 -mfloat-abi=softfp

您的MCU是Cortex M3,没有FPU。您需要使用-mfloat-abi=soft。 &#34; softfp&#34;选项使用的FPU指令对您不起作用。