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

【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.lryc.cn/news/489259.html

相关文章:

  • 如何实现点击目录跳转到指定位置?【vue】
  • SQL 通配符
  • ubuntu显示管理器_显示导航栏
  • 黑芝麻嵌入式面试题及参考答案
  • 使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
  • 系统性能优化方法论详解:从理解系统到验证迭代
  • 使用Tengine 对负载均衡进行状态检查(day028)
  • 网站推广实战案例:杭州翔胜科技有限公司如何为中小企业打开市场大门
  • 视频修复技术和实时在线处理
  • 文心一言 VS 讯飞星火 VS chatgpt (396)-- 算法导论25.2 1题
  • 如何使用本地大模型做数据分析
  • 【Nginx从入门到精通】04-安装部署-使用XShell给虚拟机配置静态ip
  • C# 面向对象的接口
  • 使用IDEA+Maven实现MapReduced的WordCount
  • go语言示例代码
  • 华为云容器监控平台
  • 阿里短信发送报错 InvalidTimeStamp.Expired
  • Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好
  • Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号
  • Cesium 加载B3DM模型
  • 阿里巴巴官方「SpringCloudAlibaba全彩学习手册」限时开源!
  • Docker是一个容器化平台注意事项
  • Redis中的zset用法详解
  • 上位机编程命名规范
  • Python 操作mysql - 关系型数据库存储
  • React基础知识一
  • 游戏行业趋势:“AI、出海、IP”大热下,如何提升竞争力?
  • shell--第一次作业
  • Rust:原子操作 AtomicBool
  • 深入浅出学算法002-n个1