[嵌入式系统-33]:RT-Thread -18- 新手指南:三种不同的版本、三阶段学习路径

news2024/11/19 12:42:48

目录

前言:学习路径:入门学习-》进阶段学习=》应用开发

一、RT-Thread版本

1.1 标准版

1.2 Nano 

1.3 Smart版本

1.4 初学者制定学习路线

1.5 RT-Thread在线文档中心目录结构

1.6 学习和使用RT-Thread的三种场景

二、入门学习阶段:内核原理与编程

1.1 无RTOS经验

模拟运行

快速上手

内核学习

1.2 有RTOS经验

快速上手

编程指南

API 手册

第三方 RTOS 兼容层

三、进阶学习

3.1 开发工具学习

1. Env 工具

2. RT-Thread IDE

3.2 硬件设备驱动程序

3.3 各种应用功能组件

四、应用开发

4.1 应用开发列表

4.2 demo示例

参考:


前言:学习路径:入门学习-》进阶段学习=》应用开发

一、RT-Thread版本

1.1 标准版

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 又能使用在线的软件包管理工具,配合系统配置工具实现直观快速地模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。

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

适用于需要使用 RT-Thread 的丰富功能,如各类外设、物联网组件、软件包等的场景。

标准版本的软件架构如下:

对于 RT-Thread 标准版,它提供了一些内存管理功能,包括动态内存管理、静态内存管理和内存池管理等,但并不直接支持底层硬件的 MMU。RT-Thread 标准版的内存管理主要通过软件实现,并针对不同内存资源进行分配和管理。

1.2 Nano 

RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用 32 位 ARM 入门级 MCU 的场合。

下图是 RT-Thread Nano 的软件框图,其中包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件:

功能线程管理、线程间同步与通信、时钟管理、中断管理、内存管理

RT-Thread Nano 版本是 RT-Thread 的精简版本,专为资源受限的嵌入式应用而设计。RT-Thread Nano 版本通常用于处理器不支持 MMU 或不需要 MMU 功能的场景,因此,RT-Thread Nano 版本不直接支持 MMU。

RT-Thread Nano 版本主要着重于提供基本的实时操作系统功能,如任务调度、时间管理、中断管理和基本的内存管理等,以满足嵌入式系统对实时性和节约资源的要求。由于资源限制,RT-Thread Nano 版本通常不包含复杂的内存管理功能,如虚拟地址空间管理和页面表等。

如果您需要在具有 MMU 功能的平台上使用 RT-Thread,建议考虑使用 RT-Thread 的标准版或 Smart 版本,它们提供了更丰富的内存管理功能,可以适应支持 MMU 的硬件平台。

请注意,在特定的嵌入式系统中,有时可能会对 RT-Thread Nano 版本进行一些定制或修改,以支持特定的需求和硬件平台特征。因此,在某些特殊情况下,可能会将 MMU 支持添加到 RT-Thread Nano 版本中,但这通常需要进行额外的开发和适配工作。

1.3 Smart版本

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

以下是 rt-smart 的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态。

RT-Thread Smart 版本是 RT-Thread 的高级版本,专为高度依赖内存管理单元(MMU)的嵌入式应用而设计。因此,RT-Thread Smart 版本是支持 MMU 的。

RT-Thread Smart 版本通过利用底层处理器的 MMU 功能,提供了更灵活和高级的内存管理能力。它支持虚拟地址空间的管理、地址映射、页面表管理等 MMU 相关功能。

在 RT-Thread Smart 版本中,您可以通过配置和操作内存管理模块来启用和适配 MMU。具体的实现方式和配置方法可能会根据底层处理器的硬件设计和 RT-Thread Smart 版本的特定要求而有所不同。

如果您要在 RT-Thread Smart 版本中启用 MMU,建议参考相关的文档、手册或社区资源,了解具体的配置和使用方法。这些资源可以提供有关在特定硬件平台上启用 MMU 的指南和说明,帮助您更好地理解和使用 RT-Thread Smart 版本上的 MMU 功能。

1.4 初学者制定学习路线

