赞
踩
因为coresight属于ARM制定的标准,因此ARM针对coresight,设计出来soc-400套件。设计人员可以利用这个套件,快速的生成coresight系统,并且生成相应的case,对coresight系统进行验证。
coresight soc-400系统框图:
这个套件中,可以利用AMBA-designer来自动生成coresight的组件,只需要更改一些配置信息即可自动生成。
DAP的一般结构:
SWJ-DP和外部的sw或jtag通信,然后和DAPBUS通信。实现对各个AP的访问。然后各个AP再对片内内部资源进行访问。
SWJ-DP包括两个DP,一个是SW-DP,一个是JTAG-DP。
下图是DAP的内部结构,包含一个DP,5个AP。
DAP将外部接口数据(external interface format),也就是SW协议数据或者JTAG协议数据,转化为内部的接口数据(internal interface),也就是AP访问数据。
将jtag或sw总线协议,转化为dap总线。
接收jtag或sw数据**,如果是对DP访问,直接在内部对DP的寄存器进行访问**。如果是对AP的访问,转化为dap总线,对后级所接的AP进行访问。
组件,还提供了两个power域的上电请求(system power和debug power),以及debug域的复位请求。
对于两个power域的信号,每个信号都是1bit信号。
信号 | 作用 |
---|---|
cdbgpwrupreq | DAP向power控制器发送的debug power域的上电请求以及时钟使能信号 |
cdbgpwrupack | power控制器向DAP回应的debug power域的上电请求以及时钟使能响应信号 |
csyspwrupreq | DAP向power控制器发送的system power域的上电请求以及时钟使能信号 |
csyspwrupack | power控制器向DAP回应的system power域的上电请求以及时钟使能响应信号 |
debugger通过控制这些信号,来实现对debug power域和system power域的上电以及时钟使能请求操作。
而控制这些信号,是通过写DA的CRTL/STAT寄存器来实现。
该寄存器的31-28bit。
在实际中,可能power域是断电,或者时钟是关掉的。此时debugger要对这个power域中的组件进行访问,就需要将该power域给开启以及将时钟给开启。此时就需要这些信号。
两个power域的请求信号是独立的,因为两个power域都是独立的,互不干扰。
当REQ信号变高后,表示要power up,power控制器应该将ACK信号拉高,表示响应该请求。而REQ信号变低后,表示要power down,power控制器应该将ACK信号拉低。
对于debugger,可以访问该寄存器,读取ACK的值,即可知道该power域是否有上电。
reset也是一样的。DAP可以请求复位debug域的寄存器。也是通过CTRL/STAT寄存器来控制。
时序如下:会驱动PRESETDBGn信号为低,从而实现debug复位。
连接DP和后续的所有AP。组件会根据DP的select寄存器,决定是对哪一个AP进行访问,从而生成对该AP访问的总线。
对于地址dapcaddrs[15:2]:
dapcaddrs[15:8]:是select寄存器的最高8位的值,也就是AP的选择
dapcaddrs[7:2]: 访问AP寄存器的地址
AXI的master,访问该AP,可以发起AXI访问。输入DAP总线,输出AXI总线。
APB的master,访问该AP,可以发起APB访问。输入DAP总线,输出APB总线。
APB互联组件,连接了众多的coresight组件,外部可以通过APB互联,实现对连接到APB互联上的coresight组件的访问。
以下是APB互联组件框图:
APB互联组件包括以下的一些互联组件。
每个APB互联组件,至少连接一个rom table组件,并且该组件的地址为0x0000_0000,这样外部通过rom table,在能知道连接到该APB互联组件上的所有coresight组件信息。
coresight组件,和APB互联的时钟,可能是异步的,因此需要一个异步桥,进行转换。
coresight组件,和APB互联的时钟,可能是同步,但是不是同频,因此需要一个同步桥,进行转换。
ATB互联组件包括以下的一些互联组件
replicator用来将上级的master发送的ATB数据,传输给下级的两个ATB slave组件。
结构如下图所示:
总共有4个port:
ATB slave port:接收上一级的ATB master的ATB数据
optional APB port:配置replicator的APB总线端口,外部通过该APB总线设置replicator。
ATB master port0:输出给master0的ATB总线
ATB master port1:输出给master1的ATB总线
将多个ATB输入,合并成一个ATB输出。
结构如下图所示:
3个port:
ATB slave port:接收上级的ATB总线,至少有两组
optional APB port:配置funnel的APB总线端口,外部通过该APB总线设置funnel。
ATB master port:输出给master的ATB总线
将输入的数据位宽为SBW+1的ATB总线,转换为数据为数据位宽为MDW+1的ATB总线。MDW >= SBW。
ATB_DATA_WIDTH_SLAVE: 8,16,32,64
ATB_DATA_WIDTH_MASTER: 8,16,32,64
将输入的数据位宽为SBW+1的ATB总线,转换为数据为数据位宽为MDW+1的ATB总线。MDW <= SBW。
ATB_DATA_WIDTH_SLAVE: 8,16,32,64
ATB_DATA_WIDTH_MASTER: 8,16,32,64
跨时钟域(异步时钟)的数据转换桥。
将时钟为clks的ATB总线,转换为时钟为clkm的ATB总线。
跨时钟域(同步时钟)的数据转换桥。
将时钟为clks的ATB总线,转换为时钟为clknm的ATB总线。
timestamp组件,用来生成时间信息的。
组件,根据SCLK,产生计数值,然后发送给各个coresight组件,这样各个组件就有了时间信息。
ECT包括CTI和CTM。
CTI用来接收和发送trigger,channel信号用。
trigger interface:连接需要发送trigger,接收trigger的组件
channel interface:连接CTM,接收CTM发送的channel,以及发送channel到CTM上
APB interface: 配置CTI的APB总线,外部通过该APB总线,设置CTI
CTM,连接各个CTI。
trace port interface ,接收trace信息,发送trace信息到片外。
debug apb port:配置TPIU的APB接口,外部通过APB总线,设置TPIU。
ATB slave port: 接收trace source或trace link的trace数据
trace port:芯片的输出管教,输出信息给外界
trigger port: 连接CTI。
内部结构如下图:
接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,保存在FIFO中。
因为有2个时钟域,一个是片内的时钟域,一个是片外的时钟域,因此该FIFO是异步FIFO,写是在atclk时钟域写入,读是在traceclkin时钟域读取。读取之后,通过trace out,将数据以串行方式,从接口发送出去。
APB接口,是TPIU向外部提供了配置TPIU寄存器的APB接口。
embedded trace buffer。存储trace信息的buffer。
内部结构如下:
接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,然后通过trace RAM interface,将数据,保存到trace RAM中。
APB接口,是ETB向外部提供了配置ETB寄存器的APB接口。
power requestor可以让外部通过APB总线控制指定power domain的上电和断电。从而控制指定的coresight组件的power。
coresight-400,其实就是ARM实现coresight系统的套件,包含了coresight的各个组件,我们利用这个套件,就不再需要自己单独去设计以及验证这些coresight组件,直接拿过来,搭建soc环境。并且coresight-400组件,还提供了一些测试case,可以用来验证搭建的coresight系统,是否正确。
更多的信息,查看ARM提供的coresight-400组件文档。
自此,ARM的coresight介绍到此完毕,附件是整合的文档。
感谢骏哥Coresight的分享,获益匪浅!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。