新闻中心

EEPW首页>嵌入式系统>设计应用> 基于VxWorks操作系统的通用定时器设计

基于VxWorks操作系统的通用定时器设计

作者: 时间:2014-05-13 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/246739.htm

中断处理任务TimerSvrTask()主要用来处理已经到时的节点。该任务生成后等待同步信号量,如果获得该信号量,则从传递来的第一个节点开始遍历所有timeLeft为0的节点,然后执行节点对应的函数或者释放节点对应的信号量,最后再根据到时节点的timerType判断:若该定时节点为单次则把该节点设为不可用;若该定时节点为周期性的,则先将该节点从链表中取出,重新初始化剩余时间后再次插入链表中的恰当位置。

需要说明的是,基于辅助时钟的通用需要CPU的一个时钟资源,且辅助时钟的使用会和调试工具SpyChart冲突,使用时应特别注意。

3 数据访问的防冲突考虑

由于定时节点链表以及程序中用到的其它全局变量相对所有的任务都是共享数据,因此为保持数据使用的一致性,需要加以保护,以防止多个任务对共享数据的使用冲突。对于有辅助时钟中断服务程序参与的数据,例如链表,其他任务在对链表操作前需要先禁止中断,操作完毕后再允许中断,以防出现中断与任务的不一致问题;对于辅助时钟中断服务程序不参与的数据,各任务对它的访问采用互斥信号量方式即可。

4 结束语

当前,基于辅助时钟的通用已在某无人机发射装置中的强实时命令传递、通讯数据帧收发以及目标系统状态监控方面得到了应用,满足了毫秒级的单次和周期交叉定时要求,效果良好。该机制对所用接口进行了封装,使其具有了较好的继承性和扩展性,为今后此类系统中的精确定时需求提供了方便。


上一页 1 2 下一页

关键词:VxWorks定时器

评论


相关推荐

技术专区

关闭