首页 > 嵌入式软件 > 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()用来判断定时器列表是否为空。

换一批

延伸阅读

[真心话] 三大运营商取消流量漫游费,本地流量将被国内流量替代

三大运营商取消流量漫游费,本地流量将被国内流量替代

7月1日,中国移动、中国联通和中国电信正式全面取消流量漫游费,原有套餐中的省内通用流量直接升级为国内流量,但并不包含港澳台地区。目前原来的本地流量已经转化为国内流量。对于本地流量转化为国内流量后价格是否......

关键字:电信 网络流量

[真心话] 充电时到底该先插手机还是先插电源?作为电工你应该知道...

充电时到底该先插手机还是先插电源?作为电工你应该知道...

手机不离身似乎已经成为当代人的日常状态,如此频繁地使用手机,会十分消耗手机的电量,不经意间,一天充电数次,而且一旦充电方式不正确的话不仅会损伤手机电池,甚至还存在安全隐患。关于手机充电,很多人都忽视了......

关键字:充电 手机 电源

[疯狂史] 电子工程师的八种级别

电子工程师的八种级别

当你60岁时呢?对于那些渴望成为工程师的工程师来说,最好的职业生涯出路是什么呢?开个玩笑,如果我告诉你,工程师可分为八种级别,你会怎么想呢?......

关键字:电子工程师

[真心话] 为什么说语文和英语是硬件工程师的天敌?

为什么说语文和英语是硬件工程师的天敌?

因为我文科学的不好,所以我才去学理工科的。语文课和英语课,是工程师的天敌。很多人以此为借口,找理由证明自己语言天赋太差,但反观学霸,文科成绩都也不错。古代科举制度下,对文学的极端重视,也反应了文字能力,是个人逻辑性和创造性的的重要展现。连自......

关键字:硬件工程师 语文 英语

[真心话] 工程师中大热的的“技术型复合人才”究竟是什么?

工程师中大热的的“技术型复合人才”究竟是什么?

经过半年的工作和学习,突然想到以前在哪里听说,技术型复合人才比较抢手。单从技术角度看,我认为在任何科技领域,除了能够出色完成自己手中的工作外,还能帮助两个、多个研发人员甚至整个团队解决从理论、方案到工程实现中所面临各种难题,这样的人才应该能......

关键字:工程师
条评论

我 要 评 论

网友评论

大家都爱看

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

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

    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