安徽和县住房城乡建设局网站,潍坊专业捞泵电话,宁城网站建设公司,中国空间站简介100字文章目录 1.1 ROM Table1.1.1 Entry 寄存器 1.2 ROM Table 例子 1.1 ROM Table
在一个SoC中#xff0c;有多个Coresight 组件#xff0c;但是软件怎么去识别这些 Coresight 组件#xff0c;去获取这些Coresight 组件的信息了#xff1f;这个时候#xff0c;就需要靠 Core… 文章目录 1.1 ROM Table1.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 通过访问 DAP的 AP就可以获取到 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 的基地址存在 DAP 的 AP 的 base addr 寄存器中外部通过访问 DAP 的这个寄存器获取到 ROM Table 的基地址然后就可以访问 ROM Table 各个 Entry 寄存器的值。
组件1组件2组件3的基地址信息存放在 ROM Table 的 entry0entry1entry2 中。 对于组件1entry0 的 [31:12]为1表示组件1的基地址是0x8000_1000外部根据这个地址就可以访问这个组件的 Coresight寄存器从而获取到这个组件的信息。 对于组件2因为这个组件占用了4个4K空间大小ROM Table 中存放占用最后 1 个 4K 空间的基地址因此 entry0的[31:12]为5表示 组件1 的基地址是0x8000_5000外部根据这个地址就可以访问这个组件的 Coresight 寄存器从而获取到这个组件的信息。通过读取PIDR4寄存器的 SIZE 信息获取到该组件占用4个4K空间从而反推可以得到该组件的基地址是 0x8000_2000。 对于组件3entry0 的 [31:12] 为 6表示组件1 的基地址是 0x8000_6000外部根据这个地址就可以访问这个组件的 Coresight 寄存器从而获取到这个组件的信息。
这样外部就通 过 ROM Table就可以获取到 SoC 中所有 Coresight 组件的基地址。有了基地址就可以对其进行访问。
推荐阅读