我将尝试测量在OMAP ZOOM 3430 MDK所配备的TMS32064x+ DSP上执行一段代码所需的时钟周期数。我查看了DSP芯片的“程序员指南”,发现该DSP支持 clock() 函数。
我的操作非常简单,只需执行以下操作:
然后将"start"、"stop"和"total"的值放入之前分配给ARM处理器的共享内存中。然后在ARM端简单地将其打印到屏幕上。 问题是,在我的第一次执行中,我总是得到相同的"total"值,然后在我的下一次运行中,我总是得到0!"start"和"stop"的值与"total"的值一起变化。 最奇怪的是它们似乎遵循一个比特模式!我把输出放在下面:
我的操作非常简单,只需执行以下操作:
start = clock();
for (i=0;i<100;i++){
/* do something here */
}
stop = clock();
total = stop - start;
然后将"start"、"stop"和"total"的值放入之前分配给ARM处理器的共享内存中。然后在ARM端简单地将其打印到屏幕上。 问题是,在我的第一次执行中,我总是得到相同的"total"值,然后在我的下一次运行中,我总是得到0!"start"和"stop"的值与"total"的值一起变化。 最奇怪的是它们似乎遵循一个比特模式!我把输出放在下面:
# ./sampleapp
Total = 63744
Start clock() value = 0x000000f9
Stop clock() value = 0x0000f9f9
# ./sampleapp
Total = 4177526784
Start clock() value = 0x00f9f9f9
Stop clock() value = 0xf9f9f9f9
# ./sampleapp
Total clock cyles = 0
Start clock() value = 0xf9f9f9f9
Stop clock() value = 0xf9f9f9f9
显然,clock()函数的功能不是很好,但我不确定这是因为我做错了什么还是因为我的硬件不支持这种类型的功能。有任何想法吗?