文章目录
- APBIC 回顾
- APBIC 级联
上篇文章:ARM Coresight 系列文章 7 - ARM Coresight 通过 AHB-AP 访问 异构 cpu 内部 coresight 组件
APBIC 回顾
APBIC 可以连接一个或者多个APB BUS masters, 例如连接一个 APB-AP 组件和带有 APB 接口的 Processor, APBIC 通常会带有一个ROM Table,位于0x0000_0000处。 APBIC 总线位宽为32bits。
可以配置 APBIC上每个 master的地址访问范围,比如某些coresight组件需要的地址空间范围超过4K,这个时候就可以通过配置APBIC Master的空间范围来进行支持。
APBIC 级联
在系统比较复杂的时候可能会用到APBIC的级联,如下图所示,SYS APBIC 上接了一个AP APBIC 和 APBIC DECODE 两个组件,
而 AP APBIC 上又接入了 AXI-AP、AHB-AP…, 这个时候就需要弄清地址映射关系,否者可能是一团乱麻。。。
图 1-1
图1-1中 SYS APBIC 上出来的两个 Master 的映射地址分别是 0x4900_0000
一个是0x4b00_0000
, 看起来有点奇怪,我们知道 SYS APBIC 中应该还有个romtable, SYS APBIC 接出来的两个master 相对于 SYS APBIC中的 romtable 应该有个偏移,但是从地址数据来看,并没有对应的偏移,这个是为什么呢?
SYS APBIC 中确实没有放 romtable,是直接 hard routing 过去的,也就是从 SNM-HUB出来之后,直接接到 SYS APBIC 上的两个 Master上的,这样做的原因是想分出两个master 出来好接到 AP APBIC 和 APB DECODE上。所以对于coresight 组件的使用最终还是由 ASIC design决定的,并不一定完全要按照 IP的 SPEC来。
如果需要通过SMN-HUB 来访问 AHB-AP,再通过AHB-AP访问连接其上的Cortex-M33中的 coresight 组件ITM,需要那么地址关系是怎么样的呢?
图 1-2
由上图1-1可以看到从SMN-HUB 看到 AP APBIC 的地址为0x4b00_0000
,可以通过这个地址访问到AP APBIC中的 romtable,然后根据romtable entry中的信息可以获取到AHB-AP的偏移地址,假设 AHB-AP 相对 AP APBIC romtable 中的偏移地址为 0x00120000
, 那么通过 0x4b00_0000
+ 0x0012_0000
就可以获取到 AHB-AP的基地址了。
接下来就是通过 AHB-AP 中的寄存器来读取 Cortex-M33的romtable 的地址了,详情见:ARM Coresight 系列文章 7 - ARM Coresight 通过 AHB-AP 访问 cpu 内部 coresight 组件
上篇文章:ARM Coresight 系列文章 7 - ARM Coresight 通过 AHB-AP 访问 cpu 内部 coresight 组件