社区
VxWorks
帖子详情
关于vxworks时间的飘逸
AbnerChai
2010-01-07 12:39:17
工程发现一个难题,在设置了24分钟的timer后,却在24-35分钟之间不同时候触发。
发现代码有下面一段,请指教。
word32 delay.
word32 newDelay.
delay = ((unsigned long long)newDelay * sysClkRateGet() + 999) / 1000;
结果会出问题 吗?
...全文
185
9
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
9 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
AbnerChai
2010-01-11
newDelay 是1080000,固定的值。
在Vxworks Shell上执行sysClkRateGet(),返回值一直是60。
注意,在shell 上执行: period 60,upTime(),发现并不是每隔60秒才执行,发现有时候会延时2-10秒才执行。
这个延时的长度看起来和VxWorks的负载有关系,如果VxWorks的负载越大,延时会越长,不知道根本原因是什么,请指教。
打赏
举报
回复
赞
AbnerChai
2010-01-11
再顶顶。看看有没有高手回答。
主要是想知道Vxworks系统的时钟为什么还有延时,主要受哪些因素影响?
调度?还是其他?为什么会受负载的增加而改变?
打赏
举报
回复
赞
Heaven_Redsky
2010-01-11
sysClkRateGet就是获取系统时钟的滴答值,我理解就是一个时钟中断的时间是1秒的sysClkRateGet分之一,通常来说,操作系统通过计时器来维护taskDelay的具体时间间隔。而实际上如果CPU的资源消耗比较多的话,计时器的维护就会为高优先级的任务让路,这也就导致了LZ说的晚上2-10秒执行的情况。
打赏
举报
回复
赞
Heaven_Redsky
2010-01-09
既然sysClkRateGet()返回值是固定值60,那这里为啥还用这个函数返回值?
LZ不妨直接用60代替sysClkRateGet(),试试看。
另外,newDelay的初值和处理方法没有贴出来,这个值的变化会否影响delay的结果?
24-35分钟不等,或许就是delay的值在临界区出现了不确定性造成的。
打赏
举报
回复
赞
AbnerChai
2010-01-09
[Quote=引用 3 楼 chngok 的回复:]
这句话本身是不会对时钟造成影响的,sysClkRateGet() 只是返回1s有多少个tick,对其它没有影响
[/Quote]
我的意思是这句话算出来的delay值会不会出问题?
因为delay是word32类型的啊。而中间临时变量是unsigned long long
delay = ((unsigned long long)newDelay * sysClkRateGet() + 999) / 1000;
后面的设置timer的语句是:
wdStart(timerId,delay,(FUNCPTR)timerHandler,(int)this)
用的是VXworks6.4
打赏
举报
回复
赞
AbnerChai
2010-01-09
sysClkRateGet() 返回60。
"怎么不说说你是使用什么样的timer,什么样的系统调用之类的。。。 "
用的是“wdStart()”启动的timer.
WDOG_ID timerId;
多谢大家,有其他原因吗
打赏
举报
回复
赞
chngok
2010-01-08
这句话本身是不会对时钟造成影响的,sysClkRateGet() 只是返回1s有多少个tick,对其它没有影响
打赏
举报
回复
赞
yanghehong
2010-01-07
[Quote=引用楼主 abnerchai 的回复:]
工程发现一个难题,在设置了24分钟的timer后,却在24-35分钟之间不同时候触发。
发现代码有下面一段,请指教。
word32 delay.
word32 newDelay.
delay = ((unsigned long long)newDelay * sysClkRateGet() + 999) / 1000;
结果会出问题 吗?
[/Quote]
怎么不说说你是使用什么样的timer,什么样的系统调用之类的。。。
-
千里孤行
打赏
举报
回复
赞
kyzf
2010-01-07
sysClkRateGet() 是否会受其他的影响?
打赏
举报
回复
赞
相关推荐
vxWorks
时间
戳精确毫秒计算
时间
源码及简介
vxWorks
时间
戳精确毫秒计算
时间
源码及简介 sysTimeStamp()也称“
时间
戳”。是通过系统时钟实现的。刚开始也觉得费解,系统时钟的定时周期就是tick,怎么实现高精度时钟呢?通过读BSP底层代码发现,sysTimeStamp...
VxWorks
6.8 BSP
VxWorks
6.0版本新增功能: 风河通用平台
VxWorks
版(GPP)是所有设备软件应用程序的首要基础平台。此通用平台基于全球应用最广泛的运行时操作系统--
VxWorks
而构建。最新版本(
VxWorks
6.1)中的各运行时组件可向后...
vxWorks
7.0.zip
vxworks
7.0相关的驱动层,应用层开发手册,以及对
vxworks
下面的一些接口的和编译器的解释,datasheets about
vxworks
7.0
VxWorks
获取系统
时间
ms毫秒级方法
感觉ms级的实现很难找,本文总结一下自己
关于
VxWorks
毫秒级获取系统
时间
得办法。 直接贴例子吧 代码实现为系统运行天数和运行的毫秒数。 需要包含的头问价为 .. / project / h / time.h UNS8 ...
vxworks
启动详解
VxWorks
是一种灵活的、可裁剪的嵌入式实时操作系统。用户可以根据需要创建自己的
VxWorks
映象,由它来引导目标系统,而后下载并运行应用程序。根据应用场合的不同,
VxWorks
映象可分为三类:可加载的
VxWorks
映象、基于...
发帖
VxWorks
微信扫一扫
点击复制链接
分享社区
下载分享明细
2127
社区成员
2893
社区内容
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
帖子事件
创建了帖子
2010-01-07 12:39
社区公告
暂无公告