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普通定时器精度分析相关推荐

  1. 基于SylixOS的中断浅析

    目  录 1.中断... 1 1.1           中断的定义... 1 1.2           中断的分类... 1 1.2.1    外部中断... 1 1.2.2    内部中断... ...

  2. SylixOS中APIC HPET定时器字符驱动实现

    1.简介 1.1 APIC介绍 "APIC"是Advanced Programmable Interrupt Controller的缩写,即高级可编程中断控制器.引入APIC机制是 ...

  3. SylixOS x86 HPET 定时器驱动

    HPET(High Precision Event Timer) 俗称高精度定时器,最低时钟频率为10MHZ,而且定义了比较严格的精确度(间隔 >= 1 毫秒的允许 +-0.05% 的误差,间隔 ...

  4. Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点

    Vxworks.QNX.Xenomai.Intime.Sylixos.Ucos等实时操作系统的性能特点 VxWorks操作系统 VxWorks 操作系统是美国WindRiver公司于1983年设计开发 ...

  5. SylixOS电源管理之外设功耗管理

    1.前言 在这个世界中,任何系统的运转都需要能量.如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行.而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会 ...

  6. SylixOS 技术简介

    以下是SylixOS基本特性,SylixOS源码大家可以到官方网站下载. 基本功能 1. 支持任务管理,支持256个任务调度优先级,实现基于优先级的抢占式调度和同优先级的时间片轮转调度算法: 2. 支 ...

  7. SylixOS快问快答

    Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>. A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定 ...

  8. SylixOS设备驱动

    驱动简介 设备驱动是最底层的.直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的.通用的接口,设备驱动是内核空间的一部分,其运行在内核态下. 按照硬件设备的具体工 ...

  9. SylixOS更新记录

    内容来自 SylixOS内核文件<CHANGELOG>,从中我们可以看到SylixOS不断完善的细节. HISTORY (GIT HEAD) ++ New features: 2020-0 ...

最新文章

  1. 二十二、新人成才之路《做人七项原则 做一个节俭惜福的人》
  2. 用Docker镜像搭建ELK环境
  3. spring源码学习之路---深入AOP(终)
  4. javascript改变样式(cssFloat,styleFloat)
  5. struts2 的国际化
  6. Android之非root手机run-as命令获取debug版本apk里面的数据(shared_prefs文件,lib下面的so,数据库文件)
  7. java类的定义的实例_Java中类的定义和初始化示例详解
  8. 详细介绍mysql-bin.000001文件的来源及处理方法
  9. 教你win7显卡驱动如何安装,win7电脑显卡驱动的安装方法
  10. 【QT】Qt多线程编程之高级函数
  11. matlab t分布 反函数,Excel 应用TINV函数计算学生的t分布的反函数
  12. Win10中英文切换 win键+空格
  13. luckysheet实现在线编辑Excel
  14. nRF52840-DK通过USB接电脑,不能识别出Jlink
  15. 潮中有浪,国潮青花瓷魔浪S入手,我只能说很潮够强
  16. 如何制作wordpress短代码
  17. ABP学习笔记:领域服务 和 应用服务 区别
  18. 古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力
  19. json序列化 java对象_Json 数据反序列化为Java对象
  20. mysql和虚拟主机区别_mysql和虚拟主机的区别是什么

热门文章

  1. html微信窗口阻止滚动条,解决微信浏览器页面可以随意拉伸,导致页面内部滚动条滚动体验不好的问题...
  2. Java 内存分配——Thinking in Java 4th 读书笔记
  3. oracle里面有emp表么,Oracle自带表(EMP)SQL语句练习
  4. RDMA技术详解(二):RDMA Send Receive操作
  5. android控件ems,Android登录等待效果
  6. linux 不关机添加硬盘,完美解决Ubuntu Linux关机异响[SATA硬盘]
  7. python 底层实现_用Python从底层实现一个多层感知机
  8. 如何将qmainwidget 客户区坐标_滋补品行业营销感悟之:如何将同行变成客户?
  9. iis、apache与nginx禁止目录执行asp、php脚本的实现方法
  10. 将查询后的数据导入到其他表中