LTE系统调试记录6:TMS320C66x程序运行时间测量方法
2017-04-18 21:48
393 查看
1.使用TSCL计时
在TMS320C66x core上有两个计数寄存器TSCH/TSCL,与CPU同频,共同表示一个64bit数,CPU运行一个cycle,该寄存器加1,因此可以用来准确的测量CPU在某个执行段中消耗的cycles,一般我们只会用到TSCL这个寄存器,而TSCH是高32位,除非测试整个工程,一般用不到它。
2.头文件
TSCL和TSCH是在c6x.h中定义的,CSL_tsc.h中定义了CSL_tscEnable()和CSL_tscRead()。所以这两个头文件肯定是要包含的。
如果报错,那就是没有包含库,需要在Properties的File Search Path中包含库,如 ti.csl.ae66e。这样应该能够解决问题。
如果有用到TSC_enable和TSC_read来计时,那么需要包含这两个函数的源文件:tsc_h.asm。
3.方法例子
如果2个寄存器都使用的话,使用下面例子:
4.注意
注意,要先设置TSCL=0,然后TSCL和TSCH才会计数。
在TMS320C66x core上有两个计数寄存器TSCH/TSCL,与CPU同频,共同表示一个64bit数,CPU运行一个cycle,该寄存器加1,因此可以用来准确的测量CPU在某个执行段中消耗的cycles,一般我们只会用到TSCL这个寄存器,而TSCH是高32位,除非测试整个工程,一般用不到它。
2.头文件
#include"csl_tsc.h" #include"c6x.h"
TSCL和TSCH是在c6x.h中定义的,CSL_tsc.h中定义了CSL_tscEnable()和CSL_tscRead()。所以这两个头文件肯定是要包含的。
如果报错,那就是没有包含库,需要在Properties的File Search Path中包含库,如 ti.csl.ae66e。这样应该能够解决问题。
如果有用到TSC_enable和TSC_read来计时,那么需要包含这两个函数的源文件:tsc_h.asm。
3.方法例子
CSL_tscEnable(); TSCL = 0; start_Channel_Estimation = TSCL;//shgao 4.18 channel_estimation();//信道估计模块 end_Channel_Estimation = TSCL - start_Channel_Estimation;//shgao 4.18
如果2个寄存器都使用的话,使用下面例子:
unsigned long long WH_time[2]; double WH_cost; TSCH = 0; TSCL = 0; WH_time[0]= _itoll(TSCH, TSCL); //待测试模块 WH_time[1] = _itoll(TSCH, TSCL); WH_cost = (double)(WH_time[1] - WH_time[0])/1000000.0;
4.注意
注意,要先设置TSCL=0,然后TSCL和TSCH才会计数。
相关文章推荐
- 用c++实现记录程序运行时间的类
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- 记录程序运行时间
- gdb调试运行程序带参数(调用动态链接库),debug过程记录
- [转]VC获取系统时间、程序运行时间
- 如何利用windosAPI计算程序运行时间 不使用VC的库,也就是说不跨系统,跨编译器
- VC/MFC中计算程序/系统运行时间
- gdb调试运行程序带参数(调用动态链接库),debug过程记录
- VC获取系统时间、程序运行时间
- 怎样得到程序的运行路径,以系统时间命名文件
- VC获取系统时间、程序运行时间
- VC获取系统时间、程序运行时间
- 调用系统时间与获得程序运行时间方法
- VC获取系统时间、程序运行时间
- c++中记录程序运行时间的函数
- 编程基本功——记录程序的运行时间
- LINUX下取系统时间(毫秒)和计算程序运行时间
- VC获取系统时间、程序运行时间
- 全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点