有个问题请教下TI的专家:
想在板子上评估下程序运行速度,使用TSCL 统计运行时间,
函数执行完毕后,再读取TSC的值,之后打印出来运行时间,发现这个64位的时间计数值有一些问题:
1. 若在IPC中断服务函数内部 在某个处理函数开始前使能TSC,则最终的运行时间统计值是一个负数
2. 若在IPC中断服务函数外部,比如main函数内使能TSC, 则最终的运行时间统计值是一个10位数(1650350998)。
请问下这个会是什么原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
有个问题请教下TI的专家:
想在板子上评估下程序运行速度,使用TSCL 统计运行时间,
函数执行完毕后,再读取TSC的值,之后打印出来运行时间,发现这个64位的时间计数值有一些问题:
1. 若在IPC中断服务函数内部 在某个处理函数开始前使能TSC,则最终的运行时间统计值是一个负数
2. 若在IPC中断服务函数外部,比如main函数内使能TSC, 则最终的运行时间统计值是一个10位数(1650350998)。
请问下这个会是什么原因?
请问统计时间的函数是这样写的吗?
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));
}