|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁體中文

VxWorks下的异步通用定时器设计

驻航天二院二十三所军事代表室苏玉强1概述VxWorks是WindRiver公司开发的高性能实时嵌入式操作系统内核。在应用软件开发过程中经常会用到定时器。VxWorks下要实现定时功能有2个途径:一,借助taskDelay函数实现;二,使用VxWorks提供的看门狗(watchdog)。使用taskDelay函数实现定时器的缺点在于它是基于任务的,任务优先级会导致定时不准。看门狗基于系统时钟中断,定时精度大大优于前者,但是对用户的回调函数有诸多限制(如不允许

驻航天二院二十三所军事代表室 苏玉强

1 概述

VxWorks是WindRiver公司开发的高性能实时嵌入式操作系统内核。在应用软件开发过程中经常会用到定时器。VxWorks下要实现定时功能有2个途径:一,借助taskDelay函数实现;二,使用VxWorks提供的看门狗(watchdog)。使用taskDelay函数实现定时器的缺点在于它是基于任务的,任务优先级会导致定时不准。看门狗基于系统时钟中断,定时精度大大优于前者,但是对用户的回调函数有诸多限制(如不允许使用semTake、printf等需要等待获取某种资源的函数,否则会引起死机)。另外,看门狗只触发一次回调函数,如果用户需要周期定时器就需要重新启动看门狗。

本文设计了基于看门狗机制的异步通用定时器,并根据实际需要设计了周期性定时和一次性定时两种定时器。异步是指定时器运行于任务中,对用户没有任何限制。异步通用定时器提供类似于Windows下定时器的操作接口,简单、方便。

2 VxWOrks下的看门狗

VxWorks提供看门狗机制,允许将希望若干时间延迟后执行的用户函数连接到看门狗,在定时时间到达后由看门狗自动执行。看门狗机制由操作系统维持在系统时钟中断,连接到看门狗的函数同样运行在系统时钟中断服务程序中。如果操作系统由于种种原因(如在系统时钟中断前的中断或者内核状态),将不能立即执行的函数存放在tExcTask任务的队列中,则队列中的函数将以tExcTask任务的优先级运行(通常为0)。操作系统对中断服务程序的各种限制同样适用于连接到看门狗的用户函数,如不能使用printf、semTake等。

对看门狗的操作函数有4个:创建看门狗函数,WDOGID wdCreate(void);启动看门狗函数,STATUS wdStart(WDOG_ID wdId,int delay,FUNCPTR pRoutine,intparameter);删除看门狗函数,STATUS wdDelete(WDOG_ID wdld);取消看门狗计时函数,STATUS wdCancel(WDOG_ID wdld)。

看门狗的简单使用如下:

首先创建看门狗,然后在启动看门狗时连接用户函数并设置延迟时间。上面程序中的interval即为延迟时间,单位为系统时钟的tick数。缺省情况下,系统时钟每秒的tick数为60。当interval为1时,即延迟1/60 s后执行usrFunc。系统时钟的tick数可以通过sysClkRateSet函数设置。

3异步通用定时器的设计

3.1设计思想

虽然看门狗提供的定时机制相对简单易用,但还有许多局限性:①定时时间的单位为tick数,而不是通常使用的s或者ms。②用户函数运行在系统时钟中断服务程序中,而不是运行在任务的上下文中。这给用户函数带来许多限制(比如用户函数中不能使用内存分配、获取信号量、printf打印输出等),在这些限制下某些功能可能就无法实现。③看门狗的触发是一次性的,而通常需要周期性的定时器。④相对于Windows下的定时器接口,看门狗接口不够简洁明了。

异步通用定时器的设计基于看门狗,并在此基础上做进一步的封装,提供类似于Windows的使用方式。系统时钟每秒的tick数可以通过sysClkRateSet函数设置,一般设置为1 000,即每个tick代表1 ms。这样就可以提供分辨率为ms级的定时器,对大多数应用而言可以满足使用要求。每个定时器对应一个看门狗,同时对应一个任务,使得用户函数运行在任务中,而不是在中断中,这样可以避免操作系统对中断处理函数的种种限制。具体的做法是:在生成定时器时,启动看门狗开始定时,同时创建一个任务等待一个计数信号量(该信号量初始为空,任务处于PEND状态);当定时时间到达时看门狗释放该信号,激活任务,在任务中调用用户函数。这样做的优点在于,提高了效率,减轻了负载,减少了中断中的运算(仅仅是释放信号量);尽管多创建了一个任务,但是在定时器没有触发时任务仍处于PEND状态,对资源占用很小。

3.2接口设计

提供类似于Windows的接口函数,定时器的唯一索引是id号,操作定时器均通过id完成。分为2种类型定时器:周期性定时器和一次性定时器。周期性定时器可以周期性地触发。一次性定时器则只触发一次,类似于倒计时定时器,触发后看门狗自动删除,相应的任务自动退出。在用户对定时器模块进行初始化后,用户可以在程序的任何地方调用定时器提供的接口。

3.3具体实现

3.3.1对看门狗的封装

基于程序设计上的考虑,将定时器的管理控制和看门狗的具体操作分开,对看门狗进行封装,CClkGenerator类封装了看门狗的所有操作,包括看门狗的创建、删除、取消和启动,保存定时器id、类型、定时周期等。值得注意的是:看门狗的回调函数并不是用户的回调函数,而是看门狗管理控制中提供的统一回调函数,回调函数中的参数为定时器的索引号。封装代码如下:

从类定义可以看出,用户并不能直接使用CClkGen-erator。也就是说,该类对用户而言是不可见的,屏蔽了对看门狗的直接操作,只有定时器管理控制模块才可以对其进行操作。

3.3.2定时器管理与控制

定时器管理与控制模块负责模块初始化、多个定时器相关参数的存储管理、定时器任务的安全退出,以及用户接口的实现。

定时器的主要数据结构:定时器控制结构和存储结构。



使用C++标准模板库中的map实现对定时器的存储。第1个参数为定时器的索引号,第2个参数为定时器控制结构。使用map可以方便地实现基于定时器索引号的存储管理和索引号的查找。使用map的定时器存储示意图如图1所示。

用户在调用SetTimer函数时,创建一个初始状态为空的计数信号量timerArrv,同时生成一个任务timerTask等待该信号量,此时任务状态为PEND;实例化一个CClk-Generatot对象,创建看门狗启动定时器。当定时器超时时,释放timerArrv信号量,解除阻塞在timerArrv上的任务,回调用户函数完成一个完整的定时过程。定时器的典型运行过程如图2所示。

图2中最底下的虚线指向启动看门狗后的中断处理流程。中间部分表示定时器任务运行过程,可见甩户回调函数是运行在任务空间中。“回调函数释放信号量”到定时器任务semTake"的虚线表示释放信号量使任务解锁。

4定时器的应用

定时器管理控制模块是用户的唯一接口,使用Singleton模式。只要调用CTimerCtrl::GetTimerCtrl()就可以完成对异步通用定时器的初始化,除对定时器进行相关操作之外,还包括通过sysClkRateSet函数设置系统时钟每秒的tick数为1 000。下面的例子包含2个定时器:一个是1 s周期性定时器;另一个是周期为5 s的一次性定时器。


结语

从应用实例中可以看出,异步通用定时器的使用方法和Windows下的定时器没有太大区别,接口简单清晰。异步通用定时器可以应用于定时精度为ms的绝大部分应用程序中,对于精度要求高于ms的定时使用硬件辅助时钟中断更为合适,但是要注意操作系统对中断处理函数的限制。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     玉容散·主治妇女面无光彩,[4月23日]
     玉容散·功效祛风止痒,化斑[4月23日]
     玉容散·功效祛风利湿,消斑[4月23日]
     玉容散·功效馨香,去垢腻,主[4月23日]
     玉容散·主治黧黑皯黯(又名黧[4月23日]
     玉容散·功效白面嫩肌,主治黧[4月23日]
     玉容散·主治面上诸(黑干)(黑[4月23日]
     玉容散·主治润颜色[4月23日]
     七子白粉_美白、祛斑、去痘、[4月23日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     手机恢复出厂设置具体操作方…[3月29日]
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     [书籍]幼学琼林全文
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     黄历干支年号公元皇帝对照年[4月17日]
     广西高考2024~2022年历史类([6月25日]
     花木[4月16日]
     鸟兽[4月16日]
     释道鬼神[4月16日]
     讼狱[4月16日]
     技艺[4月16日]
     制作[4月16日]
     科第[4月16日]
     文事[4月16日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj