RT-Thread(学习)

news2025/1/10 16:51:33

RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过16个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富的物联网操作系统。

RT-Thread概述

RT-Thread,全称是Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真的执行了多个任务。

事实上,一个处理器核心在某一个时刻只能运行一个任务,由于每次对一个任务的执行时间很短,任务与任务之间通过任务调度器进行非常快地切换(调度器根据优先级决定此刻该执行的任务),给人造成多个任务在一个时刻同时运行的错觉。

在RT-Thread系统中,任务通过线程实现的,RT-Thread中的线程调度器也就是以上提到的任务调度器。

RT-Thread主要采用C语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。

针对资源受限的微控制器(MCU)系统,可通过方便易用的工具,裁剪出仅需要3KB Flash、1.2KB RAM内存资源的NANO版本(NANO是RT-Thread官方于2017年7月发布的一个极简版内核);

对于资源丰富的物联网设备,RT-Thread又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似Andoird的图形界面以及触摸滑动效果、智能语音交互效果等复杂功能。

相较于Linux操作系统,RT-Thread体积小,成本低,功耗低,启动快速,除此以外RT-Thread还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然32位MCU是它的主要运行平台,实际上很多带有MMU、基于ARM9、ARM11甚至Cortex-A系列级别CPU的应用处理器在特定应用场合也适合使用。

许可协议

RT-Thread系统完全开源,遵循Apache License2.0开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码,没有潜在商业风险。

RT-Thread的架构

近年来,物联网(Internet Of Things)概念广为普及,嵌入式设备的联网已是大势所趋。终端物联网使得软件复杂性大幅增加,传统的RTOS内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。

物联网操作系统是指以操作系统内核为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread就是一个IoT OS。

RT-Thread与其他很多RTOS和FreeRTOS、uC/OS的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件。

在这里插入图片描述
它具体包括以下部分:

  • 内核层:RT-Thread内核,是RT-Thread的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件/板级支持包)与硬件密切相关,由外设驱动和CPU移植构成。
  • 组件与服务层:组件是基于RT-Thread内核之上的上层软件,例如虚拟文件系统、FinSH命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
  • RT-Thread软件包:运行于RT-Thread物联网操作系统平台上,面向不同应用领域的通用软件,由描述信息、源代码或库文件组成。RT-Thread提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是RT-Thread生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。

物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
脚本语言相关的软件包:目前支持 Lua、JerryScript、MicroPython、PikaScript。
多媒体相关的软件包:Openmv、mupdf。
工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
外设库与驱动类软件包:RealTek RTL8710BN SDK。
其他。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openssl创建CA证书教程

配置生成CA证书 总示意图: (1),通过openssl创建CA证书 第一步:创建一个秘钥,这个便是CA证书的根本,之后所有的东西都来自这个秘钥 # 通过rsa算法生成2048位长度的秘钥 openssl genrsa -out myCA.key 2048 第二步&#…

Wireshark TS | MQ 传输缓慢问题

问题背景 应用传输慢是一种比较常见的问题,慢在哪,为什么慢,有时候光从网络数据包分析方面很难回答的一清二楚,毕竟不同的技术方向专业性太强,全栈大佬只能仰望,而我们能做到的是在专注于自身的专业方向之…

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗?你知道为什么要使用它吗?答案就在本文中,很高兴能够与你共飧。 自动化测试正席卷全球,Selenium 认证是业界最抢手的技能之一。 什么是 Selenium? Selenium 是一种开源工具,用于…

Spring Cloud Alibaba Nacos 2.2.3 (2) - 单机版启动 (winodows 和 linux )

Nacos 2.2.3 (1) - 下载与数据库配置 参考下载与数据库配置 启动服务器 执行 nacos-server-2.2.3\bin 下的startup.sh或者startup.cmd (根据不同系统) windows 下nacos 单机启动 方式一: 1,打开cmd 2,cd 到nacos-s…

数据库数据恢复-SQL SERVER数据库分区被格式化的数据恢复方案

SQL SERVER数据库故障类型: 1、SQL SERVER数据库文件被删除。 2、SQL SERVER数据库所在分区格式化。 3、SQL SERVER数据库文件大小变为“0”。 4、使用备份还原数据库时覆盖原数据库。 SQL SERVER数据库故障原因: 1、人为误操作。 2、文件系统损坏&#…

基于Yolov8的工业小目标缺陷检测实战(2):动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023

目录 1.工业油污数据集介绍 1.1 小目标定义 1.2 难点 1.3 工业缺陷检测算法介绍 1.3.1 YOLOv8 2.Dynamic Snake Convolution 2.1 Dynamic Snake Convolution加入到yolov8 3.训练结果分析 4.系列篇 1.工业油污数据集介绍 三星油污缺陷类别:头发丝和小黑点&…

AirtestIDE编辑窗内,脚本内容消失,显示一片红色怎么办?

