Arm 如何检测M皮质的FPU?

Arm 如何检测M皮质的FPU?,arm,cortex-m,fpu,Arm,Cortex M,Fpu,Cortex-M处理器实现CPUID寄存器,通过该寄存器可以检测有关核心的信息:零件号(如Cortex M7或M4)、版本和补丁级别(如r1p2)等 是否有寄存器或方法来检测FPU是否已由实现者实现?以及如何检测FPU的类型(VFPv4、VFPv5 SP或VFPv5 DP)?在cortex-m Architecure参考手册中 B3.2.20协处理器访问控制寄存器,CPACR CPACR的特点是: 目的:指定协处理器的访问权限 使用限制:如果未实现协处理器,则将0b01或0b11写入相应的CP

Cortex-M处理器实现CPUID寄存器,通过该寄存器可以检测有关核心的信息:零件号(如Cortex M7或M4)、版本和补丁级别(如r1p2)等


是否有寄存器或方法来检测FPU是否已由实现者实现?以及如何检测FPU的类型(VFPv4、VFPv5 SP或VFPv5 DP)?

在cortex-m Architecure参考手册中

B3.2.20协处理器访问控制寄存器,CPACR

CPACR的特点是:

  • 目的:指定协处理器的访问权限
  • 使用限制:如果未实现协处理器,则将0b01或0b11写入相应的CPACR字段将读回为0b00
  • 配置:始终实现

VFP将实现CP10和CP11(十进制)。如果没有VFP,则它们应读回为0b00。这将适用于大多数Cortex-M CPU。由于供应商可以实现自己的IP,因此某些CPU/SOC可能无法按文档所述工作。谨慎的做法是捕获/处理未定义的指令,如果没有协处理器,则会执行该指令。

请查看相关SOC的数据表