从版本简介中可以看出,Nano 版本 是 标准版本 的极简内核版本Smart 版本 是在 标准版本 上增加了用户态创造而来,所以学习 标准版本 是学习 RT-Thread 的基础

本篇文章以学习 RT-Thread 标准版本 为例,为初学者制定学习路线如下,分为入门学习、进阶学习、应用开发。

1.5 RT-Thread在线文档中心目录结构

如下是 RT-Thread 在线文档中心的主要目录说明:

development-tools:RT-Thread Studio IDE 和开发辅助工具 Env 的文档。

rt-thread-version:RT-Thread 各种版本:标准版本、nano 版本、smart 版本。

    ├─development-tools          # 工具
    │  ├─_sidebar.md                # 侧边导航栏
    │  ├─build-config-system        # 构建相关
    │  ├─env                        # Env 工具
    │  └─rtthread-studio            # Studio IDE
    ├─rt-thread-version          # RT-Thread 各版本
    │  ├─rt-thread-nano             # rt-thread nano 版本
    │  │   └─_sidebar.md            # 侧边导航栏
    │  ├─rt-thread-smart            # rt-thread smart 版本
    │  │   └─_sidebar.md            # 侧边导航栏
    │  └─rt-thread-standard         # rt-thread 标准版本
    │      ├─_sidebar.md            # 侧边导航栏
    │      ├─application-note       # 应用笔记
    │      ├─development-guide      # 开发指南
    │      ├─packages-manual        # 软件包指南
    │      ├─programming-manual     # 编程手册
    │      └─tutorial               # 小项目教程系列
    └─other
       └─novice-guide               # 新手入门

1.6 学习和使用RT-Thread的三种场景

场景1:把RT-Thread移植到的自己的硬件平台上,并编写底层设备驱动(针对部分人员)

场景2:学习操作系统原理,从事操作系统开发(针对少数人)

场景3:基于RT-Thread编写嵌入式应用程序(针对大部分学习RT-Thread的人)

二、入门学习阶段:内核原理与编程

1.1 无RTOS经验

针对人群:有 C 语言、嵌入式基础,想系统学习 RT-Thread 操作系统

模拟运行

Keil MDK 模拟器 STM32F103 体验

快速上手

推荐使用 潘多拉开发板 配套使用 潘多拉开发板教程,或者以下主流的学习板进行学习,不建议没有任何基础就将 RT-Thread 移植到一块开发板上。

  • RT-Thread 潘多拉 STM32L475 上手指南
  • 野火霸道 STM32F103 上手指南
  • 正点原子 nanoSTM32F103 上手指南
  • 野火挑战者 STM32F429 上手指南
  • 正点原子探索者 STM32F407 上手指南
  • 正点原子阿波罗 STM32F429 上手指南
  • 野火 I.MX RT1052 上手指南
  • 正点原子 I.MX RT1052 号令者上手指南
  • RT-Thread HMI-Board 上手指南
  • 其他...
内核学习

内核视频教程

《内核实验手册》

1.2 有RTOS经验

针对人群:学过 FreeRTOS 或 uC/OS, 想把 RT-Thread 使用起来

快速上手

准备一块板子,根据 RT-Thread 支持的板子 BSP 进行 快速上手,或者根据 STM32 系列 BSP 制作教程进行移植。

如果使用 Ubuntu 进行开发,可以参考:在 Ubuntu 下开发 RT-Thread。

编程指南

快速学习内核,参考:《RT-Thread 编程指南》。

API 手册

查看 在线 API 手册 或 下载 API 手册。

第三方 RTOS 兼容层

为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植:

  • uCOS-II操作系统兼容层
  • uCOS-III操作系统兼容层

三、进阶学习

3.1 开发工具学习

1. Env 工具

Env 工具:Env 工具用于对源码功能进行配置或裁剪,可以生成 MDK/IAR/GCC 工程,需要配合 MDK/IAR/GCC 使用,详见 Env 用户手册。

2. RT-Thread IDE

RT-Thread Studio :可以在 Studio 中下载源码包并创建 rt-thread 工程,独立完成开发、编译、下载、调试等功能,并能进行功能裁剪,详见 RT-Thread Studio 用户手册。

