Cortex-M 处理器实现 CPUID 寄存器,通过它可以检测有关内核的信息:部件号(例如 Cortex M7 或 M4)、修订版和补丁级别(例如 r1p2)等。
是否有寄存器或方法可以检测 FPU 是否已由实现者实现?以及如何检测 FPU 的类型(VFPv4、VFPv5-SP 或 VFPv5-DP)?
最佳答案
在 cortex-m 架构引用手册中,
B3.2.20 协处理器访问控制寄存器,CPACR
CPACR 的特点是:
VFP 将实现 CP10 和 CP11(十进制)。如果没有 VFP,那么它们应该读回 0b00。这适用于大多数 Cortex-M CPU。由于供应商可以在那里实现自己的 IP,因此某些 CPU/SOC 可能无法按文档工作。如果协处理器不存在,捕获/处理将采用的未定义指令将是谨慎的。
关于arm - 如何检测 Cortex M 中的 FPU?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57929824/