当前位置: 首页 > article >正文

【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】


请阅读【嵌入式开发学习必备专栏】


文章目录

    • OpenOCD 无法识别CPUID 问题
      • ARM CPUID
      • CPUID 特性
      • CPUID 寄存器字段

OpenOCD 无法识别CPUID 问题

在使用OpenOCD 进行CPU debug的过程中有时会报出 无法识别CPUID的问题,本文将会介绍如何解决这个问题。首先我们来学习下什么是CPUID,以ARM Cortex-M 系列的Core为例进行介绍。

ARM CPUID

ARM 处理器的 CPUID 和 CPUID 基本寄存器是用于提供处理引擎(PE)识别信息的重要寄存器。这些寄存器帮助软件识别处理器的实现者、设备 ID 及其架构和版本等细节。以下是对 ARM CPUID 寄存器的详细说明。

CPUID 特性

  • 功能: 提供处理引擎(PE)的识别信息,包括设备的实现者代码和设备 ID 号。
  • 访问权限:
    • 该寄存器只能通过特权访问。非特权访问将产生一个错误。
    • 从 ARMv8.1-M 开始,当 DAUTHCTRL.UIDAPEN(任意银行)设置时,该寄存器可通过非特权 DAP 请求访问。

在这里插入图片描述

  • 实现与位置:
    • 32 位只读寄存器,位于地址 0xE000ED00
    • 安全软件可以通过 CPUID_NS(位于 0xE002ED00)访问该寄存器的非安全版本。对于在非安全状态和调试器中执行的软件,地址 0xE002ED00RES0(读取为零)。
    • 该寄存器在安全状态之间不进行切换。

CPUID 寄存器字段

  • Implementer, bits [31:24]:
    • 说明: 实现者代码。
    • 值及含义:
      • 0x41: ‘A’ - ARM Limited。
      • 0x41: 表示非 ARM Limited 的实现者。
    • 注意: ARM 可以分配未在手册中公布的代码。未被 ARM 分配的所有值均为保留值,不得使用。
  • Variant, bits [23:20]:
    • 说明: 变体编号。实现定义的变体编号。通常用于区分不同产品变体或产品的主要修订。
    • 值及含义: 作为实现定义值读取。
  • Architecture, bits [19:16]:
    • 说明: 定义处理引擎实现的架构。
    • 值及含义:
      • 0b1100: ARMv8-M 架构,无主扩展。
      • 0b1111: ARMv8-M 架构,带主扩展。
      • 其他所有值均为保留值。
  • PartNo, bits [15:4]:
    • 说明: 部件编号。实现定义的设备主要部件编号。
    • 值及含义: 作为实现定义值读取。
  • Revision, bits [3:0]:
    • 说明: 修订号。实现定义的设备修订号。
    • 值及含义: 作为实现定义值读取。

openocd/src/target/cortex_m.h 中对ARM Cortex-M 系列core 实现了CPUID的宏,如下:

#define CPUID		0xE000ED00

#define ARM_CPUID_IMPLEMENTOR_POS	24
#define ARM_CPUID_IMPLEMENTOR_MASK	

http://www.kler.cn/a/404906.html

相关文章:

  • sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面
  • Docker3:docker基础1
  • Qt:信号槽
  • debian 如何进入root
  • 接口上传视频和oss直传视频到阿里云组件
  • 南京邮电大学算法设计-二叉树先序遍历算法动态演示
  • 嵌入式学习(13)-塔石TAS-LAN-476串口服务器
  • 双因子认证:统一运维平台安全管理策略
  • iOS应用网络安全之HTTPS
  • Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现
  • 使用 npm 安装 Electron 作为开发依赖
  • 常见的 git 提交备注类型
  • 开源 AI 智能名片 2+1 链动模式商城小程序:场景驱动的商业创新与用户价值挖掘
  • 基于Java Springboot二手商品网站
  • 【Unity3D】获取 GameObject 的完整层级结构
  • 深度学习:如何复现神经网络
  • 99.【C语言】数据结构之二叉树的基本知识
  • Spring MVC 中是如何保证Controller的并发安全?
  • 【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
  • C#高级:Winform中的自定义窗体输入
  • 向量数据库FAISS之四:向量检索和 FAISS
  • OpenCV基础(2)
  • React基础知识一
  • P8692 [蓝桥杯 2019 国 C] 数正方形:结论,组合数学
  • 使用ENSP实现静态路由
  • CPU详细介绍