认识RTOS

Posted yangyu-iot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识RTOS相关的知识,希望对你有一定的参考价值。

RTOS

  1. 前后台系统:早期嵌入式开发没有嵌入式操作系统的概念,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念。

    通常把程序分为两部分:前台系统和后台系统。

    简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。
    技术图片

  2. 实时操作系统(Real-Time Operating System,简写为RTOS):实时操作系统是指面向实时运行对象,并为其服务的操作系统。RTOS是一种系统软件,可以为应用程序提供服务并管理微控制器硬件资源,这些硬件资源包括内存、外设和中断等。

    实时指的是任务(Task)在给定的时间(Deadline)内完成。。一个实时操作系统能保障每个任务能在一个已知的最大运行时间(Maximum Response Time)内完成,包括

    • 高精度计时系统
    • 多级中断机制
    • 实时任务调度机制

    技术图片

  3. 实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。

    RTOS的核心在于实时内核,是一个可剥夺型的内核。可剥夺型内核就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中优先级最高的任务,整个过程由任务调度器来完成,任务调度器是操作系统最核心的东西。

  4. 操作系统一般可分为:通用操作系统(OS)和实时操作系统(RTOS)两大类。而实时操作系统(RTOS)根据其运行的处理器不同可以进一步分为:CPU RTOS和MCU RTOS两类。面向MCU或微控制器的RTOS一般也称为嵌入式实时操作系统(embedded real-time operating system)。

    • 通用操作系统(OS)(Windows、Linux、Mac OS…)

      CPU: x86、ARM…

    • 实时操作系统(RTOS)

      • CPU RTOS(THREADX、SylixOS、VxWorks…)

        PowerPC、MIPS、RISC-V、68K、ARM Cortex-A…

      • MCU RTOS(RT-Thread、FreeRTOS…)

        8051、PIC、Arm Cortex-M…

为什么学习RTOS?

随着物联网和人工智能技术快速发展,人们对身边的各种设备要求也越来越高。家里的台灯不仅要能远程开关,还能够通过感知周围环境和记录用户使用习惯自动进行调节;为了随时掌握身体健康状况,各种可穿戴智能手环推陈出新,能够定位,测步,记录心跳等等。

程序的复杂性也在指数级暴增。RTOS(嵌入式实时操作系统)就好比一座“大厦”的地基,只有构筑在坚固可靠的基石上,我们的物联网产品才能应对各种考验。

在8位或16位嵌入式系统应用中,由于CPU能力有限,往往采用单片机开发模式。但是,当嵌入式系统比较复杂、采用32位CPU时,由于处理能力强大,单线程的编程方式不但代码逻辑复杂、容易出错,同时也很难发挥出32位CPU的处理能力。而引入操作系统后,最主要的变化就在于”多线程“,让多任务并行,充分发挥系统资源的能力。

RTOS的好处

  • 降低开发难度,直接使用系统API,即可完成系统资源的申请、多任务的配合(基于优先级的实时抢占调度,同优先级的时间片调度),以及任务间的通信等(如锁、事件等机制)。
  • 增加代码可读性,易于维护和管理。
  • 提升可移植性,对接不同芯片的工作由操作系统完成,应用开发者只需要关注 OS 层接口。

RTOS发展的4个主要阶段

(1)无操作系统阶段

嵌入技术的早期阶段,,没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上“系统”的概念。 这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。

(2)简单操作系统阶段

20世纪80年代,嵌入式系统的程序员也开始基于一些简单的“操作系统”开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。

(3)实时操作系统阶段

20世纪90年代,随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。

RTOS特点:实时性、可裁剪性、可靠性

RTOS市场

如下图,如要查看最新的也可直接搜索Embedded Markets Study,或者查看国内整理的RTOS市场简报

技术图片

RTOS举例

  • FreeRTOS:FreeRTOS是专为小型嵌入式系统设计的可扩展的实时内核。 FreeRTOS操作系统是完全开源的操作系统,具有代码公开、可移植、可裁剪、调度策略灵活的特点,可以方便地移植到各种单片机上运行。
  • μCOS(I/II/III):μC/ OS-II和μC/ OS-III是抢占式,高度便携式和可扩展的实时内核。
  • RTX:Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统。它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序。
  • VxWorks:美国WindRiver公司于1983年设计开发的高性能、可扩展的实时操作系统,具有嵌入实时应用中最新一代的开发和执行环境,支持市场上几乎所有的处理器,以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
  • **Windows CE **:美国Microsoft公司推出的嵌入式操作系统,支持众多的硬件平台,其最主要特点是拥有与桌上型Windows家族一致的程序开发界面,因此,桌面操作系统Windows家族开发的程序可以直接在Windows CE上运行,主要应用于PDA(个人数字助理)、平板电脑、智能手机等消费类电子产品。但嵌入式操作系统追求高效、节省,Windows CE在这方便是笨拙的,它占用内存过大,应用程序庞大。
  • RT-Linux:美国墨西哥理工学院开发的基于linux的嵌入式实时操作系统,是一款提供源代码、开放式自由软件。RT-linux使用了精巧的内核,并把标准的linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对linux内核的改动非常小,并且可以充分利用Linux 下现有的丰富的软件资源。
  • QNX:加拿大QNX公司出品的一种商用的、遵从POSIX标准规范的类UNIX实时操作系统。
  • TI DSP/BIOS: DSP/Bios是TI公司特别为其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平台所设计开发的一个尺寸可裁剪的实时多任务操作系统内核,具有实时操作系统的诸多功能,如任务的调度管理、任务间的同步和通信、内存管理、实时时钟管理、中断服务管理、外设驱动程序管理等。

国产RTOS

  • RT-Thread:RT-Thread由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOS和μCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。
  • Huawei LiteOS:Huawei LiteOS 是华为面向IoT领域,构建的轻量级物联网操作系统,以轻量级低功耗、快速启动、互联互通、安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
  • AliOS Things:AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。
  • TencentOS tiny:腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点。
  • DJYOS:与传统操作系统不同,DJYOS不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了VC似的。
  • SylixOS:SylixOS 是一个开源的跨平台的大型实时操作系统,SylixOS诞生于2006年,经过十多年的持续开发,SylixOS 已成为功能最为全面的国产操作系统之一。

以上是关于认识RTOS的主要内容,如果未能解决你的问题,请参考以下文章

RTOS任务的堆栈大小与代码量有关吗?

CMSIS-RTOS 时间管理之时间延迟Time Delay

消息队列在RTOS的应用

CMSIS-RTOS 中断处理Interrupt Handling

Rtos 的 Stm32 硬故障异常

微控制器的状态机与 RTOS