link 关于 VPF 寄存器的时间警告
link time warning about VPF registers
我正在尝试使用硬件浮点扩展将一个项目从 Cortex M0 移植到 Cortex M4,新的目标 soc 是 nRF52832。
我从链接器得到的错误如下
arm-unknown-eabi/bin/ld: error: x.o uses VFP register arguments, firmware does not
其中固件是链接器输出文件的名称。
这是用于浮点的 arm ABI 的问题,我想按要求使用 FPU
我想使用的 FreeRTOS 端口,但我不知道如何调整我的链接器标志以使其成为可能。
这是我目前正在使用的一组链接器标志
-L/path/to/nrfx/mdk
-Wl, --no-undefined
-Wl,--as-needed -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mabi=aapcs
-Wl, --start-group support/libs/libQRCode.a support/libs/libSPIFFS.a
-Wl, --no-undefined
-Wl, --as-needed
-Wl, --gc-sections --specs=nosys.specs -T/path/to/linker_script.ld /toolchain/path/to/lib/libm.a
-Wl, --end-group
-mfloat-abi
标志是编译器专用标志,因此将它传递给链接器没有意义。
为了能够构建使用 hard-float ABI 的固件映像,传递给链接器的所有目标文件都必须编译为使用该 ABI。您的问题很可能是由于您正在向链接器传递一个或多个使用 soft-float ABI 编译的目标文件;例如,链接器命令行中的 /toolchain/path/to/lib/libm.a
文件路径看起来很可疑,您应该使用 libm.a 的硬浮点版本,您可能会在 hard/
的子文件夹中找到它您的工具链库路径。
我正在尝试使用硬件浮点扩展将一个项目从 Cortex M0 移植到 Cortex M4,新的目标 soc 是 nRF52832。
我从链接器得到的错误如下
arm-unknown-eabi/bin/ld: error: x.o uses VFP register arguments, firmware does not
其中固件是链接器输出文件的名称。
这是用于浮点的 arm ABI 的问题,我想按要求使用 FPU 我想使用的 FreeRTOS 端口,但我不知道如何调整我的链接器标志以使其成为可能。
这是我目前正在使用的一组链接器标志
-L/path/to/nrfx/mdk
-Wl, --no-undefined
-Wl,--as-needed -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mabi=aapcs
-Wl, --start-group support/libs/libQRCode.a support/libs/libSPIFFS.a
-Wl, --no-undefined
-Wl, --as-needed
-Wl, --gc-sections --specs=nosys.specs -T/path/to/linker_script.ld /toolchain/path/to/lib/libm.a
-Wl, --end-group
-mfloat-abi
标志是编译器专用标志,因此将它传递给链接器没有意义。
为了能够构建使用 hard-float ABI 的固件映像,传递给链接器的所有目标文件都必须编译为使用该 ABI。您的问题很可能是由于您正在向链接器传递一个或多个使用 soft-float ABI 编译的目标文件;例如,链接器命令行中的 /toolchain/path/to/lib/libm.a
文件路径看起来很可疑,您应该使用 libm.a 的硬浮点版本,您可能会在 hard/
的子文件夹中找到它您的工具链库路径。