搞懂时钟管理,看这个就好啦~

智能硬件 创建于:2022-11-13

本文分享自中移OneOS微信公众号《时钟管理》。

时钟管理包含两部分,第一部分是操作系统最小时间单位(时钟节拍),第二部分是基于时钟节拍的定时器,下面分别展开描述。

时钟节拍

时钟节拍是特定的周期性中断,这个中断可以看做是系统心跳。系统心跳的时间间隔取决于不同的应用,一般是1ms~100ms。这种周期性中断使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,提供等待超时等依据。时钟节拍率越快,系统的额外开销就越大。

系统心跳产生时,会在中断处理函数中调用一次os_tick_increase(),通知操作系统过了一个时钟节拍的时间。在os_tick_increase()中,首先将系统时间自增1,然后检查正在运行的任务时间片是否耗尽,如果耗尽则进行任务切换,最后检查是否有定时器超时,如果有超时则执行对应的回调函数。

定时器管理

定时器分为硬件定时器软件定时器

硬件定时器是由CPU提供,软件通过驱动接口配置相关的寄存器,来控制定时器的超时时间等,超时后CPU会产生时钟中断,达到定时的效果。硬件定时器精度较高,可以达到纳秒级别,但是数量有限。

软件定时器是操作系统提供,是以硬件定时器为基础提供一类系统接口,可以提供不限数量的定时器,但是相较于硬件定时器精度较差,超时时长必须是时钟节拍的整数倍。

根据触发模式,软件定时器分为单次触发模式和周期触发模式;根据超时函数执行的上下文环境,软件定时器又分为中断模式和任务模式。

中断模式是在系统心跳的中断函数中执行,要求超时处理函数的执行时间尽量短,不能进行动态内存申请、等待信号量等操作,否则会导致其他中断响应时间变长或占用其他任务执行时间。系统定时器默认使用中断模式,创建定时器时可使用参数OS_TIMER_FLAG_HARD_TIMER来指定。

任务模式是在任务上下文中执行,默认不开启,可以通过OS_USING_TIMER_SOFT来启用。该模式下,系统初始化时会创建一个timer任务,该模式定时器的超时函数在timer任务的上下文中执行。创建定时器时可使用参数OS_TIMER_FLAG_SOFT_TIMER来指定。

时钟管理接口设计如下:

(1)获取系统tick

 (2)创建定时器

(3)销毁定时器

(4)启动定时器

(5)停止定时器

(6)控制定时器

OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
OneOS软件地址:http://www.oschina.net/p/cmcc-oneos
OneOS项目地址:https://gitee.com/cmcc-oneos/OneOS
OneOS技术交流群:158631242

原文地址:https://my.oschina.net/u/5443273/blog/5458615

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

中移物联OneOS