airtest编辑窗内,脚本内容消失,显示一片红色怎么办 如果突然有一天打开脚本,发现脚本全都变成了红色的点(因未知错误导致的脚本异常): 原本辛辛苦苦写的三百多行代码全消失,是不是很难受很心慌…

Android Camera2获取摄像头的视场角(FOV)信息

一、概念 FOV(Field of View)是一个用于描述视野范围的术语。它通常用于计算设备(如摄像机、虚拟现实头显或眼睛)所能捕捉到的可见区域。 水平FOV(Horizontal FOV):描述视野在水平方向上的范围…

可以查看输入字数的手机备忘录软件用哪个?

在当下这个科技迅速发展的时代,我们常常需要依赖备忘录来记录重要的信息、灵感和待办事项。手机备忘录成为了我们随身携带的工具,但是你有没有遇到这样的情况:你写了很多内容,但不知道写了多少字?这个问题或许曾经困扰…

feign结合hystrix的坑

feign结合hystrix的步骤 创建报错类 接口指向报错类 配置文件放开feign的hystrix 最后注意:启动类的EnableHystrix只适用于ribbon负载均衡的场景,如果是feign要去掉

【评论内容关键词提取】多种主流提取算法与大模型测试

文章目录 1. 写在前面2. TextRank关键词提取算法3. TFIDF算法4. jionlp算法5. sklearn算法6. Rake算法7. hanlp情感分析8. 大语言模型 1. 写在前面 做过舆情项目或文本内容情感分析的大家都知道,我们要从大量的文本内容中提取核心短语或者关键词!最近我们…

【分布式计算】副本数据Replicated Data

作用:可靠性、高性能、容错性 问题:如何保持一致、如何更新 问题:存在读写/写写冲突 一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题 Data-centric models: consistency model?? ??? 读取时&#xff0c…

7-1_MSPI_NANDFLASH SDK例程详解

1.代码示例路径 PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\interfaces\mspi_ds35x1ga_quad_example\src\mspi_ds35x1ga_quad_example.c 本文中主要讲解初始化流程内容 2.MSPI通信示意图 SCK(Serial Clock):串行时钟,用于…

web:[HCTF 2018]WarmUp

题目 点进页面&#xff0c;页面只有一张滑稽脸&#xff0c;没有其他的提示信息 查看网页源代码&#xff0c;发现source.php&#xff0c;尝试访问一下 跳转至该页面&#xff0c;页面显示为一段php代码&#xff0c;需要进行代码审计 <?phphighlight_file(__FILE__);class emm…

BCC源码下载

接前一篇文章&#xff1a;BCC介绍 1. GitHub地址 上一篇文章中已提到&#xff0c;BCC的github地址是&#xff1a;https://github.com/iovisor/bcc。 页面如下所示&#xff1a; 2. 源码下载 打开终端&#xff0c;创建好要存放BCC源码的目录&#xff0c;进入此目录。 然后&…

【计算机网络】——传输层

//图片取自王道&#xff0c;仅做交流学习 一、传输层提供的服务 物理层、数据链路层、网络层是通信子网。 传输层&#xff1a;它属于面向通信部分的最高层&#xff0c;同时也是用户功能的最低层 为应用层提供通信服务使用网络层的服务 网络层提供主机之间的逻辑通信。 1、传输…

go sync.Map包装过的对象nil值的判断

被sync.Map包装过的nil 对象&#xff0c;是不能直接用if xxx nil的方式来判断的 func testnil() *interface{} {return nil }func main() {var ptr *interface{}test : testnil()//p &Person{}fmt.Printf("ptr 的值为 : %v\n", ptr)fmt.Printf("ptr 的值…

控价与数据分析的关系

品牌在做线上控价时&#xff0c;会面对许多的数据&#xff0c;如店铺数据、行业数据&#xff0c;当这些数据仅仅只是拿来做监测低价输出低价报表使用&#xff0c;是没有发挥其最大作用的&#xff0c;因为商品链接的字段较丰富&#xff0c;涉及的内容会包含销量、评价量、促销信…

pytorch环境搭建到pycharm项目映射配置(成功后回顾性记录/自用)

利用Anaconda创建pytorch虚拟环境 前提&#xff1a;成功安装Anaconda&#xff0c;确保可以打开NVIDIA控制面板 开始-》搜索“Anaconda Prompt” 打开后输入&#xff1a;conda create -n 你的虚拟环境名 python3.9。输入y&#xff0c;继续安装&#xff0c;完成。 输入&#…

容器适配器

除了顺序容器外&#xff0c;标准库还定义了三个顺序容器适配器&#xff1a;stack、queue和priority_queue适配器。适配器是标准库中的一个通用概念。容器、迭代器和函数都有适配器。适配器本质上是一种机制&#xff0c;能使某种事物的行为看起来像另外一种事物一样。 所有容器…