SylixOS普通定时器精度分析
1. 适用范围
SylixOS下实现高精度定时器和普通定时器功能,本文档介绍普通定时器的精度问题,适用于SylixOS开发工程师,使用者应具备SylixOS基础知识以及基本编程能力。
2. 实现原理
SylixOS下在应用层创建定时器时系统会申请定时器控制块,在启动定时器时将定时器控制块加入到全局扫描链表中,由内核线程负责循环扫描队列,代码模块如程序清单 2.1所示。
程序清单 2.1 定时器内核线程
… … (省略)
for (;;) {PLW_CLASS_WAKEUP_NODE pwun;ULONG ulCounter = LW_ITIMER_RATE;#if (LW_CFG_RMS_EN > 0) && (LW_CFG_MAX_RMSS > 0)API_RmsPeriod(ulRms, LW_ITIMER_RATE); /* 使用 RMS 进行周期运行 */
#elseAPI_TimeSleep(LW_ITIMER_RATE); /* 等待一个扫描周期 */
#endif… … (省略)
}… … (省略)
由程序清单 2.1可知,内核线程循环的时间周期通过RMS调度控制,时间周期为:
LW_ITIMER_RATE
SylixOS下为LW_ITIMER_RATE定义为:
#define LW_ITIMER_RATE _K_timingKernel.TIMING_ulITimerRate
_K_timingKernel定义为(以ARM CortexA9 base为例):
_K_timingKernel = {100, 10000000, 100, 5, 1, 10, LW_CFG_SLICE_DEFAULT};
因此SylixOS下定时器精度依赖于系统Tick,以上述系统Tick为100 Hz为例,定时器线程遍历周期为5个系统Tick,即定时器精度为50 ms。
转载于:https://blog.51cto.com/12558126/2153150
SylixOS普通定时器精度分析相关推荐
- 基于SylixOS的中断浅析
目 录 1.中断... 1 1.1 中断的定义... 1 1.2 中断的分类... 1 1.2.1 外部中断... 1 1.2.2 内部中断... ...
- SylixOS中APIC HPET定时器字符驱动实现
1.简介 1.1 APIC介绍 "APIC"是Advanced Programmable Interrupt Controller的缩写,即高级可编程中断控制器.引入APIC机制是 ...
- SylixOS x86 HPET 定时器驱动
HPET(High Precision Event Timer) 俗称高精度定时器,最低时钟频率为10MHZ,而且定义了比较严格的精确度(间隔 >= 1 毫秒的允许 +-0.05% 的误差,间隔 ...
- Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点
Vxworks.QNX.Xenomai.Intime.Sylixos.Ucos等实时操作系统的性能特点 VxWorks操作系统 VxWorks 操作系统是美国WindRiver公司于1983年设计开发 ...
- SylixOS电源管理之外设功耗管理
1.前言 在这个世界中,任何系统的运转都需要能量.如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行.而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会 ...
- SylixOS 技术简介
以下是SylixOS基本特性,SylixOS源码大家可以到官方网站下载. 基本功能 1. 支持任务管理,支持256个任务调度优先级,实现基于优先级的抢占式调度和同优先级的时间片轮转调度算法: 2. 支 ...
- SylixOS快问快答
Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>. A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定 ...
- SylixOS设备驱动
驱动简介 设备驱动是最底层的.直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的.通用的接口,设备驱动是内核空间的一部分,其运行在内核态下. 按照硬件设备的具体工 ...
- SylixOS更新记录
内容来自 SylixOS内核文件<CHANGELOG>,从中我们可以看到SylixOS不断完善的细节. HISTORY (GIT HEAD) ++ New features: 2020-0 ...
最新文章
- 二十二、新人成才之路《做人七项原则 做一个节俭惜福的人》
- 用Docker镜像搭建ELK环境
- spring源码学习之路---深入AOP(终)
- javascript改变样式(cssFloat,styleFloat)
- struts2 的国际化
- Android之非root手机run-as命令获取debug版本apk里面的数据(shared_prefs文件,lib下面的so,数据库文件)
- java类的定义的实例_Java中类的定义和初始化示例详解
- 详细介绍mysql-bin.000001文件的来源及处理方法
- 教你win7显卡驱动如何安装,win7电脑显卡驱动的安装方法
- 【QT】Qt多线程编程之高级函数
- matlab t分布 反函数,Excel 应用TINV函数计算学生的t分布的反函数
- Win10中英文切换 win键+空格
- luckysheet实现在线编辑Excel
- nRF52840-DK通过USB接电脑,不能识别出Jlink
- 潮中有浪,国潮青花瓷魔浪S入手,我只能说很潮够强
- 如何制作wordpress短代码
- ABP学习笔记:领域服务 和 应用服务 区别
- 古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力
- json序列化 java对象_Json 数据反序列化为Java对象
- mysql和虚拟主机区别_mysql和虚拟主机的区别是什么
热门文章
- html微信窗口阻止滚动条,解决微信浏览器页面可以随意拉伸,导致页面内部滚动条滚动体验不好的问题...
- Java 内存分配——Thinking in Java 4th 读书笔记
- oracle里面有emp表么,Oracle自带表(EMP)SQL语句练习
- RDMA技术详解(二):RDMA Send Receive操作
- android控件ems,Android登录等待效果
- linux 不关机添加硬盘,完美解决Ubuntu Linux关机异响[SATA硬盘]
- python 底层实现_用Python从底层实现一个多层感知机
- 如何将qmainwidget 客户区坐标_滋补品行业营销感悟之:如何将同行变成客户?
- iis、apache与nginx禁止目录执行asp、php脚本的实现方法
- 将查询后的数据导入到其他表中