RT-Thread 简介及架构

RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。事实上,一个处理器核心在某一时刻只能运行一个任务,由于每次对一个任务的执行时间很短、任务与任务之间通过任务调度器进行非常快速地切换(调度器根据优先级决定此刻该执行的任务),给人造成多个任务在一个时刻同时运行的错觉。在 RT-Thread 系统中,任务通过线程实现的,RT-Thread 中的线程调度器也就是以上提到的任务调度器。
RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。针对资源受限的微控制器(MCU)系统,可通过方便易用的工具,裁剪出仅需要 3KB Flash1.2KB RAM 内存资源的 NANO 版本(NANO 是 RT-Thread 官方于 2017 7 月份发布的一个极简版内核);而对于资源丰富的物联网设备,RT-Thread又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。
相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9ARM11 甚至 Cortex-A 系列级别 CPU的应用处理器在特定应用场合也适合使用 RT-Thread

 

近年来,物联网(Internet Of ThingsIoT)概念广为普及,物联网市场发展迅猛,嵌入式设备的联网已是大势所趋。终端联网使得软件复杂性大幅增加,传统的 RTOS 内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。物联网操作系统是指以操作系统内核(可以是RTOSLinux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS
RT-Thread 与其他很多 RTOS FreeRTOSuC/OS 的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。
它具体包括以下部分:
  • 内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
  • 组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界 面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
  • RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:

1. 物联网相关的软件包:Paho MQTTWebClientmongooseWebTerminal 等等。

 

2. 脚本语言相关的软件包:目前支持 JerryScriptMicroPython

3. 多媒体相关的软件包:Openmvmupdf

4. 工具类软件包:CmBacktraceEasyFlashEasyLoggerSystemView

5. 系统相关的软件包:RTGUIPersimmon UIlwext4partitionSQLite 等等。

6. 外设库与驱动类软件包:RealTek RTL8710BN SDK

7. 其他。

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

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

相关文章

iOS HTML标签字符实体,转译字符串归类大全 【转载】

为什么要用转义字符串&#xff1f; HTML中<&#xff0c;>&#xff0c;&等有特殊含义&#xff08;<&#xff0c;>&#xff0c;用于链接签&#xff0c;&用于转义&#xff09;&#xff0c;不能直接使用。这些符号是不显示在我们最终看到的网页里的&#xff0c…

RT-Thread在github上的教程中图片显示不出来问题的解决方法

在github上查看RT-Thread STM32系列BSP制作教程时发现教程中所有的图片都加载不出来&#xff0c;非常影响教程的阅读使用。 使用记事本打开文件&#xff1a; C:\Windows\System32\drivers\etc\hosts 将如下内容复制粘贴到hosts文件末尾&#xff1a; # GitHub Start 140.82.11…

在STM32CubeMX生成的MDK5工程上添加RT-Thread Nano后双击工程名无法打开.map文件的解决方法

当我们基于STM32CubeMx完成芯片的基础配置&#xff0c;再将RT-Thread Nano添加到工程编译完成之后。双击工程名称发现无法打开工程的.map文件&#xff0c;.map文件是STM32开发中非常重要的一个文件&#xff0c;map文件中详细描述了各个函数在ROM中的存储地址和大小&#xff0c;…

STM32实现USB虚拟串口原理(下)

中断传输应用如主机定期间隔送鼠标读取当前的输入信息&#xff0c;或键盘的输入键值 同步传输应用于音视频等对延迟有严格要求的场合 大容量传输对实时性没有太高要求&#xff0c;对延迟有较大的容忍&#xff0c;且在协议层面并未规定最大的容忍延迟时间&#xff0c;但能从协议…

RT-Thread中堆和栈内存的分配

在嵌入式软件开发中&#xff0c;我们经常会提到堆和栈&#xff0c;实际上堆和栈都是RAM上的物理内存空间&#xff0c;只是使用方式不同而已。栈和堆都是单片机RAM中一段连续的存储空间&#xff0c;该段空间一般在启动文件或链接脚本中指定&#xff0c;最后在C库的_main函数中进…

RT-Thread Nano版本和RT-Thread Master版本的关系

RT-Thread Nano版本和RT-Thread Master版本的关系&#xff1a; RT-Thread Master版本不仅仅是一个实时内核&#xff0c;还包含了丰富的中间层组件。 RT-Thread Nano是RT-Thread Master之上进行剪裁后形成的精简版&#xff0c;去掉了一些组件和各种开发板的BSP&#xff0c;仅保…

VSCODE修改文字编码格式为GB2312和TAB键为2个空格(MDK5和VSCODE联合开发STM32程序)

在MDK5中&#xff0c;代码、变量等的高亮显示或代码自动补全做的不是很好&#xff0c;经常会出现在A函数中有变量的高亮功能&#xff0c;在B函数中就没有了。特别是在RT-Thread创建的多个线程中&#xff0c;发现同一文件中的其它函数中的变量都有同一变量高亮&#xff0c;在RT-…

IP选路

一、IP层工作流程 &#xfffc; 二、 简单路由表 输入netstate -rn&#xff0c;得到如下&#xfffc; 其中flag的标志如下 U 该路由可以使用G 该路由是到一个网管&#xff08;路由器&#xff09;&#xff0c;否则&#xff0c;说明目的地是直接相连的 该标志区分了间接路由和…

[转]微信小程序安全浅析

本文转自&#xff1a;http://blog.csdn.net/baize_security/article/details/54582854 引言 近期微信小程序重磅发布&#xff0c;在互联网界掀起不小的波澜&#xff0c;已有许多公司发布了自己的小程序&#xff0c;涉及不同的行业领域。大家在体验小程序用完即走便利的同时&…

STM32 MDK编译后生成的 .map文件深入分析

.map文件是STM32开发中非常重要的一个文件&#xff0c;在该文件中可以详细的查看单个文件、函数及用户定义的全局变量等的占用RAM和ROM&#xff08;一般为片内FLASH&#xff09;的空间大小&#xff0c;通过了解这些信息可以很方便的进行代码的优化。 在MDK5中&#xff0c;生成…

C#程序的组织结构

C#程序的组织结构&#xff1a; namespace&#xff08;命名空间&#xff09;&#xff1a; C#程序中的一种代码组织形式&#xff0c;主要用来标识类的可见范围。一个namespace中包含了一系列的类&#xff0c;一般一个文件中会使用多个using语句引入多个命名空间。 语法&#xff…

hihocoder1477 闰秒

地址&#xff1a;http://hihocoder.com/problemset/problem/1477 题目&#xff1a; 闰秒 时间限制:10000ms单点时限:1000ms内存限制:256MB描述 计算机系统中使用的UTC时间基于原子钟&#xff0c;这种计时方式同“地球自转一周是24小时”的计时方式有微小的偏差。为了弥补这种偏…

C#命名空间namespace中不能直接包含字段(变量)或方法(函数)之类的成员

C#命名空间即namespace中不能直接包含字段&#xff08;变量&#xff09;或方法&#xff08;函数&#xff09;之类的成员&#xff0c;须将字段或方法放到类class中&#xff0c;否则编译器会报错。 C#命名空间中不能直接定义字段&#xff08;变量&#xff09;&#xff1a; 将val…

Lucene实战之初体验

前言 最早做非结构化数据搜索时用的还是lucene.net&#xff0c;一直说在学习java的同时把lucene这块搞一搞&#xff0c;这拖了2年多了&#xff0c;终于开始搞这块了。 开发环境 idea2016、lucene6.0、jdk1.8 使用lucene准备条件 1、pom.xml 2、测试数据。 我从博客园首页拿了几…

C#中变量(成员变量、局部变量、全局变量)的作用域

不管在任何编程语言中都有变量的定义&#xff0c;变量就像是一个容器&#xff0c;不同的变量会在内存中占据不同大小的内存空间。定义变量后会将分配的地址绑定在这个变量名上&#xff0c;以后对该变量名的操作就是对该内存地上存储内容的操作。 namespace test {class myTest…

Servelt中的ServletContext对象

转载于:https://www.cnblogs.com/yxh-only/p/6548046.html

export function函数传参_从底层看前端(七)—— JavaScript到底有多少种函数?

在上篇文章中我们了解到了执行上下文是什么&#xff0c;也知道了任何语句的执行都会依赖特定的上下文。一旦上下文被切换&#xff0c;整个语句的效果可能都会发生变化。那么&#xff0c;切换上下文的时机就显得非常重要。在JavaScript中&#xff0c;切换上下文最主要的场景就是…

liunx常用命令0

1 开启Linux操作系统&#xff0c;要求以root用户登录GNOME图形界面&#xff0c;语言支持选择为汉语 点击“未列出&#xff1f;”-->输入root和密码 2 使用快捷键切换到虚拟终端2&#xff0c;使用普通用户身份登录&#xff0c;查看系统提示符 ctrlaltf2 3 使用命令退出虚拟终…

2个td合成一个td_18个月16个爆款,合成类玩法的下一个机会在哪?

18个月16个爆款&#xff01;近日&#xff0c;编者体验了近18个月爆款小程序榜单之中的游戏&#xff0c;体验之后编者发现&#xff0c;在这200多款游戏中&#xff0c;有16款都应用了合成类玩法&#xff0c;而且部分游戏是数次登榜&#xff0c;比如枪火工厂、全民养鲲、世界争霸等…