3.2 硬件设备驱动程序

IO 设备模型

PIN 设备

UART 设备

UART 设备V2版本

CAN 设备

HWTIMER 设备

I2C 设备

PWM 设备

RTC 设备

SPI 设备

WATCHDOG 设备

SENSOR 设备

3.3 各种应用功能组件

FinSH 控制台

文件系统

netdev 网卡

SAL 套接字抽象层

AT 命令

ulog 日志

utest 测试框架

动态模块

POSIX 接口

电源管理

更多...

四、应用开发

4.1 应用开发列表

应用开发列表应用开发列表
使用 Eclipse 开发 RT-ThreadCmBacktrace应用
使用 VS Code 开发 RT-Thread在STM32 Nucleo 开发板上使用 RW007 WiFi 模块
使用 Env 创建 RT-Thread 项目工程在 STM32L4 上应用 littlefs 文件系统
搭建RT-Thread项目框架在潘多拉上使用 SFUD 操作 Flash
在IoT Board上实现电源管理STM32 通用 Bootloader
网络协议栈驱动移植wireshark 抓取 tls 数据包
在STM32F429上应用网络功能在 STM32 上应用 C++
在STM32F429上应用文件系统STM32 上使用 PWM
FreeModbus 应用笔记STM32 上使用 USB Host 读写 U 盘
应用AT组件连接ESP8266模块QEMU网络视频教程
多线程非阻塞网络编程使用QEMU运行动态模块组件

应用设计参考...

4.2 demo示例

Demo演示和教程Sample示例
基于RT-Thread和i.MX RT1052的开源AutoQuad飞控内核示例代码
基于RT-Thread的开源飞控StarryPilot设备示例代码
基于RT-Thread的人体健康监测系统文件系统示例代码
基于RT-Thread的激光雷达避障小车网络示例代码
基于RT-Thread的蓝牙遥控平衡小车
蜂鸣器播放器
分布式温度监控系统
智能车教程

参考:

新手指导 (rt-thread.org)

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

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

相关文章

Semaphore实现原理全面解析

简介 Semaphore(信号量)是一个同步工具类,通过Semaphore可以控制同时访问共享资源的线程个数。 应用场景 Semaphore的主要应用场景: 资源并发控制:Semaphore可以限制对资源的并发访问。如:管理数据库连…

蛇形矩阵2

题目描述 把数1,2,3,4,5,…,按照“蛇形2”放入N*N矩阵的左三角形中,输出结果。 下面是N6的蛇形2的图示 输入格式 第一行1个正整数:N,范围在[1,100]。 输出格式 N行&a…

HuggingFists系统功能介绍(3)--流程管理

流程管理 下面我们进入流程管理。流程管理用于定义及管理我们采用低代码方式开发的各种ETL以及数据分析流程。 流程列表 界面的左侧部分为流程的分组树,当定义的流程逐渐变多或者多人协同使用系统时,可以通过分组对流程进行更有序的管理。点中分组&#…

C#与VisionPro联合开发——TCP/IP通信

TCP/IP(传输控制协议/互联网协议)是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础,为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中,TCP/IP 通信通常用于实现网络应用程序之间的数据交…

预训练-微调范式在人工智能领域的深远影响

预训练-微调范式的出现是人工智能领域的一大里程碑,它深刻改变了深度学习模型的训练方式和应用模式,并对整个行业产生了多方面的深远影响: 数据效率提升: 通过在大规模无标注数据上进行预训练,模型能够学习到丰富的语言…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208:实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

实战一个 Jenkins 构建 CI/CD流水线 的简单配置过程哈

引言:上一期我们讲述了gitlabCI/CD工具的介绍,工具之争,本期我们介绍Jenkins CI/CD 目录 一、Jenkins介绍 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 二、安装Jenkins 1、安装JDK 2、安装Jenkins 1、上传压缩包 2、…

Python入门必学:单引号、双引号与三引号的差异与应用

Python入门必学:单引号、双引号与三引号的差异与应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得…

