欢迎来到天天文库
浏览记录
ID:27571645
大小:123.34 KB
页数:8页
时间:2018-12-03
《vxworks中timer机制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、[岁商要]Tiner是实时操作系统的一个重要组成部分。本文结合近阶段的学习和实验情况,对VxW)rks中的时间函数和定时器作了一些探讨。主要介绍了Tin®r的机制,相关的函数,并给出了一些具体的例子。一.TickTick是指每秒中定时器中断的次数。POSIX标准中,tick等于50,即每20ms定吋器中断一次。VxWorks中,tick的缺省设置为60。因为实时操作系统中,任务的调度和定吋器密切相关,tick设置是否合理对整个系统性能的影响是很明显的。如果tick太小,则系统实时响应能力较差;反之,如果tick太大,则会使得系统的绝大多数资源浪费在不断的任务管理和调度中。
2、Tick的次数在userconfig.c文件巾设置,其语句为sysClkRateSet(60)。用户可以更改这个文件,然后重新编译BSP库,也可以在应用程序屮更改。和tick相关的函数主要有:sysClkRateGet:得到甸:秒系统的tick数sysClkRateSet:设置系统的tick数二•看门狗时钟(WatchdogTimer)WatchdogTimer捉供了这样一种机制,它使一个C函数和一个时间延迟联系起来。当该时问延迟到达以后,系统会调用该C函数。WatchdogTimer采用了巾断服务进程(ISR)的机理,当C函数被激活时,它是作为ISR运行的。和Watch
3、dogTimer相关的函数如下:wdCreate:创建WatchdogTimerwdDelete:删除WatchdogTimerwdStart:A动一个WatchdogTimerwdCancel:取消一个正在记数的WatchdogTimerWatchdog使用过程如K:首先调用wdCreate创建一个WatchdogTimer,然后通过wdStart启动该Timer。当tick累计到设定的数字时,和它相联系的C函数被激活作为ISR运行。下面是一个例子,该例子在延迟3秒后输岀一川话:“Watchdogtimerjustexpired’’。例:include"VxWorks.
4、h"#includc"logLib.h"#include"wdLib.h"#include"taskLib.h"/*defines*/#dcfincSECONDS(3)WDOG—IDmyWatchDogld;myTask(void)I/*Createwatchdog*/if((myWatchDogld=wdCreate())==NULL)return(ERROR);/*SettimertogooffinSECONDS-printingamessagetostdout*/if(wdStart(myWatchDogld,sysClkRateGet()*SECONDS,logM
5、sg,’’Watchdogtimerjustexpiredn)==ERROR)taskDclay(200);return(ERROR);}三.POSIXTimerVxWorks提供了和POSIX1003.1b兼容的时问机制。和POSIXTimer相关的主要函数如下:clock_gettime:clock_settime:timer_create:timer—connect:timer—cancel:timer—delete:timer_settime:取得当前时间设置当前时间创建定时器将定吋器和某个C函数相连接取消某个定时器删除定时器设置Timer的屮断周期下面是PO
6、SIXTimer的例子。该例子屮,myTimer()jtl来初始化Timer,将myHandler()和tmIDTimer相关联。每隔1秒,myHandler()被调用一次。当myHandler()被调用10次KLt取消并删除定时器tmID。POSIXTimer中,定义了两个重要的结构,它们都在time.h文件屮定义。其定义如下:structtimespec{/*interval=tv_sec*IO**9+tv_nsec*/timettvsec;/*seconds*//*nanoseconds(0-1,000,000,000)*/longtv_nscc;);structi
7、timerspecstructtimespecit」nterval;/*timerperiod(reloadvalue)*/structtimespecit_valuc;/*timerexpiration*/例子见附录。!U.小结:VxWorks目前并没有向我们提供系统的文档及开发资料,所宥的资料只宥连机帮助。帮助中对各个系统函数也只作了一个简单的介绍,对函数中的输入、输出、返冋值以及函数中用到的各种结构、宏定义都没有说明。本文巾提供的例子及对函数的理解都是通过实验得出的,可能会有曲解或错误的地方,欢迎大家批评指正。为了测试系
此文档下载收益归作者所有