有个问题请教下TI的专家:
想在板子上评估下程序运行速度,使用TSCL 统计运行时间,
函数执行完毕后,再读取TSC的值,之后打印出来运行时间,发现这个64位的时间计数值有一些问题:
1. 若在IPC中断服务函数内部 在某个处理函数开始前使能TSC,则最终的运行时间统计值是一个负数
2. 若在IPC中断服务函数外部,比如main函数内使能TSC, 则最终的运行时间统计值是一个10位数(1650350998)。
请问下这个会是什么原因?
Shine:
请问统计时间的函数是这样写的吗?void main() { unsigned long long t1, t2; … TSCL = 0; // Initiate CPU timer by writing any val to TSCL … t1 = _itoll( TSCH, TSCL ); // benchmark snapshot of free-running ctr my_code_to_benchmark(); t2 = _itoll( TSCH, TSCL ); // benchmark snapshot of free-running ctr printf("# cycles == %ld\n", (t2-t1)); }