片上技术支持可见性
在现在的芯片上,跟踪、触发、数据 I/O和管脚管理技术共同提供了更多的可见性。由此产生的片上调试架构与图2所示的类似。
![]() |
| 图2。 |
这种方法的跟踪和触发部分的实现和逻辑分析仪类似,但分析器的触发和收集部被分放在芯片上,记录缓冲则被放在仿真器。然而,片上触发和跟踪的组合在复杂度上与CPU相当。某些情况下,它们的不规则实现使它们比CPU和其它系统组件更加复杂。数据I/O部分实际上是某种由DMA驱动的串行端口,同时管脚管理器在运行时把所需的功能分配给管脚。
跟踪 一些通用处理器(GPP)制造商已经为较低频率的CPU提供了输出跟踪,其中许多GPP公司重新回到制图板上以便为更高性能的CPU构建解决方案。DSP供应商也加入这种竞争,模仿并充分改进MCU的功能。
为对跟踪问题作深入了解,让我们研究图3给出的简单的跟踪收集、输出和解码过程。处理器有一个32b的程序计数器和两个数据总线――每个都有一个32b地址和64b数据。假定所有总线在每个周期都是激活的,每个时钟周期就有可能产生224b的跟踪信息。如果10个管脚以200Mbps/管脚的速度传输跟踪输出,CPU运行在500MHz的时候需要使用62:1的无损压缩。因为不能很好地对存储器基准进行编码和压缩,所以获得这个压缩比是不可能的。因此,必须把存储器基准信息滤除,只剩下确定的值。
![]() |
| 图3。 |
触发 触发提供了一种有选择性地跟踪(滤除)程序流、定时和存储器引用的方法。传统的片上触发包括了简单的断点比较器。现在的高级功能添加了计数器、甚至检测器以及状态定序器。这些部分都放在芯片上,排列在在嵌入式总线和信号的旁边。这种选择性触发的实际实现是嵌入在TI公司的DSP上的高级事件触发功能。在过去的几年中,实现了许多更强大的AET触发和定序功能。对于其它芯片供应商来说也是这样。
跟踪和触发组合 尽管触发和跟踪功能非常强大,但它们也有缺点。例如,如果用触发器检测到一个破坏存储器的写操作,但导致错误写操作的事件序列不可见,怎么办?写操作为什么不明显?
不采用滤波器的跟踪也有缺点。这里的主要问题是信息容量会大大超过芯片上的临时缓冲器,或者超过人们试图解释的数据量。触发器和跟踪的组合使得在特定条件下观察程序流和相关的存储器基准成为可能,这样就把输出的数据量降低到一个可以控制的水平。
发生故障的触发器会停止跟踪记录。触发器也会利用多级状态机检测一个涉及硬件和软件不正常动作的复合事件序列。在以后的设计周期里,当产生复合或者断续的问题序列时,这种灵活性被证明是非常有用的。调试触发器的协同定位和临界的总线/信号决定了实时信息是否重要,这种能力可以让一个开发工程师在几小时而不是几个月内查出代码问题的根源。
数据I/O 正如前面所讲,这里有两种形式的数据I/O:通过扫描接口(JTAG)传输的由DMA驱动的数据,以及DMA驱动的双向串口高速数据。在两种情况下,芯片供应商都提供了一种或者两种功能的标准费用并同CPU内核一起封装。
管脚管理 尽管跟踪、触发和某些形式的数据I/O都需要对管脚进行操作,但并不是同时需要所有功能。管脚管理器被用来把可用的管脚分配给最需要的功能,而跟踪总是特别需要管脚的。
用来输出跟踪的管脚非常重要。每个用来跟踪的管脚必须工作在最高的带宽上。即使用选择触发和数据压缩,跟踪也需要花费数据I/O 4到20倍的管脚数目,而数据I/O只需要一个管脚。你可以把CPU频率当作是管脚需要的倍数因为调试信息和CPU频率的增加成正比。同样,调试体系结构的质量影响管脚数目。不太有效的编码和压缩方案当然会使用更多的的管脚,而且所有的跟踪协议并不会平等地被创建。
管脚很宝贵,所以用门来改进编码和压缩,这样就能减少对管脚的需求。领先技术采用单端I/O,以最高的速度输出跟踪数据,这样所需的管脚数目直接和编码和压缩的信息量成正比。它们同样允许增加很少数目的跟踪管脚,允许调试端口管脚被可编程为跟踪、数据输出或者其它功能的管脚(例如,输入或者输出触发器)。
作者:Gary Swoboda,email: g-swoboda@ti.com,德州仪器




