Cortex-M 微控制器的 FPU 版本

FPU version for Cortex-M microcontrollers

通过简单的google搜索,我发现 Tiva C Launchpad 的 fpu 版本是 fpv4-sp-d16,但是哪个文档告诉了各种微控制器(tm4c123gh6pm、stm32f407、stm32f446re 等)的 fpu 版本.)?

arm-none-eabi-gcc --print-multi-lib

提供有关体系结构和 abi 的信息,但未针对特定体系结构提及 fpu 版本。

FPU是由ARM定义的,因此你需要查看ARM核心定义。请注意,FPU 对于内核是可选的,因此您需要检查芯片供应商的文档,了解它们是否包含 FPU。

对于Cortex-M4,可选的FPU是32位的,即单精度FP。请注意,这意味着双精度(即 64 位 FP)是在不使用 FPU 的情况下完成的。

Cortex-M7 定义包括一个可选的 64 位 FPU,可以执行单精度和双精度 FP 指令。

与使用的 FPU 正交的是您的程序使用的调用约定。与 FP 相关。基本上是指是否在普通ARM寄存器上传递FP寄存器中的函数参数。

arm社区给出了如下答案

"ARM Cortex‑M4 Processor Technical Reference Manual" 给出了这个信息

ARM Cortex-M4 TRM

第 7.1 节关于 fpu 说 "The Cortex-M4 FPU is an implementation of the single precision variant of the ARMv7-M Floating Point Extension(FPv4-SP)"

此外,32 个单精度寄存器可以组合成 16 个双精度寄存器 (d16),因此 fpv4-sp-d16