QNX6.5如何修改时钟频率

中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。

QNX6.5如何修改时钟频率

帖子xinjinlong » 周六 1月 07, 2012 10:28 pm

那位高手知道如何时钟频率,我在6.5下测试了发现QNX的精度大概在2ms-3ms之间,有没有办法改变,提高他的时钟分辨率,VxWorks是在制作BSP中就可以自定义,不知道QNX可以不,高手给指点一下?
xinjinlong
New Member
 
帖子: 5
注册: 周五 5月 06, 2011 10:19 pm

Re: QNX6.5如何修改时钟频率

帖子xtang » 周日 1月 08, 2012 11:14 pm

系统的标准时钟是1ms

有ClockPeriod()函数可以修改这个。但提高系统时钟频率会增加系统开销,提得太高的话,会导致用户程序得不到CPU时间。所以 ClockPeriod()我记得有个上限,最快你也只能提到 10us(好像)。

如果你确实需要us级的准确时钟的话,正确的做法是在系统里另找一个高频中断源,用它来做你程序自己的时钟源。
xtang
Moderator
 
帖子: 1815
注册: 周五 9月 12, 2003 4:14 am
地址: China

Re: QNX6.5如何修改时钟频率

帖子xinjinlong » 周一 1月 09, 2012 11:41 am

谢谢给予提示,我测试发现,最高到10 us,但是发现,不是很稳定,有时候是+/- 10us, 当设置为100us时候,有时候到+/-200us,不过大多还在100us!
xinjinlong
New Member
 
帖子: 5
注册: 周五 5月 06, 2011 10:19 pm

Re: QNX6.5如何修改时钟频率

帖子xtang » 周二 1月 10, 2012 1:02 pm

xinjinlong 写道:谢谢给予提示,我测试发现,最高到10 us,但是发现,不是很稳定,有时候是+/- 10us, 当设置为100us时候,有时候到+/-200us,不过大多还在100us!


你是怎样测试的?要确定稳定不稳定,你需要挂时钟中断来观察。

如果你只是在程序里设timer,那确实会出现你说的情况。这个,是有意为之,具体你可以看看下面两篇文章。

http://www.qnx.com/developers/articles/ ... 834_1.html
http://www.qnx.com/developers/articles/ ... 826_2.html
xtang
Moderator
 
帖子: 1815
注册: 周五 9月 12, 2003 4:14 am
地址: China

Re: QNX6.5如何修改时钟频率

帖子xinjinlong » 周二 1月 10, 2012 2:06 pm

Thank you!
我的测试很简单,首先设置时钟分辨率,然后就是在usleep(x)前后分别调用ClockCycles()获取usleep消耗的时钟节拍数,通过时钟节拍数来计算usleep(x)真正消耗的时间,理论上计算的值应该是在(x)+/-分辨率的;
也许是我target是在虚拟机,没有在真机,但是现在主频get到的是2.7G,应该不存在;
我会认真阅读你提供的文档,谢谢!
xinjinlong
New Member
 
帖子: 5
注册: 周五 5月 06, 2011 10:19 pm

Re: QNX6.5如何修改时钟频率

帖子xtang » 周二 1月 10, 2012 11:02 pm

xinjinlong 写道:Thank you!
我的测试很简单,首先设置时钟分辨率,然后就是在usleep(x)前后分别调用ClockCycles()获取usleep消耗的时钟节拍数,通过时钟节拍数来计算usleep(x)真正消耗的时间,理论上计算的值应该是在(x)+/-分辨率的;
也许是我target是在虚拟机,没有在真机,但是现在主频get到的是2.7G,应该不存在;
我会认真阅读你提供的文档,谢谢!


对,你用usleep/sleep()来检查的话,就会有一个tick的差别,这个是实时系统的标准,应该跟虚拟机没关系。

具体原因可以看那两篇文章。Brain Stecher是QNX内核大牛,在那篇文章里对时钟有清楚的介绍。
xtang
Moderator
 
帖子: 1815
注册: 周五 9月 12, 2003 4:14 am
地址: China


回到 四海同心QNX论坛

在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客

cron