我正在尝试使用arm-none-eabi-gcc编译器在ARM Cortex-M7f上运行双精度FPv5-DP-D16-M FPU。基于documentation,似乎有两个选项可以启用FPU:-mfpu=fpv5-d16
和-mfpu=fpv5-sp-d16
。 “ fpv5”是很容易解释的,“ d16”(如文档中和其他StackOverflow问题中所述)仅表示等效于16个双精度寄存器,而不是标称的32个寄存器。由于没有其他任何有意义的东西,我猜“ sp”代表“单精度”,这意味着fpv5-d16
是我想要的选项。
但是,我找不到任何明确证实这一点的文档。我的推论正确吗?为什么没有clang中的fpv5-dp-d16
选项/别名?
答案 0 :(得分:0)
您的推论是正确的,是的。您可以仅参考Arm Cortex-M7 Processor Technical Reference Manual来查看可用的ISA配置。
这样说,我真的不知道gcc中最初的ARM工程师adding support for it可能在想什么(也许有一些硬件可以证明这一点?)。无论如何,我在最新的gcc版本中是under the impression的“正确实践”,只是使用类似-march=armv7e-m+fpv5+fp.dp
的方法。也许由于这个原因,没有人真正动脑筋来查看您可能需要关心的所有别名(实际上,您已经在我的上一个链接fpv5-d16
的补丁28中看到的内容几乎是事后才想到的)。
但是我想开发人员愿意接受任何建议吗?