关闭
关闭
首页 > 嵌入式软件 > vxworks

VxWorks是目前应用最多的嵌入式实时操作系统之一,广泛应用于工业控制、医疗器械、通信、航空航天以及武器装备等领域。VxWorks是32位实时嵌入式操作系统,自20世纪80年代由风河公司推出以来,其良好的实时性、对多任务的支持、体积精简、可剪裁等优点得到众多公司、开发者及用户的喜爱。

本文引用地址: http://embed.21ic.com/software/vxworks/201803/51068.html

在实时性要求高的应用系统中,定时器是经常被用到的重要器件。而对于VxWorks操作系统本身来说,并未提供一个通用、高效的定时器组件。文章所提出的共享看门狗定时机制就是针对这种情况实现的一种通用型定时器组件。

1 VxWorks定时的方法

1.1 使用taskDely函数

函数原型为:STATUS taskDelay(int TICks)该函数提供一种简单的任务休眠机制,常用于需要不精确定时或延时的应用中,其定时的单位为TIck,默认情况下60(TIcks)为1s (利用sysClkRateSet函数可以修改系统默认的时钟速率)。在任务中调用taskDelay函数可以在指定的TIcks期间空出CPU的使用权,同时改变该任务的状态为DELAY.由于经常受到任务调度的影响,该定时机制并不精确。

1.2 看门狗watchDog

VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护:

wdCreate( ) 创建并初始化一个看门狗定时器;wdDelete( ) 终止并删除一个看门狗定时器;wdStart( ) 启动看门狗定时器;wdCANcel( ) 暂停当前看门狗定时器运行。

利用wdCreate函数,在任何任务中都可以创建一个看门狗定时器,经过设置的时间段后,实现指定的C函数。

watchDog定时器作为系统时钟中断服务程序的一部分来维护。因此看门狗所定时执行的程序工作在系统中断级别具有很高的优先级,该程序必须遵守一般ISR程序的规定,不能使用任何可能被阻塞的程序。文章所介绍的高效定时器就是在看门狗定时器的基础上设计的。

1.3 POSIX标准的timer

VxWorks同时也提供IEEE的POSIX 1003.1b标准定时器接口。POSIX标准保证了应用程序与操作系统之间接口的简易性,利用这些接口编程,可以使得应用程序很轻松地从一个操作系统移植到另外的操作系统。使用该定时机制,在指定时间段后,任务将向自身发送SIGNAL,该定时器是建立在时钟和信号之上。POSIX标准的timer定时器常常用来编写跨平台、需要在多个操作系统下运行、易移植的程序。

2 基于看门狗定的高效定时机制

2.1 共享看门狗高效定时器

在一些基于嵌入式实时系统的项目中,经常使用定时器来实现某一时间段后执行某一段程序或函数,而往往计时长度都存在差异,定时器的使用也往往来自不同任务,既要求实时性,又要保证资源竟争的有序性。鉴于这些特点,经常采用的一个定时任务使用一个看门狗定时器的模式已不再适用,如果按照这种模式构建定时器机制,在定时任务较多的情况下,由于看门狗定时器运行在中断级别,资源消耗就会变得很大,从而对系统的实时性产生影响。

共享看门狗定时器的定时机制可以解决这种资源严重浪费的现象。共享看门狗定时机制,顾名思义,就是多个定时任务通过共享同一个看门狗定时器来实现定时操作,其优点是资源消耗小、实时性好、无须产生额外的定时任务。

2.2 定时算法

共享看门狗高效定时器的基本原理是动态改变看门狗的定时任务。

如图1所示,系统中存在A、B、C三个定时任务。首先A任务提交一个500ms的定时任务,200ms后B提交一个200ms的定时任务,再100ms后C提交一个150ms的定时任务。除此之外再无其他计时,A、B、C运行情况如图1所示。

 

1.jpg

图1 共享看门狗定时器计时机制

