Coresight(五) 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. 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空间的基地址。

2. 例子

  例如如下的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的entry0,entry1,entry2中。

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

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

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

  这样,外部就通过rom table,就可以获取到soc中,所有coresight组件的基地址。有了基地址,就可以对其进行访问。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值