RT-Thread系统简介

news/2025/3/20 22:31:20/

前言

RT-Thread是一款国产的实时操作系统,我们首先从实时操作系统开始进行介绍,再展开RT-Thread操作系统。

实时操作系统介绍

实时操作系统诞生背景

为了解决两个问题:

  • 一个是早期的CPU任务切换的开销太大,实时调度器可以避免任务频繁切换导致CPU时间的浪费;
  • 另一个是在一些特殊的应用场景中,必须要保证重要的任务优先被执行。

定义

实时操作系统(RTOS)又称,即时操作系统,它会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。
实时操作系统与一般的操作系统相比,最大的特色就是**“实时性”**,如果有一个任务需要执行,实时操作系统会在较短时间内执行该任务,不会有较长的延时,以此保证了各个任务的及时执行。
实时操作系统中都要包含一个实时任务调度器,这个任务调度器与其他操作系统的最大不同是强调:严格按照优先级来分配CPU时间,并且时间片轮转不是实时调度器的一个必选项。

设计思路

  • 实时的消息、事件处理机制。常见操作系统中,消息队列都是按照FIFO的方式进行调度,但实时操作系统会提供基于优先级的处理方式:依据优先级来决定优先接收信息。
  • 提供内核级的优先级反转处理方式。对于类似信号量一类的API,都能提供抑止优先级翻转的机制,防止操作系统死锁。
  • 减少粗粒度的锁和长期关中断的使用。“锁”主要是指自旋锁一类会影响中断的锁,也包括任何关中断的操作。RTOS通常不允许长期关中断。
  • 系统级的服务也要保证实时性。实时操作系统中允许高优先级的任务优先写入数据,在文件系统提供服务的整个过程中,高优先级的请求被优先处理,这种高优先级策略直到操作完成。
  • 避免提供实时性不确定的API。多数实时操作系统都不支持虚拟内存(page file/swap area),因为缺页中断(page fault)会导致任务调度的不确定性增加。实时操作系统很多都支持分页,但很少会使用虚拟内存,因为一次缺页中断的开销十分巨大(通常都是毫秒级),波及的代码很多,导致用户程序执行的不确定性增加。
  • 提供针对实时系统调度的专用API。
  • 降低系统抖动。因为关中断等原因,操作系统的调度器不会太精确的产生周期性的调度。但优秀的实时操作系统能把调度器的抖动降低到微妙甚至百纳秒一级。
  • 针对实时性设计的SMP和虚拟化技术。实时操作系统的虚拟化能从hypervisor层面上提供虚拟机级别的实时调度,虚拟机上可以是另外一个实时系统,也可以是一个非实时系统。

RT-Thread系统

概述

它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务。事实上一个处理器核心在某时刻只能运行一个任务,由于每次对一个任务的执行时间很短、任务与任务之间通过任务调度器进行快速的切换,给人造成多个任务在同一时刻同时运行的错觉。
RT-Threa系统中,任务通过线程实现的,RT-Thread中的线程调度器也就是以上提到的任务调度器。

架构

物联网操作系统是指以操作系统内核(RTOS\Linux等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台。
RT-Thread与其他很多RTOS主要区别之一是:它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。
在这里插入图片描述

  • 内核层:RT-Thread内核,是RT-Thread的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件/板级支持包)与硬件密切相关,由外设驱动和CPU移植构成。
  • 组件与服务层:组件是基于RT-Thread内核之上的上层软件,例如虚拟文件系统、FinSH命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
  • RT-Thread软件包:运行于RT-Thread物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。
  • 物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
  • 脚本语言相关的软件包:目前支持 JerryScript、MicroPython。
  • 多媒体相关的软件包:Openmv、mupdf。
  • 工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
  • 系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
  • 外设库与驱动类软件包:RealTek RTL8710BN SDK。

http://www.ppmy.cn/news/173075.html

相关文章

RT-thread nano

1、nano与完整版区别 与 RT-Thread 完整版不同的是,Nano 不含 Scons 构建系统,不需要 Kconfig 以及 Env 配置工具,也去除了完整版特有的 device 框架和组件,仅是一个纯净的内核。 2、特点 易裁剪:Nano 的配置文件为…

RT-Thread系列一 初识

RT-Thread Master与Nano RT-Thread Master版本和RT-Thread Nano版本的关系: RT-Thread Master版本不仅仅是一个实时内核,还包含了丰富的中间层组件;RT-Thread Nano是RT-Thread Master之上进行剪裁后形成的精简版,去掉了一些组件…

《初次使用瑞昱 rtl8710 》

初步使用rtl8710 首次接触RTL8710 这一款模块,模块硬件可以在官网等方式找资料 环境搭建 硬件工具: USB线(正常的安卓手机线都可以)开发板一块J-link在线仿真器(某宝一大堆)软件:IAR &#xff…

LT8618SX中文简介

1.功能 RGB输入 –支持24位RGB,YUV和BT656/BT601/BT1120输入 –支持SDR和DDR数据采样 –可编程上升/下降边缘时钟输入 –支持高达148.5MHz DDR或297MHz SDR时钟输入 –支持1.8V和3.3V输入电压电平 HDMI发射器 –符合HDMI1.4和HDCP1.4 –分辨率高达4K30Hz –可编…

【stm32开发】stm32+oled最小系统板资料(原理图、PCB、示例代码)【六一】

🎉欢迎来到stm32专栏~stm32oled最小系统板 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:stm32专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能…

rt-thread can

rt-thread stm32f10x-HAL can的驱动和应用。源码暂时还不支持,自己通过F4修改了一版 源码地址:https://gitee.com/gitee.thomas/rt_can rtconfig.h配置 #define RT_USING_CAN #define RT_CAN_USING_HDR //关闭硬件过滤 源码自测已经通过,欢…

RTL8201-RMII电路

本文分享一下RTL8201如何用作RMII电路,无需外部晶体,时钟由主芯片产生。 RTL8201是常用的百兆电流型PHY,支持端口自动翻转(AUTO MDIX),如下框图 RMII相对MII来说,连接线更少,MII需要…

什么是RT-Thread?

一、RT-Thread的定义 RT-Thread,全称是 Real Time-Thread, 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2),包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈、图形用户界面等。 相…