Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 使用-ffast math时手臂皮质-m4硬故障_Assembly_Arm_Gdb_Interrupt - Fatal编程技术网

Assembly 使用-ffast math时手臂皮质-m4硬故障

Assembly 使用-ffast math时手臂皮质-m4硬故障,assembly,arm,gdb,interrupt,Assembly,Arm,Gdb,Interrupt,我正在尝试启动一个简单的LED闪烁应用程序,一切正常,但如果我加上-ffast数学,它就出了大问题。我通过GDB进行了调试,发现如果我添加-ffast math,它将从uuu libc_init_数组插入对uuu arm_set_fast_math的调用,作为初始化例程的一部分(从.init_数组部分) 分解(手臂)(设置)(快速)(数学显示) 080001f4 <__arm_set_fast_math>: 80001f4: eef1 3a10 vmrs

我正在尝试启动一个简单的LED闪烁应用程序,一切正常,但如果我加上-ffast数学,它就出了大问题。我通过GDB进行了调试,发现如果我添加-ffast math,它将从uuu libc_init_数组插入对uuu arm_set_fast_math的调用,作为初始化例程的一部分(从.init_数组部分)

分解(手臂)(设置)(快速)(数学显示)

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

它立即跳转到硬故障处理程序。移除——快速数学修复一切。有什么想法吗?谢谢

我假设这个错误是非法指令错误?而且你的CPU没有硬件FPU?您想使用
-ffast math
有什么原因吗?你在使用软件模拟浮点吗?我有mfloat abi=hard-mfpu=fpv4-sp-d16和-ffast math,我得到了一个模板,花了2天时间调试它,现在我想知道为什么它会导致这样的行为。错误是“硬错误”,构建模板是否直接来自硬件供应商?或者只是你发现的东西?在任何情况下,本文件记录了FPSCR布局:。fast math init函数正在设置FZ位(刷新非规范值为零),这可能会在FPU产生非规范值时加速FPU。但是M4(我正在使用的核心)也有相同的寄存器:我正在试图弄清楚为什么它在没有
-ffast math
的情况下硬故障,当您编译不符合FP数学的代码时,是否会遇到严重错误?如
双x=1.111,y=2.33
双z=x*y(并使用
-O0
进行编译,或使用
volatile
或其他不在编译时进行计算的工具)我假设该错误是非法指令错误?而且你的CPU没有硬件FPU?您想使用
-ffast math
有什么原因吗?你在使用软件模拟浮点吗?我有mfloat abi=hard-mfpu=fpv4-sp-d16和-ffast math,我得到了一个模板,花了2天时间调试它,现在我想知道为什么它会导致这样的行为。错误是“硬错误”,构建模板是否直接来自硬件供应商?或者只是你发现的东西?在任何情况下,本文件记录了FPSCR布局:。fast math init函数正在设置FZ位(刷新非规范值为零),这可能会在FPU产生非规范值时加速FPU。但是M4(我正在使用的核心)也有相同的寄存器:我正在试图弄清楚为什么它在没有
-ffast math
的情况下硬故障,当您编译不符合FP数学的代码时,是否会遇到严重错误?如
双x=1.111,y=2.33
双z=x*y(并使用
-O0
进行编译,或者使用
volatile
或其他不在编译时进行计算的方法。)
0x080001f4 in __arm_set_fast_math ()
(gdb) stepi
HardFault_Handler () at src/stm32f4xx_it.c:61