>
首页 » 市场趋势 » 嵌入式系统软件调试跟踪技术的发展趋势

嵌入式系统软件调试跟踪技术的发展趋势

作者:Lauterbach公司 Andrea Martin  时间:2005-08-13 09:48  来源:本站原创

引言

在过去的几十年里,嵌入式工程师在开发和调试中已经越来越依赖于跟踪缓存的帮助。但随着100MHz频率以上的高速RISC处理器的普及,片内CacheRAMFLASH存储器逐渐变得越来越普遍。越来越多的处理器总线活动将无法在外部管脚上观测。这样,传统的收集跟踪信息的方法就不再可行了。

在过去的几年里,通过微处理器生产厂商和开发工具厂商之间的密切合作,开发出了各种基于跟踪缓存调试方法的新技术。这些技术通常的做法是使仿真器通过特殊的跟踪端口只捕获与跟踪有关的信息,通常这个跟踪端口是处理器提供的一个标准窄位宽处理器接口(只需要少量的管脚数目)。这些与跟踪有关的信息只要包含让仿真器判定代码执行流程的信息就足够了。许多情况下,数据读写活动也包含在其中。掌握了这些可以判定代码执行流程的信息后,不需要收集处理器总线活动的全部信息,仿真器就可以再现处理器执行的复杂历史记录。这种跟踪方法,相对于在线仿真器,一般称之为在线调试器。

面对不断增长的处理器频率,先来看一下跟踪技术的一些最新发展。首先看一下在基于ARM内核的SoC设计里面的片内跟踪模块,也就是常说的ARM嵌入式跟踪宏单元(ARM ETM)ETM定义了一个物理跟踪端口用来传输程序执行流程的信息,下面是对ETM端口的各个组成信号的简要描述。

TRACECLK: 该信号用来同步收集跟踪信息的硬件(也就是在线调试器)ETM。所有的IPESTATTRACEPKT信号都在TRACECLK信号的边沿上被采样。在不同的ETM运行模式下,该信号可以是ARM内核工作频率的两倍、一半、或者同频。

PIPESTAT(0-2):这三个流水线状态信号表明对应每个TRACECLK时钟周期,处理器指令流水线内部事件的详细信息如指令已经执行、发生跳转等。

TRACEPKT: 程序执行流程通过TRACEPKT信号(ETM模式不同,可以是48,或者 16 )传递出处理器。对每个非直接跳转,压缩后的跳转目的地址被包含在跟踪报文中。“非直接跳转”是个很宽泛的说法,一般是指跳转的目的地址只能在程序运行的时候才能确定的情况,如通过寄存器加载PC寄存器,预测会发生的跳转指令和异常等。这些程序执行流程信息,和源代码一起,就能够让开发工具重建完整的程序执行流程。源代码既可以通过调试器加载,也可以通过处理器的JTAG接口从内存中读取。

不仅限于程序执行流程,ETM用户还可以有选择地在跟踪端口的输出中包括数据读写信息。在跟踪端口的输出中,可以只有地址信息(以压缩方式)或数据内容,也可以同时包括地址信息(以压缩方式)和数据读写的内容。使能对数据读写信息的跟踪后,这些信息将被插入到程序执行流程信息流中的恰当位置上。

TRACEPKT可以是4位、8位、或者16位的格式。跟踪端口越窄,通过跟踪端口传递跟踪信息就需要越多的TRACECLK时钟周期。一般4位的TRACEPKT用来重建完整的程序执行流程已经是足够了。但是,包含数据跟踪信息后可以很快的使这个窄位宽跟踪端口超过负荷。尤其是使能了数据跟踪功能后,连续出现32比特的数据访问就很容易出现这种情况。例如,对一组寄存器执行压栈和出栈操作的时候,为了避免在跟踪端口上出现这种过负荷的情况,可以在ETM和外部的开发工具之间增加一个FIFO缓存。当频繁发生跳转和数据读写指令的时候,这个中间缓存就显得尤为重要了。

跟踪端口的位宽和FIFO的大小都可以有很多种选择,如何正确组合这两个因素非常关键,这将有助于防止跟踪信息的丢失。对于ARM ETMLauterbach推荐的最低配置是8位的端口位宽和45字节的FIFO缓存大小。这个组合在绝大多数情况下可以防止跟踪信息的丢失。

上面提到的ETM跟踪方法的优点是记录信息的媒介在CPU内核以外,这就使得CPU外部的开发工具可以包含无限大小的跟踪缓存。如果在线调试器中可以提供512MB的跟踪缓存,对打开Cache并运行在100MHzARM926EJ-S理器来说,可以存储1.4秒的信息,大多数嵌入式开发者都认为这个已经足够满足需求了。

和大容量的跟踪缓存同等重要的是跟踪触发器和过滤器,这两项技术使得不通过搜索海量的跟踪数据就可以快速定位问题成为可能。但是, ETM跟踪信息的压缩限制了外接的调试工具使用触发和过滤功能。为了解决这个问题,ETM提供了几种简单的片内跟踪触发器和滤波器。

图1 适用于ARM11ETM 跟踪端口

代码跟踪技术的新动向

微处理器工作频率的持续增加给CPU厂商和开发工具厂商提出了很大的挑战。这迫使新的跟踪设计和方法也不断的出现和发展。下面是在当今的跟踪技术中采用的一些新的思路。

