RT-Thread学习——简介

news2024/11/20 23:36:39

简介

RT-Thread是一个实时操作系统,移植到stm32单片机上。

常见的操作系统:

  • Windows、Linux、MAC
  • 安卓、IOS
  • 鸿蒙操作系统

RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台。

RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。

RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。

经过11年的发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子灯多个行业,累积装机量超过8亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具,如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、JavaScript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构。

RTT OS概述

RT-Thread,Real Time-Thread,是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,在RT-Thread系统中,任务通过线程实现的。

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

针对资源受限的微控制器(MCU)系统,可通过方便易用的工具,裁剪出仅需要3KB Flash,1.28KB RAM内存资源的NANO版本。

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

相较于Linux操作系统,RT-Thread体积小,成本低,功耗低,启动快速,实时性高、占用资源小,非常适用于各种资源受限的场合。

RT-Thread架构

近年来,物联网(Internet Of Things,IoT)概念广为普及,物联网市场发展迅猛,嵌入式设备的联网已是大势所趋。
终端物联网使得软件复杂性大幅增加,传统的RTOS内核很难满足需要。
物联网操作系统是指以操作系统内核(可以是RTOS、Linux等)为基础,包括文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread就是一个IoT OS。

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

在这里插入图片描述

RT-Thread分类

标准版本如上图

Nano版本
RT-Thread Nano是一个极简版的硬实时内核,由C语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的RTOS。
其内核资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。

适用于大量使用的32位ARM入门级MCU的场合。

在这里插入图片描述
包含支持的CPU架构与内核源码,还有可拆卸的FinSH组件。

特点
在这里插入图片描述
Smart版本
RT-Thread Smart是基于RT-Thread操作系统衍生的新分支,面向带MMU,中高端应用的芯片,例如ARM Cortex-A系列芯片,MIPS芯片等。

rt-smart在RT-Thread操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。

RT-Thread Smart是基于RT-Thread操作系统上的混合操作系统,简称为rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32位系统上是4G的独立地址空间)。类似于Linux。

在这里插入图片描述
在这里插入图片描述

标准版RTT移植

下载安装RT-Thread_Studio,安装完成后注册并登录后方可创建RTT工程。
在这里插入图片描述

int main(void)
{
	int count = 1;
	while(count++)
	{
		LOG_D("Hello RT-Thread!");
		rt_thread_mdelay(1000);
	}
	return RT_EOK;
}

通过修改board.c的SystemClock_Config()更改系统时钟。
在这里插入图片描述
选择HSE,外接高速晶振比内部RC电路稳定。
在这里插入图片描述
添加FinSH
双击RT-Thread Settings进入配置,打开组件,勾选FinSH Shell,保存配置。此操作把FinSH组件的源码加入工程中。

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

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

相关文章

【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析

Spring Cloud Gateway简介 Spring Cloud Gateway是Spring Cloud体系的第二代网关组件,基于Spring 5.0的新特性WebFlux进行开发,底层网络通信框架使用的是Netty,所以其吞吐量高、性能强劲,未来将会取代第一代的网关组件Zuul。Spri…

【GeoDa实用技巧100例】022:geoda生成空间权重矩阵(邻接矩阵、距离矩阵)

geoda生成空间权重矩阵(邻接矩阵、距离矩阵),车式矩阵、后式矩阵、K邻接矩阵。 文章目录 一、概述二、“车式”邻接的gal文档生成三、“后式”邻接gal文档生成四、k最近邻居gat文档生成五、查看gal和gat文档一、概述 空间权重矩阵(或相应的表格形式)一般需要用计算机软件生…

【音视频处理】转编码H264 to H265,FFmpeg,代码分享讲解

大家好,欢迎来到停止重构的频道。 本期我们讨论音视频文件转编码,如将视频H264转H265等。 内容中所提及的代码都会放在GitHub,感兴趣的小伙伴可以到GitHub下载。 我们按这样的顺序展开讨论:​ 1、 编码的作用 2、 转编码的…

基于 Github 平台的 .NET 开源项目模板. 嘎嘎实用!

简介 大家好,为了使开源项目的维护和管理更方便一些,出于个人需求写了一款开源项目的模板,该模板基于 Github 平台,并使用 .NET 来实现管道功能. 在接受过实战检验后, 于今天开源, 项目地址:GitHub - night-moon-studio/Template 定位 以下5种境地的同学可以继续往下读一读:…

《剑指Offer》模块2 二叉树【15道二叉树帮助你掌握二叉树】

二叉树 二叉树1. 树中两个结点的最低公共祖先方法一:公共路径方法二:递归 2. 重建二叉树根据前序遍历和中序遍历 得到树 补充题:树的遍历 3. 二叉树的下一个节点4. 树的子结构( 递归中调用递归 )5. 二叉树的镜像&#…

解密七夕节快递速度之谜:物流行业的幕后功臣

