社区
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;
结果会出问题 吗?
...全文
218
9
打赏
收藏
关于vxworks时间的飘逸
工程发现一个难题,在设置了24分钟的timer后,却在24-35分钟之间不同时候触发。 发现代码有下面一段,请指教。 word32 delay. word32 newDelay. delay = ((unsigned long long)newDelay * sysClkRateGet() + 999) / 1000; 结果会出问题 吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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
编程指南
vxworks
操作系统指南.doc
VXWORKS
软件开发项目实例完全解析.pdf
VxWorks
网络程序员指南
vxworks
reference manual.pdf
VxWorks
Programmer’s Guide
VxWorks
在Zynq平台上的移植详细流程
详细介绍了
VxWorks
移植到Zynq平台,包括bootrom和内核(
vxWorks
、
vxworks
.sym),通过QSPI启动bootrom,文件系统(TFFS)挂载到EMMC中,以及调试EMMC驱动,以及应用程序的开发
Vxworks
BSP for vmware
vxworks
/win98混合启动光盘映像ISO_for_vmware文件,主要用于在vmWare上直接当光盘用,里面包含已直接从光盘启动bootrom、直接从光盘启动
vxworks
、启动win98的dos、从硬盘启动等功能。 如果你比较懒的话,不想怎么...
vxworks
6.6 & crack
workbench3.0,
vxworks
6.6, install
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
vxworks
源码
VxWorks
2,179
社区成员
2,916
社区内容
发帖
与我相关
我的任务
VxWorks
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
复制链接
扫一扫
分享
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章