跟踪模块和处理器工作时钟分离

随着处理器工作频率的不断提高,跟踪端口将会无法随着处理器的频率而输出数据,外部开发工具也将会跟不上处理器频率来记录跟踪信息。因此,很有必要分离跟踪模块和处理器之间的时钟关联。这也就意味着ETM模块的工作频率要低于处理器。但随之而来的问题是:快速产生的程序和数据流要通过慢速的跟踪端口传输出去,这会在跟踪端口上产生潜在的瓶颈。因此,在解除跟踪模块和处理器工作频率之间的关联后,还要有一些措施来解决新产生的问题。常见的解决问题策略包括增强型跟踪信息压缩技术和跟踪端口的复用技术。

增强型跟踪信息压缩技术

在慢速跟踪端口上输出程序执行流和数据流的方法之一就是增强对跟踪信息的压缩程度。经过对最新的ETM进行研究,可以发现针对ARM11ETM有两项重要改进:

?通过ETM跟踪端口输出的流水线状态信息不再和处理器同步,而是作为一个报文头包含在每个跟踪报文里面,这样减少的指令跟踪信息量达1/7之多。

数据流报文一般是使跟踪端口上出现过载的重要原因。在新的ETM里面,数据的前导0将不再输出,对典型的跟踪信息来说,这可以有效地减少25%的数据报文量。

通过以上两项改进就输出了新格式的压缩信息。图1为增加了新的压缩单元后的ETM的结构。这种改进后的跟踪技术需要外部的开发工具可以识别压缩后的格式,目前Lauterbach公司的针对ARM11ICD 已经可以处理这种压缩格式。

跟踪端口的复用技术

另一种方法是在CPU的一半频率上使用两倍的跟踪端口位宽。这种方法也叫跟踪端口复用技术。由于每隔一个CPU时钟周期输出两个连续的跟踪报文,这样外部的开发工具就可以以CPU的一半频率收集跟踪信息。这种方法并不是特别理想,因为它要使用两倍于通常数目的跟踪端口引脚,而更多的引脚会导致芯片的封装成本居高不下。

内跟踪内存

当有些CPU上不可能引出一个对外的跟踪端口时,可以使用片内跟踪内存的方法。该方法也适用于处理器的工作频率太高而无法输出跟踪信息的情况,以及处理器的引脚数目受限而无法支持跟踪端口的情况。

在这些情况下,处理器会提供一块片内的RAM专门用来保存跟踪信息。片内的跟踪模块不再把跟踪信息输出到对外的跟踪端口上,而是用一种格式把跟踪信息写到这块专用的片内RAM里。而这些保存在片内RAM里面的跟踪信息可以通过JTAG接口读出。这种方案不仅解决了处理器由于高速的工作频率而带来的问题,也消除了对外的跟踪端口需要占用引脚的问题。ARM已经在很多处理器内核里面实现了这种方案,一般称之为嵌入式跟踪缓存(ETB),如图2所示。

这种在芯片内使用跟踪缓存的方案的缺点是需要额外的芯片面积。RAM越多,虽然可以记录的跟踪信息的就越多。但成本也会相应的大幅度提升,所以一般片内跟踪缓存也不会很大,通常可以存储1KB~4KB的跟踪报文。由于仅有如此有限的内存用于调试,工程师不得不采用更加科学系统的工作方法,并且也不再可能有机会对处理器运行状态下的行为进行全面的分析。

更理想的解决方案是把窄位宽的跟踪端口和片内的跟踪缓存结合使用。理想情况下,对外的跟踪端口上输出的数据跟踪信息虽然不完整,却可以用来判断问题的范围。然后可以用片内的跟踪缓存精确的定位。目前,ARM的处理器内核也提供了这种解决方案的实现。

调整跟踪数据的采样时间

当跟踪端口上的频率超过200MHz后,用传统的采样逻辑电路采样跟踪信息的时间窗口会越来越窄,取得正确的采样结果也越来越难。在工作状态下,任何开发工具和跟踪端口之间的任何微小的异常都有可能导致采样得到错误数据。因此,精确调整跟踪端口上的每个信号的采样时机就变得尤为重要了。

对跟踪信号进行精确采样时,采样判决电平和采样时间的选择对每个跟踪信号都有可能不同。要想精确的调整好开发工具上采样时间点和判决电压,还需要很多技术数据:

l 每个信号的终端电压

l 跟踪端口上的信号和时钟的理想参考电压

l 跟踪时钟的理想延时

l 跟踪端口上信号的理想延时。

开发人员很难手工做这种复杂的调整,只有通过不断改进的工具来自动完成这样的工作。

  

结语

不断增长的处理器频率将继续给实时跟踪分析带来一个又一个的巨大挑战。然而,嵌入式设计里实时跟踪分析的重要性也在推动新技术的持续发展,使得跟踪工具不断创新。Lauterbach一贯关注软件开发者的需求动向,并和ARM公司合作对ARM新产品上的片内跟踪技术和新的调试端口进行支持。■ 本文编译自ARM IQ

相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

东芝开发嵌入式SRAM低功耗技术智能手机

东芝  嵌入式  SRAM  2013-02-23

飞思卡尔基于ARM平台全系列MCU引领嵌入式应用新趋势

飞思卡尔  ARM  嵌入式  2013-01-29
在线研讨会
焦点