ucosii 如何确定定时器的时间_uCOS-II软件定时器的分析与测试

本文探讨了μC/OS-II操作系统中的软件定时器,分析了其定时精度和处理器占用,并测试了其性能。在μC/OS-II中,软件定时器通过高优先级的任务OSTmr_Task()处理,利用硬件计数器的时钟节拍触发。定时器按定时时间分组,降低处理时间,提供高效维护。
摘要由CSDN通过智能技术生成

μC/OS

-II

软件定时器的分析与测试

μC/OS

-II

操作系统是建立在微内核基础上的实时操作系统,

抢占式多任务、

微内核、

植性好等特点,使其在诸多领域都有较好的应用。

μC/OS

-II 2

83

及其以后的版本中,

一个较大的变化就是增加了对软件定时器的支持。

这使得

μC/OS

实时操作系统的功能更加完善,在其上的应用程序开发与移植也更加方便。

在实时操作系统中一个好的软件定时器实现要求有较高的精度、

较小的处理器开销,

且占用

较少的存储器资源。本文在对

μC/OS

-II

定时器算法分析的基础上,对定时精度和处理器占

用情况进行了分析与测试,其结果在实时系统的设计与应用中具有借鉴意义。

1

定时器实现架构

μC/OS

-II

操作系统内部,任务的延时功能及软件定时器功能,都需要底层有一个硬

件的计数器支持。硬件计数器以固定的频率递减,

计数到

0

时,触发时钟中断。这个特定的

周期性的中断称为

时钟节拍

每当有时钟节拍到来时,

系统在保存现场和中断嵌套计数加

1

后都会跳到时钟节拍函数

OSTimTick()

中,进行软件计数器加

1

和遍历任务控制块,以判

断任务延时是否到时。

μC/OS

-II

中并未在

OSTim

Tick()

中进行定时器到时判断与处理,而是创建了一个高于

应用程序中所有其他任务优先级的定时器管理任务

OSTmr_Task()

,在这个任务中进行定时

器的到时判断和处理。

时钟节拍函数通过信号量给这个高优先级任务发信号。

这种方法缩短

了中断服务程序的执行时间,

但也使得定时器到时处理函数的响应受到中断退出时恢复现场

和任务切换的影响。

软件定时器功能实现代码存放在

tmr

c

文件中,

移植时需只需在

os_cfg

h

文件中使能定时器和设定定时器的相关参数。

2 μC/OS

-II

的软件定时器算法分析

μC/OS

-II

中软件定时器的实现方法是,

将定时器按定时时间分组,

使得每次时钟节拍到

来时只对部分定时器进行比较操作,

缩短了每次处理的时间。

但这就需要动态地维护一个定

时器组。

定时器组的维护只是在每次定时器到时时才发生,

而且定时器从组中移除和再插入

操作不需要排序。这是一种比较高效的算法,减少了维护所需的操作时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值