[应用相关] RTOS:Real Time Operating System,实时操作系统

[复制链接]
 楼主| LOVEEVER 发表于 2024-9-13 18:00 | 显示全部楼层 |阅读模式
RTOS也称为多线程/任务系统,相比前后台系统,多线程/任务系统的事件触发是在中断中完成的,但事件的处理是在线程/任务中完成的。在多线程/任务系统中,线程/任务跟中断一样,也具有优先级,当一个紧急的事件/信号在中断被触发之后,事件/信号对应的线程/任务的优先级足够高,就会立马得到响应。相比前后台系统,多线程/任务系统的实时性更高。并且,当所有的线程/任务处于等待状态时,系统会进入idle线程/任务,在idle线程/任务里面可以让CPU进入stop、standy等低功耗模式,降低系统功耗。

相应的伪代码如下:

  1. os_event event1;
  2. os_event event2;
  3. int main(void)
  4. {
  5.    HardWareInit(); /* 硬件相关初始化 */
  6.    RTOSInit(); /* OS 初始化 */
  7.    RTOSStart(); /* OS 启动,开始多线程调度,不再返回 */
  8. }
  9. void ISR1(void)
  10. {
  11. os_set_event(event1); /* 触发event1事件 */
  12. }
  13. void ISR2(void)
  14. {
  15.    os_set_event(event2); /* 触发event2事件 */
  16. }
  17. void Task1(void)  //优先级1
  18. {
  19.   while(1)
  20.   {   
  21.    os_event_wait(event1);
  22.    DoSomething1();
  23.   }
  24. }

  25. void Task2(void) //优先级2
  26. {
  27.   while(1)
  28.   {
  29.      os_event_wait(event2);
  30.      DoSomething2();
  31.   }
  32. }

  33. void Task_idle(void)//优先级最低
  34. {
  35.   cpu_stop();
  36. }


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

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

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

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

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

348

主题

2625

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部