再上一篇:14.4 MPU 的典型设置
上一篇:第15章
主页
下一篇:15.3 调试模式
再下一篇:15.4 调试事件
文章列表

15.2 CoreSight 技术概览

《Cortex-M3 权威指南》,嵌入式处理器开发教程。

CoreSight调试架构的定义简直包罗万象,包括调试接口协议、调试总线协议、对调试组件的 控制、安全特性、跟踪接口等。在《CoreSightTechnologySystemDesignGuide(Ref3)》中, 对 CoreSight有详细的讲述,此外,在 Cortex-M3TRM中也开出了若干章,专门叙述 CM3中调试 组件的设计。但是这些内容通常只是给设计调试软件的人看的,我们软硬件开发者不要陷得太深。 不过,懂一点调试系统的组成结构和基本工作原理,还是很有助于让我们善加利用这强大无比的调 试系统,大幅加速程序的开发的。

15.2.1 处理器的调试接口

CM3 的调试系统已经与 ARM7/ARM9 的大相径庭了,基于新好 CoreSight架构,它从头到脚都 是新的。以前的 ARM处理器都提供 JTAG接口,通过它来控制对寄存器和存储器的访问。在 CM3中 全变了——对处理器上总线逻辑的控制使用另外的总线接口,即通过所谓的“调试访问端口(DAP)”。 DAP与 AMBA中的 APB很相似。在 CM3中,把 JTAG或串行线协议都转换成 DAP总线接口协议,再 控制 DAP来执行调试动作。

CM3内部的调试总线 DAP是 APB的近亲,所以很容易在它上面挂上很多调试组件,从而使得调 试系统可大可小,伸缩性极强。此外,把调试接口和调试硬件分开,也是颇具匠心的:芯片中实际 使用的调试接口类型变得透明化。从而不管使用了什么样的调试接口,相同的调试任务都可以按照 同一个方式执行。

在CM3处理器内核中,实际的调试功能由NVIC和若干调试组件来协作完成。调试组件包括FPB, DWT, ITM等。NVIC中有一些寄存器,用于控制内核的调试动作,如停机、单步;其它的一些功能 块则控制观察点、断点,以及调试消息的输出等。

就目前来看,CM3支持两种调试主机接口(debug host interface ):第一个是广为使用的 JTAG接口,另一个则是新的“串行线(Serial Wire, SW)调试接口”。新出的 SW接口对信号线的 需求只有两条。ARM 公司还提供了若干种调试主机接口模块(称为“调试接口”(DP))。DP 充当处 理器与调试器的中介:它的一端连接到调试器上,另一端则连接到 CM3的 DAP接口上。
选择串行线的理由

CM3 主要针对低成本的单片机市场。单片机往往没有很富裕的管脚资源。而 JTAG

协议需要使用 4根脚,而 SW则只需要两根。

15.2.2 DP模块,AP模块和 DAP

从外部调试器到 CM3调试接口的连接,需要多级互联才能完成,如图 15.1所示。 第一步,是通过 DP接口模块(通常是 SWJ-DP或 SW-DP),先把外部信号转换成一个通用的 32
位调试总线信号(图表中的 DAP总线)。SWJ-DP支持 SW与 JTAG两种协议,而 SW-DP则只支持 SW。 另外,在 CoreSight产品中还可以使用一种 JTAG-DP,它只支持 JTAG协议。DAP总线上的地址是

32 位的,其中高 8位用于选择访问哪一个设备,由此可见,最多可以在 DAP 总线上面挂 256个设 备。在CM3处理器的内部,只用掉了一个设备的地址,还剩下的255个都可以用于连接访问端口(AP) 到 DAP总线上。

图 15.1 高度主机到 Cortex-M3的连接
在把数据从 DAP接口传递给 CM3处理器后,下一步就连接到了一个称为“AHB-AP”的 AP设备 上,它相当于一个总线桥,用于把 DAP 总线的命令转换为 AHB 总线上的数据传送,再插入到 CM3 内部的总线网络中。这么一来,CM3 的整个寻址空间就都在覆盖范围之内了,连 NVIC 中的调试控 制寄存器组也包括在内。在 CoreSight 系列产品中,AP 设备可以有好几种类型,包括 APB-AP 和 JTAG-AP。APB-AP顾名思义,是用于产生 APB总线数据传送动作的,而 JTAG-AP则用于控制传统 的、基于 JTAG的测试接口,例如 ARM7上的调试接口。

15.2.3 跟踪接口

CoreSight架构的另一个部分用于跟踪。在 CM3中有 3种跟踪源:

1. 指令跟踪:由 ETM(嵌入式跟踪宏单元)产生

2. 数据跟踪:由 DWT产生

3. 调试消息:由 ITM产生,提供形如 printf的消息输入,送到调试器的 GUI中 在跟踪过程中,由先把跟踪源产生的数据裹成数据包,然后把数据包送到“高级跟踪总线(ATB)”

上进行传送。在 CoreSight的架构中,如果某 SoC含有多个跟踪源(例如,多核系统),则需要一
种硬件水平的 ATB 归并器(merger),把各 ATB 数据流归并成一条(在 CoreSight 架构中,这种 硬件被名为 ATB funnel)。归并后的数据流都送往 TPIU(跟踪端口接口单元),TPIU 再把数据导 出到片外的跟踪硬件设备。在数据送到了调试主机(PC)后,再由 PC 端的调试软件还原为先前的 多条数据流。
尽管在 CM3中拥有多个跟踪源,但 CM3内建了一个归并硬件,因此不需要再添加 ATB funnel 模块了。跟踪输出接口可以直接连接到专为 CM3设计的 TPIU上,然后就可以供 PC控制的外部硬件 捕捉仪来跟踪数据。

15.2.4 CoreSight的性质

基于 CoreSight的调试设计有很多优势:
 即使在处理器运行时,也可以查看存储器和外设的寄存器的内容
 使用单一调试器,就可以控制多核系统的调试接口。例如,如果使用 JTAG,则只需要一个

TAP控制器,不管芯片中有几个处理机都一样。

 内部的调试接口是基于单总线的方式设计的,因此非常有弹性,也简化了为芯片的其它部 分设计附加的测试逻辑。
 它使得多条“跟踪数据流”可以由单一的“跟踪捕获设备”来收集,送到 PC 机上之后再 还原出先前的各条数据流。

CM3中的调试系统是基于 CoreSight的,但是又有一些“变异”:

 CM3的跟踪组件是重新设计的,有些在 CM3中的 ATB接口是 8位的,而纯种的 CoreSight
的都是 32位的。

 CM3的调试系统没有实现 TrustZone——ARM提供的一种技术,用于在嵌入式产品中提供 安全特性。

 调试组件所需的空间挤到了系统的存储器映射中。而在标准的 CoreSight系统中,是为调 试总线另开了一个地址空间的。例如,在 CoreSight系统中,系统连接的概念图如图 15.2 所示:

图 15.2 CoreSight系统设计概念图
而在 CM3中,调试设备共享同一个同一个存储器映射,如图 15.3所示

图 15.3 Cortex-M3的调试系统
尽管 CM3 的调试组件在实现上与标准 CoreSight 系统的有些出入,但是通信接口与协议是与 CoreSight架构兼容的,并且可以直接挂接到 CoreSight系统上,标准 CoreSight的调试组件也 可以挂接到 CM3上。例如,(标准)CoreSight调试组件,诸如 TPIU,调试端口以及跟踪基础设施 等,可以供 CM3使用,并且以此来把调试能力延伸到多核调试系统中。
关于 CoreSight 架构的更多内容,请参阅《CoreSight Technology System Design

Guide(Ref3)》。