我用CLOCK()函数去测试FFT时间,但是测试的结果不对。
CLOCK() 是要使能吗? 那在我的代码里面我需要怎么做呢?
CLOCK()函数返回的是DSP运行的时钟周期数吗?
Allen35065:
需要在CCS debug界面下enable CLOCK
yang cao1:
回复 Allen35065:
Allen Yin,你好,我想请问CCS debug界面下enable CLOCK在哪里?我理解是bios里的是么?
Canyu Su:
回复 yang cao1:
yang cao1:
Clock 不是BIOS中的,没有关系。使用CCS 的CLOCK工具:在Debug界面下Run菜单下,Clock->Enable,这样在CCS下标栏左侧会出现一个“手表”的圆,双击它可以对数值清0,同时还可以设定Clock数值代表的意义:时钟周期等。根据我的经验,有时候clock数值具有欺骗性,还跟PC机CPU性能等有关,毕竟他是通过JTAG对DSP仿真通信,并不能保证计算时间的准确性。
因此我建议使用TSCL寄存器来精确计数,这里的单位是时钟周期。你可以在你需要计数的程序代码前初始化TSCL,结束后再记录一个TSCL值,通过相减就可得出运行时间。这样你就可以通过直接printf输出到console或者使用fprintf打印到文本文件中,直观方便。简例如下:
TSCL=0;//先初始化为零,避免数值过大计算费事。
unsigned int a=TSCL;
//你的测试代码
unsigned int b=TSCL;
unsigned int time= b-a;
printf("The running time=%f second.\n ",(float)time/(1000000000));
yang cao1:
回复 Canyu Su:
Canyu Su:
你好,谢谢您的回答,第一次有人回答我的问题这么详细,非常感谢。我问的clock跟楼主的不一样,可能是我没说清楚,不好意思,我问的是bios里的clock,类似于定时器timer的功能,每周期触发一次的,不过现在问题已解决。还是非常感谢您的回答。
jian zong1:
回复 Canyu Su:
你好,在没有仿真器的情况下,怎么测试某段代码运行多长时间?谢谢