0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RTOS的系统节拍

倩倩 来源:麦克泰技术 作者:麦克泰技术 2022-09-20 11:08 次阅读

RTOS的系统节拍

传统的RTOS都是利用一个硬件定时器产生周期性的节拍中断,作为系统的时基。在多数的应用中,系统节拍的周期都是毫秒级的,RTOS的超时、延迟、定时的分辨率都是以节拍为单位。即使一个任务在几个连续的节拍内执行,系统节拍中断还是会周期性的发生,浪费了CPU的执行时间。下图是一个示例,虽然某段时间内只有IDLE任务在执行,系统节拍中断还是会如期发生。

ea3ca35a-3890-11ed-ba43-dac502259ad0.png

此外,任务延迟或超时等时间相关的功能都基于系统滴答中断计时,计时时间到后,通过系统节拍周期中断触发调度器。因此,如果任务的延迟时间小于一个系统节拍周期,则只能主动等待,直到所需的时间结束。

ea76de62-3890-11ed-ba43-dac502259ad0.png  

周期级分辨率的RTOS

SEGGER之前推出的embOS Ultra,改变了过去RTOS采用周期节拍中断作为系统时基的工作方式,采用硬件定时器加计数器的方式,只在必要时产生中断。这就消除了传统的周期性节拍中断,减少了不必要的CPU活动,同时能降低系统的功耗。embOS Ultra基于时间事件的调度都能以微秒指定。

eaa11f7e-3890-11ed-ba43-dac502259ad0.png  

体验embOS Ultra微秒级调度

目前embOS Ultra支持CortexM/R/A,以及RISC-V架构的处理器。从官网可以下载到基于SEGGER Embedded Studio的示例Demo,用于测试,内核以二进制库提供。embOS Ultra的API完全兼容embOS,只是多了几个任务管理的API,任务可以按照ms或us延迟。

ead43c9c-3890-11ed-ba43-dac502259ad0.png

先将Demo例程的任务做了修改,HPTask分别以1000us、2000us不等延迟,LPTask以80ms延迟。


static void HPTask(void) { while (1) {   BSP_SetLED(0);   OS_TASK_Delay_us(1000);   BSP_ClrLED(0);   OS_TASK_Delay_us(2000);   BSP_SetLED(0);   OS_TASK_Delay_us(3000);   BSP_ClrLED(0);   OS_TASK_Delay_us(4000); }}
static void LPTask(void) { while (1) {  BSP_ToggleLED(1);  OS_TASK_Delay_ms(80u); }}

下载代码至目标板上运行,通过SystemView来观测系统的执行:

eb3fd6b4-3890-11ed-ba43-dac502259ad0.png

从OS事件视图可以看到,系统不存在周期性的节拍中断,只是在需要进行任务调度时触发一次中断。从下面的Timeline视图可以更直观的看出,红色涂抹的位置是系统中断。

eb757ad0-3890-11ed-ba43-dac502259ad0.png

注意上图中的时间(996.8us、1.9ms,2.9ms……)并不是任务的间隔时间,而是调度器执行的间隔时间。

再将任务代码改成:


static void HPTask(void) { while (1) {   BSP_SetLED(0);   OS_TASK_Delay_us(50);   BSP_ClrLED(0);   OS_TASK_Delay_us(100); }}
static void LPTask(void) { while (1) {  BSP_ToggleLED(1);  OS_TASK_Delay_us(200u); }}

HPTask任务分别延迟50us和100us,LPTask延迟200us,运行后观测Timeline:

ebc16274-3890-11ed-ba43-dac502259ad0.png

HPTask首次执行延迟了50us之后,系统定时器中断触发,调度器开始执行,从IDEL任务切换到HPTask任务。同时可以发现,从中断触发到HPTask任务体开始执行实际上已经过去了10us,这是因为中断处理和任务调度的执行需要消耗一定CPU时间,这个与处理器架构和CPU运行频率有关,在Cortex-M上大概在10us左右。也就是说在当前的处理器上,延迟时间小于10us是没有意义的,但是在主频很高的MPU(应用处理器)上这个时间可能要短很多。