图1 共享看门狗定时器计时机制(参见下页)定时器A在时间轴50ms处向共享定时器发起定时申请,共享定时器在其维护的定时列表中加入A的时延与执行程序的函数指针,并计算出定时器下一执行时刻TA(系统运行时间加上A的定时时延),此时由于还没有其他定时器申请定时任务,该列表中只存在A的定时信息。当时间轴到达250ms时,定时器B发起定时申请,由于定时器A的时延为500ms,B的时延为200ms,也就是说B将在时间轴450ms处执行,比A提前了100ms(550ms减去450ms),此时定时列表将完成两件事情,一是修改下一执行时刻TB为系统运行时间加上B的时延,二是针对执行时刻TA、TB对列表进行从小到大的顺序排序。此时列表中B为表头,A在B之后。同样的道理当时间轴到达350ms时,定时器C发起定时申请,定时任务C被加入到定时列表,计算得出TC为系统运行时刻加上C的时延,然后依据TA、TB、TC重新进行排序,此时列表顺序为B、C、A.当时间轴执行到450ms时,定时器B的ISR将被执行,同时B定时任务将从定时列表中删除;同理,500ms、550ms时C任务与A任务将分别从列表中删除。

此时所有定时任务执行结束,定时列表为空,共享看门狗定时器进入休眠状态。

2.3 定时器实现

2.3.1 定时器软件结构

共享定时器软件结构如图2所示:

 

2.jpg

图2 共享看门狗定时器计时机制

CWatchDogTimer类完成了对看门狗定时器的封装,它由一些通用的函数来维护一个看门狗定时器。其中Create()函数用来创建一个看门狗定时器;Delete()用来删除该定时器;Start()用来启动定时任务;Cancel()用来暂停定时器工作,此时再使用Start()函数可以恢复定时器的运行。

TimerInfo数据结构由tExe与tInterval两个属性构成,tExe记录定时器的执行时间,tInterval表示定时器的时间间隔。

TimerList用来维护多个TimerInfo结构的变量,每个TimerInfo变量记录一个定时器参数信息。

CEfficientTimer类完成对多个定时任务的管理,包括RegistTimer()函数实现注册一个定时器;UnRegistTimer()用来注销一个定时器;ClearTimerList()用来清空定时器列表中所有定时器任务;IsEmpty()用来判断定时器列表是否为空。

换一批

延伸阅读

[新鲜事] Facebook 简述追踪使用者消费习惯的机制,但似乎不是三言两语这么简单吧!

Facebook 简述追踪使用者消费习惯的机制,但似乎不是三言两语这么简单吧!

最近 Facebook 在是否不当收集用户隐私资料等问题沸沸扬扬,根据相关报导指出,该公司与美国资料分析公司 Datalogix 合作统计用户在网路上点击广告与现实购物的相关性数据, 得出有七成厂商在 Facebook 花费一美元的......

关键字:Facebook 追踪 机制

[新鲜事] 马云要把阿里打造成全球第五大经济体 启动“NASA”计划 建立导弹机制

马云要把阿里打造成全球第五大经济体 启动“NASA”计划 建立导弹机制

上周四,阿里巴巴在杭州召开了首届技术大会,马云在大会上宣布,阿里巴巴正在启动一项代号“NASA”的计划,“面向未来20年组建强大的独立研发部门,建立新的机制体制,为服务20亿人的新经济体储备核心科技。”......

关键字:马云 阿里巴巴 导弹机制

[真心话] IT开发的岔路口:究竟是JAVA好还是嵌入式好?

IT开发的岔路口:究竟是JAVA好还是嵌入式好?

一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业......

关键字:嵌入式 JAVA

[猎聘集] 华为在日本招聘工程师,本科生月薪竟高达40万日元!

华为在日本招聘工程师,本科生月薪竟高达40万日元!

原来,华为准备在日本分部招聘6到10名工程师,本科生月薪40.1万日元(约合人民币2.4万元),硕士月薪43万日元(相当于人民币2.6万元)。包含奖金在内最低年薪可达560万日元(约合人民币33.6万元)。此外还提供完善的劳动保障、带薪休假......

关键字:华为 日本 本科生月薪

[真心话] 搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

鲍尔默于2014年初离开微软,因为依然是个人大股东,所以他衣食无忧,退休后“颓废”了短暂一段时间后,他拿下了NBA快船队,出任老板。......

关键字:微软 CEO 鲍尔默

[真心话] 嘿!哥们儿,你用什么编程语言?

嘿!哥们儿,你用什么编程语言?

你觉得最好的,并不一定适合所有人。同样的,语言也一样。在某种特定的问题之下,咱们得说解决什么问题。你解决驱动的问题,你只能是会汇编和 C 语言,你解决后台的问题用汇编肯定就不合适了。相当于拿一个小剃刀盖一栋大楼房。不合适。所以没有最好的语言......

关键字:编程语言
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14