如果我为Cortex-M4(LPC 4357)编译GCC项目并使用-mcpu=cortex-m4
开关,浮点数不起作用(调用blx __addsf3
,最终分支到stmia
命令,导致错误中断,可能是由于寄存器中的错误值)。如果我使用-mcpu=cortex-m3
编译,它调用bl __addsf3
,bl __addsf3
有不同的源代码并起作用。
我想我可能要修复其他开关,才能让floats与-mcpu=cortex-m4
一起工作,我试过several things,但这真的很奇怪。
相关的编译器和链接器开关:
编译器:-mthumb -mcpu=cortex-m4 -std=c99 -c -g -D DEBUG -D gcc
连接器:-nostartfiles -nostdlib -nodefaultlibs -fno-exceptions -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -lgcc -lc
你能看出我是不是漏掉了什么明显的东西吗?
1条答案
按热度按时间5jdjgkvh1#
使用ARM提供的GNU Tools for ARM Embedded Processors工具链,您需要使用以下代码进行编译:
以使用硬件浮点。请参阅readme.txt档案中的下表:
您应该 * 真正 * 阅读gcc工具链附带的README文件,无论您从哪里获得它们。