7.coresight的两大功能

coresight具有两大功能,一个是debug,一个是trace。

1、debug

debugger通过DAP,来实现debug功能。

1.1、单core的debug系统:

7.coresight的两大功能

一个DAP,加上一个AP和APBIC。外部对DP访问,DAP将DP访问,转化为AP访问,AP通过APBIC,生成AP总线,通过bridge,对ARM core中的debug资源,或者挂接在debug APB上的coresight组件,进行访问。

1.2、多core的debug系统:

7.coresight的两大功能

一个DAP,DAP内实现了多个AP,这些AP实现jtag或memory-mapped方式访问debug资源。

外部对DP访问,DAP将DP访问,转化为APB AP或者JATG AP访问,如果是jtag访问,直接通过JTAG AP,以jtag方式,对连接到该jtag上的处理器进行访问。

如果是APB访问,通过APX mux,判断对处理器访问呢,还是挂接在debug APB总线上的coresight组件进行访问,如果对处理器访问,经过APB bridge对处理器进行访问。如果对挂接在debug APB总线上的coresight组件进行访问,那么就直接进行访问。

下图是debug组件,在coregisht系统中的位置。
7.coresight的两大功能

2、trace

2.1、 单core的简单trace系统

下图是单core的简单trace系统,只有一个trace源。
7.coresight的两大功能

只有一个trace源(ETM),因此中间都不需要trace link组件,trace源直接将trace信息输出给trace sink(TPIU)。因为只有一个trace源,因此也不需要trace formatters。

2.2、 单core的高级trace系统

下图是单core的高级trace系统,拥有用个trace源。
7.coresight的两大功能

有多个trace源(ETM,STM),因此中间需要trace link组件(funnel),funnel合并trace信息,发送给replicators,replicators再分发给trace sink(TPIU,ETB)。因为有trace link组件,因此trace sink需要trace formatters,将trace数据格式化,得到真正的数据。

2.3、 多core的高级trace系统

有多个core,每个core有自己的trace组件。因此会包含很多trace功能的coresight组件。
7.coresight的两大功能

3、多cluster的完整coresight系统

下图是一个多cluster的完整的coresight系统。
7.coresight的两大功能

系统中有两个cluster:

◾system1,以processor作为主设备。这个系统中包括了coresight的多个组件,debug组件,trace组件,trigger组件。

◾system2,以DSP作为主设备。这个系统中包括了coresight的多个组件,debug组件,trace组件,trigger组件。

两个子系统通过interconnect连接到一起,实现相互间的通信以及访问外部外设。同时两个子系统的CTM和外部的CTM连接到一起,实现两个子系统之间的event的相互传输。

整个系统中,包括一个DAP,DAP中有一个DP,SWJ-DP(jtag和sw协议转化),和两个AP,AHB-AP(产生AHB总线), APB-AP(产生APB总线)。

AHB-AP产生的AHB总线,直接连接到系统中的interconnect上,就可以访问连接到interconnect的外部外设(如memory)。

APB-AP产生的APB总线,连接到两个子系统的debug apb上,实现对子系统的coresight组件的寄存器访问。如ETM,CTI,HTM,funnel等。同时APB总线还连接到了系统的debug apb上,实现对系统的coresight组件的寄存器访问。如funnel,ETB,TPIU,CTI等。

两个子系统的trace信息,通过各自的funnel输出到系统的funnel上,funnel对两个子系统的trace信息进行合并,然后输出给replicator。replicator将接收的trace信息,广播给ETB和TPIU。TPIU在通过trace port将信息输出到外部。

上一篇:Log日志


下一篇:Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】