目录
前言:学习路径:入门学习-》进阶段学习=》应用开发
一、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 操作系统
模拟运行
快速上手
推荐使用 潘多拉开发板 配套使用 潘多拉开发板教程,或者以下主流的学习板进行学习,不建议没有任何基础就将 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 手册
第三方 RTOS 兼容层
为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植:
三、进阶学习
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 硬件设备驱动程序
3.3 各种应用功能组件
四、应用开发
4.1 应用开发列表
4.2 demo示例
Demo演示和教程 | Sample示例 |
---|---|
基于RT-Thread和i.MX RT1052的开源AutoQuad飞控 | 内核示例代码 |
基于RT-Thread的开源飞控StarryPilot | 设备示例代码 |
基于RT-Thread的人体健康监测系统 | 文件系统示例代码 |
基于RT-Thread的激光雷达避障小车 | 网络示例代码 |
基于RT-Thread的蓝牙遥控平衡小车 | |
蜂鸣器播放器 | |
分布式温度监控系统 | |
智能车教程 |