我正在尝试使用 arm-none-eabi-gcc 编译器让 double FPv5-DP-D16-M FPU 在 ARM Cortex-M7f 上运行。基于documentation ,看来我有两个选项可供选择以启用 FPU:-mfpu=fpv5-d16
和 -mfpu=fpv5-sp-d16
。 “fpv5”是不言自明的,而“d16”(如文档和其他 StackOverflow 问题中所述)仅表示有相当于 16 个 double 寄存器而不是名义上的 32 个寄存器。由于缺乏其他任何有意义的东西,我猜测“sp”代表“单精度”,这意味着 fpv5-d16
是我想要的选项。
但是,我找不到任何明确证实这一点的文档。我的推论是否正确?为什么没有 fpv5-dp-d16
选项/别名,就像 clang 中那样? ?
最佳答案
你的推论是正确的,是的。你可以引用Arm Cortex-M7 Processor Technical Reference Manual查看哪些 ISA 配置可用。
说到这里,真不知道原来的ARM工程师是什么意思adding support for it在 gcc 中可能一直在思考(也许有一些硬件恶作剧证明了这一点?)。不管怎样我是under the impression最新 gcc 版本中的“正确做法”只是使用类似 -march=armv7e-m+fpv5+fp.dp
的内容。也许出于这个原因,没有人真正集思广益地查看您可能关心的所有别名(实际上,您已经在我上一个链接的补丁 28 中看到 fpv5-d16
几乎是事后才想到的)。
但我想开发人员会愿意接受任何建议吗?
关于gcc - -mfpu=fpv5-sp-d16 和 -mfpu=fpv5-d16 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703981/