购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 CoreSight系统的结构及功能

Zynq-7000 SoC的测试和调试能力使用户能够使用侵入式或非侵入式调试方法对PS与PL进行调试。用户可以调试一个完整的系统,包含PS和PL。除调试软件外,用户还可以调试PS内的关键硬件点和用户所选择的PL内的关键硬件点。

4.2.1 CoreSight系统的结构

基于Arm CoreSight v1.0结构规范,测试和调试能力大多由Arm所支持的元件提供。但是,也包含一个由Xilinx支持的元件。Arm CoreSight结构定义了4类CoreSight元件,即访问和控制类元件、跟踪源类元件、跟踪链接类元件和跟踪槽类元件。

1.访问和控制类元件

访问和控制类元件提供一个用户接口,通过JTAG或存储器映射的位置访问、调试基本结构。该元件类型也通过一个触发器信号分配网络,协调独立的CoreSight元件操作。

2.跟踪源类元件

跟踪源类元件捕获调试信息,如指令地址、总线交易地址和产生跟踪包。这些跟踪包与跟踪链接类元件连接。

3.跟踪链接类元件

在跟踪链接类元件中,对跟踪包进行组合或复制。

4.跟踪槽类元件

跟踪槽类元件接收跟踪包,并将它们导入片上跟踪缓冲区,将它们通过MIO连接到芯片引脚进行输出或通过EMIO送到PL中。

通过3个主要类型的总线/信号,即编程、触发和跟踪将CoreSight元件连接在一起。编程总线是一条路径,用于访问和控制类元件,通过JTAG或处理器将编程信息传递到其他CoreSight元件中。触发器信号被所有类元件使用,(从其他类元件)接收和发送(到其他类元件)用于区分触发器的功能属性,以协调它们的操作。跟踪总线是主要的路径,用于跟踪包的流动,连接跟踪源类、跟踪链接类和跟踪槽类元件。

CoreSight元件提供下面的功能,用于系统宽范围的跟踪。

(1)通过单个调试器连接实现整个系统的调试和跟踪可见性。

(2)支持在SoC子系统间的交叉触发。

(3)在单个流内有多个源跟踪。

(4)相比于前面的解决方案,它提供更多的数据压缩能力。

(5)具有用于标准工具支持的标准程序员模型。

(6)支持自动发现拓扑结构。

(7)具有用于第三方核的开放接口。

(8)支持低引脚数目选择。

4.2.2 CoreSight系统的功能

CoreSight系统的结构如图4.6所示,其中给出了4类CoreSight元件。

(1)访问和控制类元件:ECT。

(2)跟踪源类元件:PTM、FTM和ITM。

(3)跟踪链接类元件:漏斗和复制。

(4)跟踪槽类元件:ETB、TPIU。

CoreSight系统进行的交互如下。

(1)CPU:通过PTM用于调试和跟踪。

(2)CPU:通过ITM用于跟踪。

(3)PL:通过FTM用于调试和跟踪。

(4)CPU:通过ETB用于导入跟踪。

(5)EMIO/MIO:通过TPIU用于导入跟踪。

(6)CPU/JTAG:通过DAP用于编程CoreSight元件。

图4.6 CoreSight系统的结构

1.DAP

DAP是前端,用于用户访问Zynq-7000 SoC的测试和调试功能。它是访问和控制类元件,使用编程总线将其连接到其他元件。DAP为用户提供了两个接口,用于访问CoreSight的基本结构。

(1)外部的:JTAG,来自芯片引脚输出。

(2)内部的:APB从设备,来自从互联。

一个调试器能使用JTAG与CoreSight的基本结构进行通信。同时,运行在CPU上的软件也可以通过分配给CoreSight基本结构的存储器映射地址来使用APB。通过其中一个接口,DAP将到达的访问请求提交给所请求的CoreSight元件。

此外,DAP还有其他接口,用于访问PS的子系统。

(1)内部的:AHB主设备,到主互联。

(2)使用AHB:DAP首先将来自JTAG的访问请求提交到PS的其他子系统中,然后进行认证。例如,一个调试器能够查询DDR一个地址的内容或一个协处理器寄存器的值。