总之,现在很多的MCU的性能都已经很高了。同时,一些应用要求处理器有比较高的计算能力,还要求系统能有很好的实时性,甚至在MPU上使用RTOS。此种应用场景下,如果RTOS支持CPU周期级别的分辨率,这实际上可以进一步提升系统的实时性。而且,在针对一些外设的处理上,使用微秒级的延迟,还能提高CPU的使用效率,扩展了RTOS的潜在应用范围。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16024

    浏览量

    343737
  • 高分辨率
    +关注

    关注

    0

    文章

    41

    浏览量

    15139
  • 定时器
    +关注

    关注

    23

    文章

    3148

    浏览量

    112092

原文标题:embOS-Ultra:高分辨率系统时间

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用555定时器构建一个简单的节拍

    555定时器IC是一种多功能元件,可用于各种电路,包括节拍器。节拍器是音乐家在练习过程中用来保持稳定节奏的装置。在本教程中,您将学习如何使用555定时器IC构建一个简单的节拍器。
    的头像 发表于 02-11 09:48 428次阅读
    如何使用555定时器构建一个简单的<b class='flag-5'>节拍</b>器

    全志R128系统RTOS使用说明

    重置 CPU,查看输出。 这里可以看到 M33 核心运行频率 192MHz,DSP 运行频率 400MHz,C906 运行频率 480MHz 系统调试命令help code"
    发表于 01-05 10:22

    什么是实时操作系统(RTOS)

    实时操作系统RTOS)是一种专为实时应用程序设计的操作系统。实时应用程序需要在特定时间内做出预测的响应,因此 RTOS 专注于提供对时间约束的强调,以确保
    的头像 发表于 11-23 17:14 1691次阅读

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗?

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗? RTOS代表实时操作系统,专门为需要高可靠性和可预测性的系统设计。相比之下,裸金属或
    的头像 发表于 10-29 16:33 1012次阅读

    如何实现RTOS上的微秒级延时设计呢?

    通常RTOS系统滴答为1KHz,当然,也有100Hz,或者10KHz的情况。
    的头像 发表于 09-15 09:16 1463次阅读
    如何实现<b class='flag-5'>RTOS</b>上的微秒级延时设计呢?

    STM32 RTOS介绍

    R(real) T(time) OS 实时多任务操作系统RTOS是一种操作系统,属于嵌入式操作系统RTOS种类很多:有商业的、DIY和开
    发表于 09-07 08:08

    节拍器开源构建

    电子发烧友网站提供《节拍器开源构建.zip》资料免费下载
    发表于 07-10 16:48 0次下载
    <b class='flag-5'>节拍</b>器开源构建

    基于RTOS的应用程序的五个最佳实践技巧

        我在编写RTOS应用程序的过程中,经常会遇到这些困难,包括正确确定系统中有多少任务、如何设置优先级、协调任务行为、避免常见陷阱,有时只是为了让应用程序正常工作!     如今,近三分之二
    的头像 发表于 07-07 16:49 611次阅读
    基于<b class='flag-5'>RTOS</b>的应用程序的五个最佳实践技巧

    RTOS核心:调度和分割

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定
    的头像 发表于 06-22 10:46 443次阅读

    什么是系统滴答?RTOS滴答设置多少才合理?

    系统滴答(SysTick),有些地方也叫时钟节拍系统心跳等。
    发表于 06-15 09:15 805次阅读
    什么是<b class='flag-5'>系统</b>滴答?<b class='flag-5'>RTOS</b>滴答设置多少才合理?

    一个简单的节拍器电路

    1节拍器是一种提供周期性滴答声或跳动声音的设备,其功能是为任何音乐表演建立适当的节奏。
    的头像 发表于 06-07 10:32 3284次阅读
    一个简单的<b class='flag-5'>节拍</b>器电路

    选择实时操作系统(RTOS)的要点详解

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定
    发表于 05-30 09:45 784次阅读

    CMSIS RTOS任务管理

    RTOS
    橙群微电子
    发布于 :2023年05月29日 10:06:26

    RTOS常用的调度算法

    从裸机(前后台架构)的软件开发过渡到使用实时操作系统(RTOS)可能是一项困难的工作。
    的头像 发表于 05-29 09:22 504次阅读
    <b class='flag-5'>RTOS</b>常用的调度算法

    嵌入式RTOS的 任务栈 和 系统

    简介明了带你了解嵌入式RTOS的 任务栈 和 系统
    的头像 发表于 05-16 09:57 2070次阅读
    嵌入式<b class='flag-5'>RTOS</b>的 任务栈 和 <b class='flag-5'>系统</b>栈