对于执行时间的统计分为:硬件测量和软件测量。硬件测量一般就是用示波器等工具进行测试,针对的是较长时间的测量;软件测量则能够对较短的事件进行统计,一般是利用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 %dn”,afterl-beforel);
//printf(“time is %dn”,after-before);
如果是代码执行时间较长,则应该执行注释部分的代码,防止溢出造成测量时间不准。
如果你想测量时间更加准确,还可以将赋值语句执行所需时间减去。
代码的调试,CCS的debug模式下有单步执行的相应按键,熟悉即可,其他的就是在console栏中打印相关的信息。
0