- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uCOSII软件定时器的分析与测试
μ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 中软件定时器的实现方法是,将定时器按定时时间分组,使得每次时钟节拍到
来时只对部分定时器进行比较操作,缩短了每次处理的时间。但这就需要动态地维护一个定
时器组。定时器组的维护只是在每次定时器到时时才发生,而且定时器从组中移除和再插入
操作不需要排序。这是一种比较高效的算法,减少了维护所需的操作时间。
2 .1 定时器管理所需的数据结构
一旦定时器被建立,一个定时器控制块(OS_TMR)就被赋值了。定时器控制块是定时器
管理的基本单元,包含定时器的名称、定时时间、在链表中的位置、使用状态、使用方式,
以及到时回调函数及其参数等基本信息。
在μC/OS-II 软件定时器中实现了3 类链表的维护:
OSTmrTbl[OS_TMR_CFG_MAX] :以数组的形式静态分配定时器控制块所需的RAM 空
间,并存储所有已建立的定时器控制块。
OSTmrFreeLiSt :为空闲定时器控制块链表头指针。空闲态的定时器控制块(OS_TMR)
中,OSTmrnext 和OSTmrPrev 两个指针分别指向空闲控制块的前一个和后一个,组织了空
闲控制块双向链表。建立定时器时,从这个链表中搜索空闲定时器控制块。
OSTmrWheelTbl[OS_TMR_CFG_WHEEL_SIZE] :该数组的每个元素都是已开启定时器
的一个分组,元素中记录了指向该分组中第一个定时器控制块的指针,以及定时器控制块的
个数。运行态的定时器控制块(OS_TMR) 中,OSTmrnext 和OSTmrPrev 两个指针同样也组织
了所在分组中定时器控制块的双向链表。定时器管理所需的数据结构示意图如图1 所示。
2 .2 软件定时器实现原理
宏OS_TMR_CFG_WHEEL_SIZE 定义了OSTmr-WheelTbl[]数组的大小,同时这个值也
是定时器分组的依据。按照定时器到时值与OS_TMR_CFG_WHEEL_SIZE 相除的余数进行
分组:不同余数的定时器放在不同分组中;相同余数的定时器处在同一组中,由双向链表连
接。这样,余数值为0~OS_TMR_CFG_WHEEL_SIZE-1 的不同定时器控制块,正好分别对
应了数组元素 OSTmr-WheelTbl[0] ~OSTmrWheelTbl[OS_TMR_CFGWHEEL_SIZE-1]的不
同分组。每次时钟节拍到来时,时钟数OSTmrTime 值加 1,然后也进行求余操作,只有余
数相同的那组定时器才有可能到时,所以只对该组定时器进行判断。这种方法比循环判断所
有定时器更高效。随着时钟数的累加,处理的分组也由0~OS_
您可能关注的文档
- !五香卤水制作全攻略.doc
- (UTh)/He定年―――低温热年代学研究的一种新技术.pdf
- (五)勘察质量薄弱环节的预防措施.doc
- (值)双目视觉的立体标定方法.pdf
- (省市区县)基层单位数据上报操作流程.doc
- (高三复习)二次方程的根的分布问题.ppt
- Ackgcug铀资源地质学考试复习资料.doc
- AGMA按均衡滑动率原则选择齿轮变位系数的原理.pdf
- Als中间合金及变质工艺研究—r.pdf
- AOI技术资料.doc
- 山东省济宁市汶上县2024-2025学年部编版八年级上学期1月期末历史试题.docx
- 山东省济宁市鱼台县2024-2025学年八年级上学期期末考试英语试题(1).docx
- 山东省莱阳市2024-2025学年(五四学制)鲁教版七年级上学期英语期末考试题.docx
- 山东省聊城市2023-2024学年部编版七年级历史上学期期末水平检测试题.docx
- 陕西省安康市岚皋县2024-2025学年八年级上学期期末考试数学试卷.docx
- 山东省济宁市曲阜市2024-2025学年五年级上学期期末数学试卷.docx
- 山东省济宁市汶上县2024-2025学年五年级上学期1月期末语文试题.docx
- 山东省济宁市汶上县2024-2025学年五年级上学期期末英语试题.docx
- 2025年铁路局招聘考试试题铁路基础知识及解析答案.docx
- 2025年天津事业单位招聘《职业能力测试》考试题库及答案解析.docx
最近下载
- 北斗卫星导航定位系统总结.doc VIP
- 如何制作标书22).pptx VIP
- 卧式单面多轴钻孔组合机床动力滑台的液压系统设计.doc VIP
- (高清版)DB32∕T 4659.2-2024 医院公共卫生工作规范 第2部分:疾控机构医防融合工作指南.pdf VIP
- 2025年中考语文作文猜押:《有一束光照亮我的世界》写作技巧课件.pptx VIP
- (高清版)DG∕TJ 08-2435-2023 市域铁路设计标准.pdf VIP
- Landmark钻井设计软件课件.pptx VIP
- 常见安全生产隐患辨识图册.pptx VIP
- 兰德马克(Landmark)钻井设计软件组成.pptx VIP
- 工程质量风险分级管控清单 .pdf VIP
原创力文档


文档评论(0)