基于VxWorks操作系统下的延时方法比较_第1页
基于VxWorks操作系统下的延时方法比较_第2页
基于VxWorks操作系统下的延时方法比较_第3页
基于VxWorks操作系统下的延时方法比较_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于VxWorks操作系统下的延时方法比拟基于Vxrks操作系统下的延时方法比拟引言Vxrks操作系统是运行在目的机上的高性能、可裁剪的嵌入式实时多任务操作系统,其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天、航海等高精尖技术及实时性要求极高的领域中。在实际的工程应用中,周期任务,需要有最大的延迟或称为等待时间。这类任务一般会为BIT检测任务,链路检测任务,点迹查询任务等。这段等待时间,在Vxrks操作系统中,可以通过多种延时方法实现。1taskDelay法1.1原理taskDelay是最简单的延时方法。延时操作提供了一个简单的任务休眠机制。当一个任务调用taskDelay后

2、,它将主动放弃PU一段时间,进入Delay状态。超时后,这个任务会排到Ready队列中同优先级队列的队尾等待执行。它的单位是tik,tik是Vxrks下的时钟中断频率,可以通过syslkRateSet设置,一般在60-100之间。在体系架构、PU频率等硬件条件允许的范围内,这个值可以随意设置。不过,设置的时候要根据实际需要,而不是每个时间片的间隔越短越好。时间片的数量影响着内核每秒钟调度的次数,而每次内核调度都需要消耗一定的PU资源。假如每秒产生的时间片数量过大,内核调度所消耗的PU资源就会过多,从而影响整机效率。在实际工程中,一般选取每秒tik数为100。可以通过调用taskDelay0,将

3、PU交给同等优先级的任务。由于本文由论文联盟.Ll.搜集整理其延时的根本单位为tik,因此,最小延时单位为10s,延时精度不高。一般来说,当该任务通过taskDelay进入睡眠状态时,假设这段时间内被高优先级的任务占有资源时,那么一直得等高优先级的任务放弃资源时,这个任务才会获得资源。因此,taskDelay延时很方便,却需要有一定的风险。实际的延时时间为预设延时时间与排队等候时间之和,这样将会导致延时不准确,也对任务的调度安排提出了一个挑战。这样看来,时间片延时并不是很准确,其准确程度需要根据任务调度的状况来决定。假如没有任务占用PU,等待的误差不超过一个时间片的时间长短;假如有高优先级或同

4、优先级的任务不释放PU资源,那么等待将直到任务获取PU资源才能完毕。1.2详细实现STATUStaskDelayinttiks2看门狗法2.1原理实时系统任务的执行一般都有时限的约束。Vxrks提供了一种看门狗定时器机制,允许用户编写的函数与一个特定的时延相联络。这个时延,也是以tik来计量的。任何一个任务都可以创立athdgTier并指定定时器超时后执行的例程。这个例程是在系统时钟ISR的上下文中执行,因此它具有与中断一样的优先级。athdgTier并非一个周期性的定时器,在超时停顿或是中途放弃计时之后,将一直处于静止状态。这一点与系统时钟不同。看门狗定时器超时之后,指定的函数在中断级执行。

5、可以模拟Vxrks中对异常处理的方法,采用分步处理的方法:在athdgTier的ISR中所作的知识发送signal,或是释放信号量等一些简单的操作,而创立专用的task等待接收这类信号,根据信号的指示再去执行相应的复杂处理。这样既不会影响系统的实时性,也可以满足用户多样的需求。这种计时方法可以提供比拟准确的计时,其原因在于定时时间一到,所安排的任务会以中断级别或更高任务优先级执行。作为代价,看门狗定时器比taskDelay消耗了更多的系统资源,包括存储空间和处理器时间。事实上,整个处理的过程可能还会增加中断处理时间。2.2详细实现需要创立看门狗,并启动。所需函数如下:intdreateSTAT

6、USdStartDG_IDdId,intdelay,FUNPTRpRutine,intparaeter3系统时钟定时器法3.1原理定时器机制的实现是建立在时钟根底上的。Vxrks为支持准确实时控制,利用不同的硬件定时器提供了系统时钟和系统辅助时钟。由于这两个时钟都以周期时钟形式运行,因此相关的硬件定时器的运行方式也是周期形式。每经过一个固定的时间间隔,硬件定时器的ISR将通知Vxrks内核。系统时钟的周期称为tik,定时的时长只能是tik的整数倍。由于系统时钟,处理系统级任务,因此时钟频率一般不能很高。但是可以设置系统辅助时钟的tik数,使其到达准确地定时。硬件中断处理是实时系统设计的最重要、

7、最关键的问题。由于中断通常对应着外部事件,系统通过中断与外部事件交互。为了获得尽可能快的中断响应事件,Vxrks的中断处理程序运行在特定的上下文中。因此,中断处理不会涉及任务任务上下文的交换。应用程序可以使用Vxrks未用的硬件中断。Vxrks提供函数intnnet,它允许指定的函数与任意中断相联络。intnnet函数原型是:STATUSintnnetVIDFUNPTR*vetr,VIDFUNPTRrutine,intparaeter只要在工程中定义了INLUDE_SYSLK_INT,系统就会自动完成对系统时钟的初始化,也就是在文件usrnfig.中的usrRt函数中实现。考虑到需要根据实际工

8、程中的需求,需要对不同的周期任务设定不同的定时器,因此选择自己对系统时钟进展初始化。本文中设置了10个定时器,分别为定时10s,20s,50s,100s,200s,500s,1s,2s,5s,10s。3.2详细实现bltiEinital初始化时,首先应该关中断;其次,调用syslknnet挂接时间中断效劳程序;然后再通过调用syslkRateSet来设置系统时钟每秒中断的次数;最后再通过调用syslkEnable使能对系统时钟中断的响应。中断效劳程序中,需要首先调用tikAnnune,来通知内核一个tik事件。本工程工程的中断效劳程序完成的操作包括:1获取并保存系统时钟ISR要调用的例程;2关联络统时钟ISR;3对中断次数计数;4更新定时器使能标志。需要说明的是,需要定义定时器的构造。假设定义多个定时器,那么定时器的构造中需包含编号,定时器的时间间隔数,定时器的时间毫秒数和定时标志。定时标志就是定时时刻到为true,否那么为false。假设定时时刻到,会通知另一个标志,并重新将定期器定时标志置为false。4小结本文结合工程理论,比拟了基于Vxrks操作系统下的多种延时方法。硬件方面,时钟芯片会在确定的时间内为系统产生一个中断。软件方面,中断响应的过程也就是计时的过程,不过系统不会为每一次中断都进展处理,而是经过一定计数之后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论