积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式硬件 >> 相关文章
  相关分类: 相关文章 | ARM | 新产品 | 下载 | MIPS | X86 |
使用在线仿真器(ICE)进行程序优化
 
作者:张国跃   来源:本站原创    点击数:279   更新时间:2007-11-21
您可以添加到网摘 让更多人关注此文章:

    目前,在线仿真器(In Circuit Emulator,ICE)在嵌入式系统开发中被越来越多的工程师所采用。尤其是在国外嵌入式开发公司中,ICE是一种必备的调试工具,被大规模地应用,以提高开发调试阶段的效率。但在国内,由于调试习惯和开发成本的原因,仿真器更多是在产品开发初期的底层驱动程序调试阶段中被应用。当产品的性能比较稳定后,工程师往往会采用串口调试方法进行应用程序的调试。

与仿真器调试相比,串口调试的功能比较简单,人机交互功能也不够友好。遇到复杂的程序错误时,开发效率可能会大大降低。一个功能强大的ICE,往往能够提供丰富的调试手段,使调试工作事半功倍。ICE为嵌入式调试工作所带来的方便和高效,只有使用者才能够深刻地体会。

现在市面上的ICE种类很多,功能也有很大的不同。很多仿真器只能提供基本的调试功能,如设置断点、系统资源的观测等。有些高级功能,如嵌入式跟踪宏单元(Embedded Trace Macrocell,ETM)跟踪功能,只有一些高端仿真器才会提供,当然价格也比一般仿真器要高出不少。本文主要介绍使用ICE在程序优化方面的一些应用,其中要用到一些高级功能。

功能1:任意两条语句间的运行时间的测量

  当编好一段代码,想计算这段代码的运行时间,为代码优化提供依据,该如何准确测量这段时间?

  没有仿真器的话,有以下两种方法可以采用:

  1. 手动计时,从执行到这段代码时开始看手表计时,到这段代码运行结束时停止计时。这种方式误差很大,对于执行时间只有几个微秒甚至更短时间的代码段,这种方式显然不能满足要求。

  2. 在代码中加入计时函数。这种方式具有一定准确度,但是会增加代码的复杂度,计时结果需要打印输出。

  如果使用ICE仿真器,这个工作就变得很简单了。以横河公司的advicePRO为例,在其所使用的自带的调试软件microVIEW-PLUS(以下简称MVP)中,既不需要看手表也不需要修改代码,只要在代码两端设置断点就可以轻松获得这段代码的运行时间,而且精确度可达20ns的范围。如图1所示,在执行到第一个断点b1时,将窗口状态栏中的时间清零,再执行代码,程序停在第二个断点b2时,这段代码的执行时间就会精确地显示在状态栏中。

  

图1:设置断点,以进行两条语句间的运行时间的测量。
图1:设置断点,以进行两条语句间的运行时间的测量。

功能2:两条语句间的运行时间的多次测量和分析

  对于同一段代码,由于运行条件不同,运行时间也不尽相同,可能会有较大的变化。如何对某段代码的运行时间进行统计,真正达到性能分析的目的呢?

  在使用仿真器时,可以重复“优化功能1”中的测量功能,进行手动统计。但这样做的缺点是费时费力,也不能真正反映程序实时运行时的状态。

  带ETM跟踪功能的ICE仿真器可以提供一种简便的测量功能,可以连续对程序进行指定次数的时间测量,并自动进行时间统计。但不是所有带ETM跟踪功能的仿真器都有这样的功能,下面仍以横河公司的advicePRO为例介绍该功能的使用。具体测量步骤如下:

  1.在程序段设置的起始和结束事件点:事件(Event)是指程序执行过程中的能够被检测到的各种活动。例如,某个函数或者某个地址上语句的执行,某个地址上数据的读写,甚至监测到的外部触发信号都可以被定义成事件,作为跟踪功能和时间测量的起始或者终止条件。图2是通过设置窗口将某个源代码文件的第184行的取指(Fetch)状态作为事件e0。假设要测量LCD_test.c文件中for循环中的184行至191行的运行时间,根据图2中的方法在184行和191行设置两个事件e0和e1。(见图3)

图2:在设置窗口中设置源代码文件的起始点。
图2:在设置窗口中设置源代码文件的起始点。

