字体大小 [ ]    

  • 硬件辅助的实时嵌入式软件逻辑分析系统CRESTS/H-TEST

         在对软件有了静态分析的基础上,作为专为嵌入式系统软件分析测试而设计的工具模件广泛应用于嵌入式软件在线动态测试中,CRESTS/ H-TEST。H-TEST采用硬件辅助软件的系统构架和先进的插装技术,用适配器或探针,直接连接到被测试系统,从目标板总线获取信号,为跟踪嵌入式应用程序,分析软件性能、内存泄漏及测试软件的覆盖率等提供了一个实时在线的高效率解决方案。H-TEST对源代码进行插桩,这种插桩对系统影响很小,做到最大的系统无关性。它的这种方式十分适合嵌入式系统的。 软件实时在线测试工具H-TEST主要完成下述功能项目:
         程序静态分析与检查功能
         程序分析与检查功能支持代码编程规则检查,并对影响程序结构化的代码进行警告
         提供程序控制流图、程序控制流轮廓图、程序调用树、程序被调用树和程序危害性递归等
         给出度量程序质量的多种度量元(如McCabe的圈复杂度,程序跳转数,程序扇入/扇出数、程序注释率、程序调用深度,程序长度,程序体积,程序调用及被调用描述等)
         性能分析
         对于嵌入式的实时系统来说,性能指标的至关重要的,优化性能是指在系统资源(如内存容量,CPU时钟频率)不变的情况下,采取相应的措施,(如优化关键算法,优化调用接口,修正任务的优先权)来提高系统的响应速度,执行效率等性能。
         性能分析是为优化性能提供科学的依据,它主要是对模块调用关系和分支调用频度进行跟踪检测,实时的显示他们的执行时间,调用的次数等信息,以使我们较容易的发现系统的瓶颈。
         H-TEST可以完全精确的同时监视整个应用程序,探测程序执行的瓶颈所在, 支持总线频率高达133MHz。因此它可以监控大型程序中每一个子程序的执行。
         H-TEST可以精确计算出每个模块的执行时间,并能够列出其最大、最小和平均的以及累计执行时间。H-TEST的性能分析能够为嵌入式应用程序的优化提供依据,通过优化关键函数的运算法则,调整优化调用接口,使软件工程师可以有针对性地优化某些关键性地函数或模块,以及改善整个软件地总体性能。
         优点:
         可同时测量的模块数量不受限制,生产率提高,再也不用凭猜测进行局部测量,不用多次进行复杂枯燥的设置和测量。
         全程跟踪方式,收集全部数据,精确度提高
         高频定时时钟,时间误差不大于50ns
         测试覆盖分析
         代码覆盖率表明了被测软件在测试执行时那些代码被执行过了,那些没有执行过。在软件测试过程中有效地监控代码覆盖率是提高软件测 试有效性的一项重要途径。通过对被测软件在测试执行时代码覆盖情况,可了解当前测试完成的程度,判断我们的测试进行到了什么程度,有没有完成,需不需要改进,快速识别遗漏的测试数据,为测试人员科学的控制测试的进程,增加测试用例提供依据。
         H-TEST根据被测软件的目标码计算覆盖率指标,包括有:
         语句覆盖
         分支/判定覆盖
         MC/DC
         H-TEST提供程序总体概况,函数级代码以及源级覆盖趋势等多种模式来观测软件地覆盖情况。由于它是一种完全地交互式工具,测试者可以在对系统进行操作地同时跟踪覆盖情况。
         H-TEST覆盖率信息包括程序实际执行的所有内容,而不是采样的结果,它以不同颜色区分运行和未运行的代码,可以长时间连续跟踪,跟踪深度没有限制,特别适用于测试大型嵌入式软件。
         追踪功能
         H-TEST提供代码追踪和变量/地址追踪功能。
         H-TEST对程序实际运行过程进行纪录,以了解程序运行的实际情况。该工具可以从两个不同的抽象层次:1)高级,函数执行的入口和出口。2)原码级,显示每条执行过的语句。提供在跟踪记录中单步的模拟程序的运行,显示函数的调用链。最大跟踪深度没有限制(仅受硬盘的容量限制);
         H-TEST还可以对程序中的变量/地址的变化情况进行追踪。追踪过程中记录的内容包括:变量/地址发生变化的时间,发生变化时正在执行的代码。
         利用上述追踪功能,可以大大的提高软件开发人员的工作效率。
         动态内存分配分析
         H-TEST能够实时监视目标代码的动态内存分配信息,显示每个函数、每个内存分配点的内存分配和释放情况,同时监视动态内存分配的错误。分析统计动态内存的使用情况,分配、释放信息,分配的最大值,当前值。可以快速准确确定内存泄漏问题,确定哪个函数,哪一行代码引起的。对改善优化内存分配策略,提供强有力的决策依据。?
         H-TEST为追踪嵌入式应用程序,分析软件性能,测试软件的覆盖率以及存储体的动态分配等提供了一个实时在线的高效率解决方案。

    H-TEST系统连接实物图


    图 1 H-TEST系统连接实物图


    图 2 H-TEST组成实物图

         H-TEST包括两部分,数据处理单元和数据采集单元
         1)数据处理单元
         数据处理单元负责处理数据采集单元从目标板上采集后的数据,并把处理后的数据发送到宿主机。
         2)数据采集单元
         数据采集单元负责从目标机采集数据,采集后的数据送给数据处理单元。数据采集单元连接的接线盒负责与目标板总线的连接。
         总线分为标准和飞线两种方式,下图为标准20pin管脚方式和不标准飞线方式,如下图:
        


    图3 标准总线和飞线接线图

         H-TEST的最大优点就是通过总线直接抓取数据,实时高效地显示当前程序运行情况;只要简单的把目标板的总线(地址总线、数据总线、控制总线)引出,即可测试,简单方便。