打印
[应用相关]

RTOS:Real Time Operating System,实时操作系统

[复制链接]
174|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVEEVER|  楼主 | 2024-9-13 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RTOS也称为多线程/任务系统,相比前后台系统,多线程/任务系统的事件触发是在中断中完成的,但事件的处理是在线程/任务中完成的。在多线程/任务系统中,线程/任务跟中断一样,也具有优先级,当一个紧急的事件/信号在中断被触发之后,事件/信号对应的线程/任务的优先级足够高,就会立马得到响应。相比前后台系统,多线程/任务系统的实时性更高。并且,当所有的线程/任务处于等待状态时,系统会进入idle线程/任务,在idle线程/任务里面可以让CPU进入stop、standy等低功耗模式,降低系统功耗。

相应的伪代码如下:

os_event event1;
os_event event2;
int main(void)
{
   HardWareInit(); /* 硬件相关初始化 */
   RTOSInit(); /* OS 初始化 */
   RTOSStart(); /* OS 启动,开始多线程调度,不再返回 */
}
void ISR1(void)
{
os_set_event(event1); /* 触发event1事件 */
}
void ISR2(void)
{
   os_set_event(event2); /* 触发event2事件 */
}
void Task1(void)  //优先级1
{
  while(1)
  {   
   os_event_wait(event1);
   DoSomething1();
  }
}

void Task2(void) //优先级2
{
  while(1)
  {
     os_event_wait(event2);
     DoSomething2();
  }
}

void Task_idle(void)//优先级最低
{
  cpu_stop();
}


在多线程/任务系统中,根据程序的功能,我们把这个程序主体分割成一个个独立的,无限循环且不能返回的小程序,称之为线程/任务。每个线程/任务都是独立的,互不干扰的,且具备自身的优先级,由操作系统进行调度管理。

对于一些复杂的需求,加入操作系统反而使我们的编程变得简单了。整个系统随之带来的额外开销是操作系统占据的FLASH 和 RAM。如今单片机的 FLASH 和 RAM 是越来越大,完全能够满足RTOS那点开销。

RTOS因为有了任务优先级、任务调度、事件/信号量等管理机制,

1. 能更有效区处理紧急任务

2. 能在CPU没有事情需要处理时,进入空闲任务方便低功耗管理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

272

主题

1841

帖子

4

粉丝