DAP块是Arm提供的一个IP核,使用下面的配置。

(1)JTAG是器件引脚输出的唯一外部接口,不提供串行线接口(Serial Wire Interface,SW-DP)。

(2)APB从端口和AHB主端口是两个内部接口,在DAP内部一侧(JTAG-AP)不出现JTAG。

(3)不支持掉电模式。

2.嵌入式交叉触发

嵌入式交叉触发器(Embedded Cross Trigger,ECT)是一个交叉触发机制。通过ECT,CoreSight能使用发送与接收触发与其他元件进行交互。ECT由以下两部分构成。

(1)CTM:交叉触发矩阵。

(2)CTI:交叉触发接口。

一个或多个CTM构成一个包含多个通道事件的广播网络。对于一个事件,一个CTI会侦听一个或多个通道,将一个收到的事件映射到一个触发上,将触发发送到与CTI连接的一个或多个CoreSight元件中。一个CTI也对来自其所连接CoreSight元件的触发进行组合和映射,并且将其作为事件广播到一个或多个通道中。CTM和CTI是控制和访问类元件。

ECT配置包含4个广播通道、5个CTI,不支持掉电模式。

3.程序跟踪宏

程序跟踪宏(PTM)是一个块,用于跟踪处理器的执行流。它基于Arm程序流跟踪(Program Flow Trace,PFT)结构,是跟踪源类元件。通过只跟踪程序执行中的某些点,PTM产生跟踪工具所需的信息,这些信息用于重新构建程序的执行过程。这样,就减少了跟踪数据的数量。PTM支持时间戳,用于关联多个跟踪流和粗粒度的代码统计。

PTM提供了一些通用的资源,如地址/ID比较器、计数器、序列器,以及用于设置用户定义事件的触发条件,这扩展了跟踪程序执行的基本功能。

Zynq-7000内部的PTM块是Arm提供的标准IP,没有定制的配置。

4.指令跟踪宏

指令跟踪宏(Instruction Trace Macrocell,ITM)是一个块,用于软件产生跟踪。它是跟踪源类元件,支持触发和粗粒度时间戳。它的主要应用如下。

(1)Printf类型的调试。

(2)跟踪OS和应用事件。

(3)发出诊断系统消息。

Zynq-7000 SoC内部的ITM块是Arm提供的标准IP,没有定制的配置。

5.漏斗

漏斗(Funnel)是一个块,用于将来自多个源的跟踪数据合并到一个单个数据流中。它是跟踪链接类元件。用户选择需要合并的数据源,并且给它们分配优先级。

Zynq-7000 SoC内部的漏斗是Arm提供的标准IP,没有定制的配置。

6.嵌入式跟踪缓冲区

嵌入式跟踪缓冲区(Embedded Trace Buffer,ETB)是片上跟踪数据的存储区域。它是跟踪槽类元件。ETB提供实时全速保存能力,但是其大小受限。它支持触发用于这些事件,即缓冲区满和捕获完成。

Zynq-7000 SoC内部的ETB是Arm提供的标准IP,没有定制的配置。

7.跟踪/包输出

跟踪/包输出(Trace Packet Output,TPIU)是一个块,用于将跟踪数据输出到PL或器件引脚进行输出。它是跟踪槽类元件。它提供了无限的跟踪数据输出能力,但是其带宽受限。它支持触发和刷新操作。

Zynq-7000 SoC内部的TPIU是Arm提供的标准IP,其配置如下。

(1)最大数据宽度:32位。

(2)每个CoreSight规范:每个CoreSight元件都有4KB的地址空间。CoreSight元件的基地址如表4.8所示。

表4.8 CoreSight元件的基地址

思考与练习4.3:请说明CoreSight系统的结构特点与实现的功能。 /VHEeLA0CI6PqTF5wz3RJRl4bUjc9uxzxiGW7/tRkOSxnbQwyqOMno0yrr62/jD5

点击中间区域
呼出菜单
上一章
目录
下一章
×