社区
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;
结果会出问题 吗?
...全文
237
9
打赏
收藏
关于vxworks时间的飘逸
工程发现一个难题,在设置了24分钟的timer后,却在24-35分钟之间不同时候触发。 发现代码有下面一段,请指教。 word32 delay. word32 newDelay. delay = ((unsigned long long)newDelay * sysClkRateGet() + 999) / 1000; 结果会出问题 吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
操作系统所需的文件集合。
VxWorks
是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发,尤其在航天、通信、医疗等领域。虚拟机则允许用户在...
VxWorks
开发指南与Tornado实用手册
在《
VxWorks
开发指南与Tornado实用手册》中,你可以找到关于以下几个方面的详细知识: 1. **
VxWorks
系统架构**:
VxWorks
的核心包括微内核、任务管理、内存管理、中断处理、定时器和调度器等。了解这些基本组件的...
VxWorks
内核、设备驱动与BSP开发详解
1. 实时性:
VxWorks
具有微秒级别的响应速度,适合对
时间
要求严格的嵌入式应用。 2. 可靠性:经过严格测试,能够保证在极端环境下的稳定运行。 3. 安全性:提供多种安全特性,包括内存保护、权限控制等,满足工业和...
VxWorks
设备驱动开发详解
VxWorks
设备驱动开发是嵌入式系统领域中的一个重要组成部分,尤其对于那些需要与硬件紧密交互的项目来说,理解并掌握设备驱动的编写至关重要。
VxWorks
,由Wind River Systems开发,是一款实时操作系统(RTOS),广泛...
VxWorks
在Zynq平台上的移植详细流程
详细介绍了
VxWorks
移植到Zynq平台,包括bootrom和内核(
vxWorks
、
vxworks
.sym),通过QSPI启动bootrom,文件系统(TFFS)挂载到EMMC中,以及调试EMMC驱动,以及应用程序的开发
VxWorks
2,184
社区成员
2,914
社区内容
发帖
与我相关
我的任务
VxWorks
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
复制链接
扫一扫
分享
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章