神经网络系列---激活函数

文章目录 激活函数Sigmoid 激活函数Tanh激活函数ReLU激活函数Leaky ReLU激活函数Parametric ReLU激活函数 (自适应Leaky ReLU激活函数)ELU激活函数SeLU激活函数Softmax 激活函数Swish 激活函数Maxout激活函数Softplus激活函数 激活函数 一般来说&#xf…

Tomcat线程池原理(上篇:初始化原理)

文章目录 前言正文一、从启动脚本开始分析二、ProtocolHandler 的启动原理三、AbstractEndPoint 的启动原理四、创建默认线程池五、参数配置原理5.1 常规的参数配置5.2 自定义线程池5.3 测试自定义线程 前言 在Java Web的开发过程中,Tomcat常用的web容器。SpringBo…

SpringBoot -【BeanPostProcessor】基础使用及应用场景

BeanPostProcessor应用与优化 1. 引言 在现代软件开发中,企业开发面临着越来越复杂的系统架构和业务需求。随着项目规模的扩大和技术栈的增多,需要更高效的工具来应对这些挑战,并确保代码的可维护性和扩展性。 在这样的背景下,Be…

Linux之项目部署与发布

目录 一、Nginx配置安装(自启动) 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…

随机分布模型

目录 前言 一、离散型随机变量 1.1 0-1分布 1.2 二项分布 1.3 帕斯卡分布 1.4 几何分布 1.5 超几何分布 1.6 泊松分布 二、连续型随机变量 2.1 均匀分布 2.2 指数分布 2.3 高斯分布/正态分布 2.4 分布(抽样分布) 2.5 t分布(抽样…

Vue局部注册组件实现组件化登录注册

Vue局部注册组件实现组件化登录注册 一、效果二、代码1、index.js2、App.vue3、首页4、登录(注册同理) 一、效果 注意我这里使用了element组件 二、代码 1、index.js import Vue from vue import VueRouter from vue-router import Login from ../vie…

迷你世界之建筑生成球体

local x0,y0,z00,30,0--起点坐标 local dx,dy,dz60,60,60--外切长方体横纵竖长度 local count,all0,dx*dy*dz--计数,总数 local m,k10000,0--单次生成方块数,无用循环值 local x,y,z0,0,0--当前坐标 local demath.random(2,19)/2 local id600--方块…

【监督学习之逻辑回归】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱1.什么是逻辑回归?2.逻辑回归有哪些应用?3.回归分析如何工作?4.逻辑回归模型如何工作?5.逻辑回归分析有哪些类型?6.逻辑回归与其他机器学习技术相…

APP攻防-实战拿下某seseAPPSpringboot未授权HeapDump提取OSS利用

知识点 1、APK-抓包 2、资产信息收集 3、SpringBoot-漏洞利用 4、自动化工具 5、HeapDump-分析提取 6、AccessKEY-利用后续 演示案例: 1、APK-抓包 2、资产信息收集 3、SpringBoot-漏洞利用 SpringBoot漏洞利用: https://github.com/LandGrey/Spring…

K8S—集群调度

目录 前言 一 List-Watch 1.1 list-watch概述 1.2 list-watch工作机制 二 集群调度 2.1 调度过程 2.2 Predicate 和 Priorities 的常见算法和优先级选项 2.3 调度方式 三 亲和性 3.1 节点亲和性 3.2 Pod 亲和性 3.3 键值运算关系 3.4 Pod亲和性与反亲和性 3.5 示例…

【小记】简历 Tips

基本信息 真实诚信 教育经历(院校信息)、成绩、在校经历; 公司、项目经历 注意事项 逻辑清晰、重点突出、岗位JD完全吻合; 简洁(一页纸简历、顺序从上到下) 做了什么(时间顺序) 成果…

Escalate_Linux-环境变量劫持提权(5)

环境变量劫持提权 在Shll输入命令时,Shel会按PAH环境变量中的路径依次搜索命令,若是存在同名的命令,则执行最先找到的,若是PATH中加入了当前目录,也就是“”这个符号,则可能会被黑客利用,例如在…