我正在尝试启动简单的LED闪烁应用程序,一切正常,但如果我添加-ffast-math,则会出现严重错误。我通过GDB调试,发现如果我添加-ffast-math,它会从__libc_init_array中调用__arm_set_fast_math作为初始化例程的一部分(来自.init_array部分)
反汇编__arm_set_fast_math显示:
080001f4 <__arm_set_fast_math>:
80001f4: eef1 3a10 vmrs r3, fpscr
80001f8: f043 7380 orr.w r3, r3, #16777216 ;0x1000000
80001fc: eee1 3a10 vmsr fpscr, r3
8000200: 4770 bx lr
8000202: bf00 nop
根据GDB:
0x080001f4 in __arm_set_fast_math ()
(gdb) stepi
HardFault_Handler () at src/stm32f4xx_it.c:61
它会立即跳转到hardFault处理程序。删除--fast-math修复了一切。任何的想法?谢谢!