微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +代码执行时间测量及代码调试

+代码执行时间测量及代码调试

时间:10-02 整理:3721RD 点击:

   对于执行时间的统计分为:硬件测量和软件测量。硬件测量一般就是用示波器等工具进行测试,针对的是较长时间的测量;软件测量则能够对较短的事件进行统计,一般是利用CPU内部的周期进行测量。一般而言,我们对代码执行时间的统计采用软件测量的方式。

    在ccs中我们有许多方式进行代码执行时间的测量。以下介绍两种方式进行代码执行时间的测量。第一种是通过设置断点的方式进行测量。使程序进入debug模式,在要测量的代码段的起始位置和终点位置分别设置断点。通过run-clock-enable,打开测量时钟,这是ccs状态就会出现一个时钟的标记,双击清零,执行代码,就能够得到代码执行的事件。这里的数字表示的是代码执行所用的时钟周期 。第二种方法就是通过寄存器的使用来测量代码执行时间,并将代码执行的时间打印出来。这里可以用的register有三组,分别是在core register中的TSCL,TSCH,这一组计数器是只读计数器,一旦启动便会开始计时,而且他与内部CPU同频。第二组和第三组分别是PL0的EMUCNT0,EMUCNT1,PL1的EMUCNT0,EMUCNT1.

  不过我们最常用的还是第一组寄存器。下面用第一组寄存器进行代码执行时间的测量:

添加头文件:#include (宏定义寄存器)#include (打印输出信息)

测量代码:

Unsigned  int beforel,beforeh;

Unsigned int afterl,afterh;

//unsigned Long long before;

//unsigned Long long after;

TSCL=0;

TSCH=0;

Beforel=TSCL;

//beforeh=TSCH;

//before=_itoll(beforeh,beforel);

$$$$$$$$$$

$测量代码$

$$$$$$$$$$

Afterl=TSCL;

//Afterh=TSCH;

After=_itoll(afterh,afterl);

Printf(“time is %d\n”,afterl-beforel);

//printf(“time is %d\n”,after-before);

如果是代码执行时间较长,则应该执行注释部分的代码,防止溢出造成测量时间不准。

如果你想测量时间更加准确,还可以将赋值语句执行所需时间减去。

代码的调试,CCS的debug模式下有单步执行的相应按键,熟悉即可,其他的就是在console栏中打印相关的信息。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top