我正在尝试将一个文件交叉编译到Beaglebone Black的闪存中。 一切工作正常,但是如果我尝试启用浮点单元(FPU)使用以下命令:
#define set_en_bit_in_fpexc() do { \
int dummy; \
__asm__ __volatile__ ("fmrx %0,fpexc\n\t" \
"orr %0,%0,#0x40000000\n\t" \
"fmxr fpexc,%0" : "=r" (dummy) : :); \
} while (0)
我得到了以下错误:
Error: selected processor does not support `fmrx r3,fpexc' in ARM mode
Error: selected processor does not support `fmxr fpexc,r3' in ARM mode
我也尝试了
缩略模式
,但是我收到了相同的错误。
当然,如果我删除初始化FPU的代码部分,它就可以正常工作。为什么会出现这些错误? Makefile
[...]
CROSSPATH?=/usr/bin
CROSSPFX=$(CROSSPATH)/arm-none-eabi-
CC=$(CROSSPFX)gcc
AS=$(CROSSPFX)as
LD=$(CROSSPFX)ld
NM=$(CROSSPFX)nm
OBJCOPY=$(CROSSPFX)objcopy
OBJDUMP=$(CROSSPFX)objdump
CFLAGS=-Wall -Wextra -O2 -ffreestanding
ARCHFLAGS=-mcpu=cortex-a8 -march=armv7-a -mfpu=neon
CCARCHFLAGS=$(ARCHFLAGS) -marm
[...]
我使用的是 Arch Linux,内核版本为 4.8.1。
P.S. 我的教授使用 Linaro 交叉编译器,它可以正常工作。