基于VxWorks操作系统下的延时方法比较.docVIP

基于VxWorks操作系统下的延时方法比较.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VxWorks操作系统下的延时方法比较

基于VxWorks操作系统下的延时方法比较   【摘 要】比较了基于VxWorks操作系统的多种延时方法,编写了基于系统时钟定时器的延时方法的中断服务程序。该方法精确,可靠。已在工程实践中,证实了该方法的有效性以及精确性。 中国论文网 /8/view-7250196.htm   【关键词】VxWorks操作系统;延时方法;中断服务程序   0 引言   VxWorks操作系统是运行在目标机上的高性能、可裁剪的嵌入式实时多任务操作系统,其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天、航海等高精尖技术及实时性要求极高的领域中。   在实际的工程应用中,周期任务,需要有最大的延迟或称为等待时间。这类任务一般会为BIT检测任务,链路检测任务,点迹查询任务等。这段等待时间,在VxWorks操作系统中,可以通过多种延时方法实现。   1 taskDelay法   1.1 原理   taskDelay()是最简单的延时方法。延时操作提供了一个简单的任务休眠机制。当一个任务调用taskDelay()后,它将主动放弃CPU一段时间,进入Delay状态。超时后,这个任务会排到Ready队列中同优先级队列的队尾等待执行。它的单位是tick,tick是VxWorks下的时钟中断频率,可以通过sysClkRateSet()设置,一般在60-100之间。在体系架构、CPU频率等硬件条件允许的范围内,这个值可以随意设置。不过,设置的时候要根据实际需要,而不是每个时间片的间隔越短越好。时间片的数量影响着内核每秒钟调度的次数,而每次内核调度都需要消耗一定的CPU资源。如果每秒产生的时间片数量过大,内核调度所消耗的CPU资源就会过多,从而影响整机效率。在实际工程中,一般选取每秒tick数为100。可以通过调用taskDelay(0),将CPU交给同等优先级的任务。由于其延时的基本单位为tick,因此,最小延时单位为10ms,延时精度不高。   一般来说,当该任务通过taskDelay()进入睡眠状态时,若这段时间内被高优先级的任务占有资源时,则一直得等高优先级的任务放弃资源时,这个任务才会获得资源。   因此,taskDelay()延时很方便,却需要有一定的风险。实际的延时时间为预设延时时间与排队等候时间之和,这样将会导致延时不准确,也对任务的调度安排提出了一个挑战。这样看来,时间片延时并不是很准确,其准确程度需要根据任务调度的状况来决定。如果没有任务占用CPU,等待的误差不超过一个时间片的时间长短;如果有高优先级或同优先级的任务不释放CPU资源,那么等待将直到任务获取CPU资源才能结束。   1.2 具体实现   STATUS taskDelay(int ticks)   2 看门狗法   2.1 原理   实时系统任务的执行一般都有时限的约束。VxWorks提供了一种看门狗定时器机制,允许用户编写的函数与一个特定的时延相联系。这个时延,也是以tick来计量的。任何一个任务都可以创建Watchdog Timer并指定定时器超时后执行的例程。这个例程是在系统时钟ISR的上下文中执行,因此它具有与中断一样的优先级。Watchdog Timer并非一个周期性的定时器,在超时停止或是中途放弃计时之后,将一直处于静止状态。这一点与系统时钟不同。   看门狗定时器超时之后,指定的函数在中断级执行。可以模仿VxWorks中对异常处理的方法,采用分步处理的方法:在Watchdog Timer的ISR中所作的知识发送signal,或是释放信号量等一些简单的操作,而创建专用的task等待接收这类信号,依据信号的指示再去执行相应的复杂处理。这样既不会影响系统的实时性,也可以满足用户多样的需求。   这种计时方法可以提供比较精确的计时,其原因在于定时时间一到,所安排的任务会以中断级别或更高任务优先级执行。作为代价,看门狗定时器比taskDelay()消耗了更多的系统资源,包括存储空间和处理器时间。事实上,整个处理的过程可能还会增加中断处理时间。   2.2 具体实现   需要创建看门狗,并启动。所需函数如下:   int wdCreate()   STATUS wdStart(WDOG_ID wdId, int delay, FUNCPTR pRoutine, int parameter)   3 系统时钟定时器法   3.1 原理   定时器机制的实现是建立在时钟基础上的。VxWorks为支持精确实时控制,利用不同的硬件定时器提供了系统时钟和系统辅助时钟。由于这两个时钟都以周期时钟形式运行,因此相关的硬件定时器的运行方式也是周期形式。每经过一个固定的时间间隔,硬件定时器的ISR将通知VxWorks内核。系统时钟的周期称

文档评论(0)

cby201601 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档