【问题标题】:How to detect FPU in Cortex M?如何检测 Cortex M 中的 FPU?
【发布时间】:2019-09-13 20:11:34
【问题描述】:

Cortex-M 处理器实现 CPUID 寄存器,通过它可以检测有关内核的信息:部件号(例如 Cortex M7 或 M4)、修订和补丁级别(例如 r1p2)等。

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

【问题讨论】:

  • 大概看一下相关SOC的data sheet

标签: arm cortex-m fpu


【解决方案1】:

在 cortex-m 架构参考手册中,

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

CPACR 的特点是:

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

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

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 2017-06-07
    • 2020-11-12
    • 2011-12-30
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2014-09-06
    相关资源
    最近更新 更多