TI中文支持网
TI专业的中文技术问题搜集分享网站

TMX320C6678LE上clock函数

—————————————————————————————————

以下是clock的代码

#include <stdio.h>
#include <time.h>

void main(void)
{
    int i;
    clock_t start, end, sum = 0;
    printf("Clock test start!\n");
    start = clock();
    for(i=0;i<100000000;i++)
    {
        ;
    }
    end = clock();
    sum += end – start;
    printf("Total time :  %.9f  secs .\n",(float)sum/CLOCKS_PER_SEC);
}

—————————————————————————————————

运行结果

[C66xx_0] Clock test start!
[C66xx_0] Total time :  4.500000477  secs .

用秒表计时,约为9秒左右。

—————————————————————————————————

time.h里的定义 :

#define CLOCKS_PER_SEC 200000000 /* 200 MHz */

—————————————————————————————————

问题:

1、请问clock()是通过什么机制来计时的?

2、我上面的程序是否正确,为什么运行结果与实际相差4秒左右呢?

Yu Liu7:

楼主的代码没有问题。记得是通过主机端进行计时的不是很准确。建议使用TSCL。参见下面的帖子。

www.deyisupport.com/…/1184.aspx

另外这里可以找到更多的信息,上面的帖子在FAQ中就有。

www.deyisupport.com/…/955.aspx

bb qiuhua:

回复 Yu Liu7:

Yu Liu你好

我测试了一下clock和TSCL计时的cycle基本是一样的,我猜测clock是通过读取TSCL来计时的,不知道是否是这样?

另外,一个困惑的地方是,time.h里的定义 :

#define CLOCKS_PER_SEC 200000000 /* 200 MHz */

为何是200MHz呢,如果这里是100MHz的话,得到的结果还是比较准确的。

Andy Yin1:

回复 bb qiuhua:

您好,

请问你的#define CLOCKS_PER_SEC 200000000 /* 200 MHz */是怎么定义的?应该根据你的实际CPU 工作频率来计算当前的实际周期,需要首先清楚测试所配置的PLL。

bb qiuhua:

回复 Andy Yin1:

Andy Yin

        您好,我的CPU的6678评估板的工作频率是100MHz,与GET文件里定义是一样的,所以我觉得这里是不是应该#define CLOCKS_PER_SEC 100000000 /*100MHz*/呢?

这个time.h是D:\Program Files\Texas Instruments\ccsv5\tools\compiler\c6000\include下的,没有做任何改动。

所以想问下clock()的机制是什么,如果是通过读TSCL寄存器来计时的话,那么200MHz就是不正确的(对我的实际情况来说)。

赞(0)
未经允许不得转载:TI中文支持网 » TMX320C6678LE上clock函数
分享到: 更多 (0)