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

【ARM Coresight 4 - Rom Table 介紹】

文章目录

    • 1.1 ROM Table
      • 1.1.1 Entry 寄存器
    • 1.2 ROM Table 例子

1.1 ROM Table

在一个SoC中,有多个Coresight 组件,但是软件怎么去识别这些 Coresight 组件,去获取这些Coresight 组件的信息了?这个时候,就需要靠 Coresight 组件中,一个重要的组件,这个组件就是 ROM Table

ARM规定,在一个SoC中,必须要实现至少 1 个 ROM Table,该 ROM Table,保存了SoC中各个Coresight 组件的信息,包括组件格式以及组件的基地址。

ROM Table 只会占用一个 4K 空间大小,也就是PIDR4寄存器的SIZE为0

1.1.1 Entry 寄存器

对于 ROM Table,从 0x000-0xefc,是 Entry 寄存器。每个 Entry 保存了一个Coresight 组件的信息。
在这里插入图片描述
在这里插入图片描述
[31:12] 是Coresight 组件,基于 ROM Table 基地址的偏移地址。例如 ROM table 的基地址为 0x2000_0000,而[31:12]1, 那么这个 Coresight 组件的基地址就是 0x2000_1000
[8:4][2]是用来说明该Coresight 组件所处的 power domain。因为一个 SoC中,有多个power domain,而每个组件可能会处于不同的 power domain中。就依靠这两个位域说明。
[1],表示 Coresight 的寄存器的数据有效是8bit,还是32bit
[0],表示这个 Entry 代表的组件是否有有效的。

一个 ROM Table 中,最多有 960 个 Entry ,也就是一个 ROM Table中,可以最多保存 960 个 Coresight 组件的信息,但是在一个 Entry 中,可以指向下一个rom table,这样,就扩展了保存Coresight 组件信息的个数。

如果rom table的 Entry 没有用完,那最后一个有效的 Entry 后的下一个 Entry , Entry 值为全0。
在这里插入图片描述
rom table的基地址,保存在 DAP 的AP的 base addr 寄存器中,这样 Debugger 通过访问 DAPAP,就可以获取到 Rom Table 的基地址,然后在访问 Rom Table,从而获取到整个SoC 中所有的 Coresight 组件的信息。

ROM Table的 Entry 指向,可以理解是一个链表,但是链表中,不能有环。如以下的 Entry 指向是错误的
在这里插入图片描述
在这里插入图片描述
如果一个Coresight 组件,占用的空间,超过了4K,但 Coresight 有规定,Coresight的寄存器,要实现在最后一个4K的最后1K位置,因此 ROM Table 中的该 Coresight 组件的基地址,为最后一个 4K 空间的基地址。

1.2 ROM Table 例子

例如,如下的 Coresight 系统,共4个组件,假设第一个组件是ROM Table。假设 ROM Table 的基地址是 0x8000_0000
在这里插入图片描述

那么:
在这里插入图片描述

ROM Table 的基地址,存在 DAPAPbase addr 寄存器中,外部通过访问 DAP 的这个寄存器,获取到 ROM Table 的基地址,然后就可以访问 ROM Table 各个 Entry 寄存器的值。

组件1组件2组件3的基地址信息,存放在 ROM Tableentry0entry1entry2 中。

  • 对于组件1entry0[31:12]1,表示组件1的基地址是0x8000_1000,外部根据这个地址,就可以访问这个组件的 Coresight寄存器,从而获取到这个组件的信息。

  • 对于组件2,因为这个组件,占用了44K空间大小,ROM Table 中存放占用最后 1 个 4K 空间的基地址,因此 entry0[31:12]5,表示 组件1 的基地址是0x8000_5000,外部根据这个地址,就可以访问这个组件的 Coresight 寄存器,从而获取到这个组件的信息。通过读取PIDR4寄存器的 SIZE 信息,获取到该组件占用44K空间,从而反推,可以得到该组件的基地址是 0x8000_2000

  • 对于组件3entry0[31:12]6,表示组件1 的基地址是 0x8000_6000,外部根据这个地址,就可以访问这个组件的 Coresight 寄存器,从而获取到这个组件的信息。

这样,外部就通 过 ROM Table,就可以获取到 SoC 中,所有 Coresight 组件的基地址。有了基地址,就可以对其进行访问。

推荐阅读

http://www.lryc.cn/news/61989.html

相关文章:

  • 11111111
  • JavaWeb——TCP协议的相关特性
  • 数据结构(C语言实现)——二叉树的概念及二叉树顺序结构和链式结构的实现(堆排序+TOP-K问题+链式二叉树相关操作)
  • OpenShift:关于OpenShift(OKD)通过命令行的方式部署镜像以及S2I流程Demo
  • 楔形文字的破解(钉子形文字)【文字破译原理:信息的相关性】
  • 【网络安全】文件上传绕过思路
  • MySQL数据库(2)
  • 2023年学什么编程语言,最容易找工作?
  • 4月23日,今日信息差
  • 【随笔四】JavaScript 中的 rest
  • maven作用讲解---以及怎么配置阿里的maven镜像
  • NXP公司LPC21xx+热敏电阻实现温度检测
  • Springboot信息泄露以及heapdump的利用
  • 淘宝天猫店铺新品如何运营?
  • Linux-给普通用户sudo权限
  • 小米13 Ultra:携光前行,追求每一束光的精确还原
  • 全志 Orange Pi相关网站集
  • js+css实现简单的弹框动画
  • 真题详解(UML图)-软件设计(五十五)
  • 基于html+css的图展示42
  • MyBatis系列-入门篇
  • 科学防雷接地和雷电防护方案
  • SpringMVC-RESTful架构风格
  • consistency-starter
  • 【Json】Spring Boot整合Json与Json数组
  • Adobe Photoshop 软件下载
  • [ES6]解构与赋值
  • 2023年3月 青少年软件编程(C语言) 等级考试试卷(五级)
  • Unity之ShaderGraph入门
  • Spring-学习修改尚硅谷最新教程笔记