图3:在程序文件中设置了起始点和结束点后的MVP窗口。
图3:在程序文件中设置了起始点和结束点后的MVP窗口。

  2.设定外部输出条件:将e0、e1设为外部输出条件,如图4所示。

图4:设置外部输出条件。
图4:设置外部输出条件。

  3.设定测量条件:在图5所示的窗口中,将e0、e1设定为时间测量的起点和终点,并进行测量模式的设定。可以进行超过指定时间和在指定时间之内的测量统计。

图5:设定时间测量的起点和终点,并进行测量模式的设定。
图5:设定时间测量的起点和终点,并进行测量模式的设定。

  4.运行程序:做好以上设定之后,可以运行程序,进行时间测量。

  5.测量结果显示:测量结束后,测量结果会以图表形式自动显示在报告窗口中,并且显示最长、最短、平均运行时间。(见图6)通过这个图表,用户可以清晰地了解这段代码的运行时间分布情况,为代码优化提供最直接的依据。

图6:通过以图表形式显示的测量结果,可以清晰地了解代码的运行时间分布。
图6:通过以图表形式显示的测量结果,可以清晰地了解代码的运行时间分布。

功能3:测量代码覆盖率

  代码覆盖率(Coverage Ratio)是指在一段代码中被执行到的语句占这段代码的比例。它是衡量代码质量的一个重要的指标,在代码测试工作中经常会被用到。在PC应用程序中测试代码覆盖率不是一件很难的事情,但是在嵌入式系统的实时环境中进行测量就比较困难。

  横河公司的advicePLUS仿真器就提供了这样的扩展功能,使嵌入式环境下测量代码覆盖率变成一件可以轻松完成的事情。设置方法很简单,只要在MVP的相应设置窗口中给出被测代码段的起始和终止地址,或者给出被测函数的名称即可。(见图7)

图7:在MVP中进行代码覆盖率分析。
图7:在MVP中进行代码覆盖率分析。

  程序运行结束后,代码覆盖率也会以图表的形式显示在结果窗口中。(见图8)从图表中可以很明显看出各个函数的代码执行情况。

如:函数Strcpy()的代码覆盖率为0,说明此函数没有被执行过,对于编程者来说就要考虑这个函数是否有存在的必要。对于覆盖率很低的函数,需要考虑是否需要将此函数并入其他函数之中。

图8:以图表形式显示的代码覆盖率。
图8:以图表形式显示的代码覆盖率。

  不只代码覆盖率可以测量,某一地址范围内的数据覆盖率也可以进行类似的测量。这一功能让使用者可以轻松掌握数据区的使用率信息。(见图9)

图9:测试指定地址范围内的数据覆盖率。
图9:测试指定地址范围内的数据覆盖率。

  在嵌入式开发中进行程序优化并不是一件很容易的事情,ICE仿真器提供的这些功能可以让程序优化变得简单,让程序员能更有效地配置系统资源。

  需要注意的是,这些功能并不是所有ICE仿真器都能提供的。选择功能强大的仿真器能够给开发者带来的不只是开发效率的提高,也能够帮助开发者提高代码质量,使企业产品能够更加稳定可靠地运行。



相关文章
· 用IAR EWARM开发嵌入式系统时目标代码的链接与定位[223]
· 基于NIOS II内核的嵌入式SOPC开发板的实现[206]
· 串口调试助手 V4.0[1120]
· Keil软件仿真的串口调试技巧[436]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
新兴半导体技术催生绿色节能的大学校园
电子系统创新促进汽车走向环保与节能
意法CEO携新品巡游中国 
未来3年新余需要8万光伏产业人才
看好中国未来发展:瑞萨提升在华芯片产
中国LED发展神速将成为未来照明产业
剖析联发科技2009年五大产品策略
突破四大障碍 蓝牙立体声耳
瑞萨向德国企业出售当地半导体前工序工
产业紧缩 PCB业或将提前
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[转]教你如何进行电磁兼容设计...
[转]汽车和专业音响原厂设计原...
诺基亚,三星手机原厂图纸和PC...
电子元器件可靠性和失效分析经典...
[建议]FPGA设计技巧与实例...
Xilinx FPGA设计快速...
基于CPLD的各种设计实例和分...
教你如何学会MSP430单片机...
凌阳单片机教程(共8章)非常详...
[建议]学习PIC系列单片机的...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网