又是一年七夕,今年爱情总是伴随着太多的不确定性,突然的通知、滞留的快递、延期的演出...在这个特殊的日子里,大多数人都会选择通过网购礼物传递爱意和祝福。在此,快递物流就扮演着至关重要的角色。 在七夕节前后,快递…

解决政务审计大数据传输难题!镭速传输为政务行业提供解决方案

政务行业是国家治理的重要组成部分,涉及到国家安全、社会稳定、民生福祉等方面。随着信息技术的快速发展和革新,政务信息化也迎来了新一轮的升级浪潮。国家相继出台了《国家信息化发展战略纲要》《“十三五”国家信息化规划》《“十四五”推进国家政务信…

新生开学必备攻略|开学必备数码产品清单合集

​新学期将至,有哪些需要准备的东西呢?知道大家都正在为摊开的行李箱发愁,小篇特地整理了一份开学必备的《开学数码产品清单合集》,来抄作业吧,各位! 推荐一:南卡00压蓝牙耳机 不入耳设计&…

Vue2学习笔记のvuex

目录 vuex1.概念2.何时使用?3.搭建vuex环境4.基本使用5.getters的使用6.四个map方法的使用7.模块化命名空间 hello, 本文是Vue2学习笔记的第5篇:vuex。 vuex 1.概念 在Vue中实现集中式状态(数据)管理的一个Vue插件,对…

有些网络通信协议? - 易智编译EaseEditing

网络通信协议是计算机网络中用于实现数据传输和通信的规则和标准。以下是一些常见的网络通信协议: TCP/IP协议: 是互联网的核心协议,包括传输控制协议(TCP)和网际协议(IP)。TCP负责数据的可靠传…

Linux 计算机网络基础概论

一、网络基本概念 1、网络 网络是由若干节点和连接这些结点的链路组成,网络中的结点可以是计算机、交换机、路由器等设备。通俗地说就是把不同的主机连接起来就构成了一个网络,构成网路的目的是为了信息交互、资源共享。 网络设备有:交换机…

数字化浪潮中的稳定之锚:项目敏捷性与灵活性的秘密

引言 在这个日新月异的数字化时代,企业和团队面临着前所未有的挑战。技术的快速发展、客户需求的不断变化以及全球化的竞争环境都要求我们重新思考项目管理的方法。在这样的背景下,敏捷性和灵活性成为了项目成功的关键。 当前数字化时代的挑战与机遇 …

Mimikatz免杀实战:绕过360核晶和defender

文章目录 前言绕过360核晶实现思路完整代码运行测试 绕过WD实现思路MiniDumpWriteDump回调函数加密dump文件 完整代码运行测试 参考文章 前言 通常来说,即使我们成功实现了mimikatz的静态免杀,其抓取hash的行为仍可能会被防病毒软件检测到虽然你可以通过…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十:实体配置功能实现

一、本章内容 本章实现实体配置功能,包括识别实体属性、设置各属性的展示方式、相关类型、要和展示、编辑的内容等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:

与ChatGPT可以经常互动但也不要暴露自己

​ 全球亿万人使用ChatGPT,但这并不意味着你的个人信息数据就可以安全无忧。要特别注意的,而且很多人已经忽视了的:用户最好不要过多地提供有关自己的私密信息,虽然多数情况下你并不知道自己是怎么把信息泄露的。 首先&#xff0…

绝美的古诗词AI作画,惊艳到我了!

前言 时光荏苒,科技的飞速发展催生出了许多令人惊叹的创新成果。近年来,人工智能技术在艺术领域的应用日益引人注目,其中最为引人瞩目的莫过于AI作画。这项技术将传统的古诗词与现代的人工智能相结合,创造出一幅幅令人叹为观止的…

Godot 4.0 文件系统特性的总结

文件的路径和特点(常规知识) 这一部分官方文档讲得比较详细,我这里简单提一下。 Godot会对文件进行组织,从而将它们管理起来,引擎的使用者要访问被管理的文件,需要遵循这样的规定: 使用Godot提供的函数和类访问文件 个人发现常用的有这些: ResourceLoader类、GD.Load()、God…

Jenkins的定时任务配置

jenkins配置定时任务位置(点击日程表的问好可查看语法配置) jenkins的定时任务的参数 # 定时任务参数(每个参数之间使用tab键或空格分隔)MINUTE HOUR DOM MONTH DOW 参数解释取值范围 MINUTE 分钟0-59HOUR小时0-23DOM一月的天数1-31MONTH月份1-12DOW 一周的天数0…

2023.8 - java - StringBuffer 和 StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了 如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & S…

【LeetCode-中等题】438. 找到字符串中所有字母异位词

题目 题解一&#xff1a;暴力排序 依次截取三为排序好的字符串拿出来比较 // 方法一&#xff0c;暴力排序List<Integer> res new ArrayList<Integer>();int n s.length();int k p.length();if (n < k) {return res;}char[] chars p.toCharArray();Arrays.s…