2 初识RT-Thread

官方:RT-Thread 简介
主要参考—>官方Nano:Nano 简介与下载 (rt-thread.org)
野火-火哥: — 野火]RT-Thread内核实现与应用开发实战——基于STM32 文档 (embedfire.com)

1.初识RT-Thread

作为一名 RTOS 的初学者,也许你对 RT-Thread 还比较陌生。然而,随着你的深入接触,你会逐渐发现 RT-Thread 的魅力和它相较于其他同类型 RTOS 的种种优越之处。

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

1.1 版权

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

这里说到的开源,指的是你可以免费得获取到RT-Thread的源代码,且当你的 产品使用了RT-Thread且没有修改RT-Thread内核源码的时候,你的产品的全 部代码都可以闭源,不用开源,但是当你修改了RT-Thread内核源码的时候,就 必须将修改的这部分开源,反馈给社区,其它应用部分不用开源。

大家积极去Star鸭,支持一下国产RTOS。

Github:RT-Thread/rt-thread: RT-Thread is an open source IoT operating system. (github.com)

Gitee:rt-thread: RT-Thread是一个来自中国的开源物联网操作系统,它提供了非常强的可伸缩能力:从一个可以运行在ARM Cortex-M0芯片上的极小内核,到中等的ARM Cortex-M3/4/7系统,甚至是多核,64位的ARM Cortex-A,MIPS32/64处理器的功能丰富系统 (gitee.com)

1.2 架构

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

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

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

2 初识RT-Thread_第1张图片

2. RT-Thread Nano

2.1 简介

T-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。

其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。

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

2 初识RT-Thread_第2张图片

支持架构:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。

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

资源占用小:对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右。

2.2 特点

1、下载简单

RT-Thread Nano 以软件包的方式集成在 Keil MDK 与 CubeMX 中,可以直接在软件中下载 Nano 软件包获取源码,获取方式详见 基于 Keil MDK 移植 RT-Thread Nano 与 基于 CubeMX 移植 RT-Thread Nano 。

同时也提供 下载 Nano 源码压缩包 的途径,方便在其他开发环境移植 RT-Thread Nano,如 基于 IAR 移植 RT-Thread Nano。

2、代码简单

与 RT-Thread 完整版不同的是,Nano 不含 Scons 构建系统,不需要 Kconfig 以及 Env 配置工具,也去除了完整版特有的 device 框架和组件,仅是一个纯净的内核。

3、移植简单

由于 Nano 的极简特性,使 Nano 的移植过程变得极为简单。添加 Nano 源码到工程,就已完成 90% 的移植工作。

在 Keil MDK 与 Cube MX 中还提供了 Nano 的软件包,可以一键下载加入到工程。另外,在 RT-Thread Studio 中可以基于 Nano 创建工程直接使用。以下是使用不同开发环境时,可以选择移植或使用 Nano 的方法:

  • 在 RT-Thread Studio 上使用 RT-Thread Nano
  • 基于 KEIL MDK 移植 RT-Thread Nano
  • 基于 CubeMX 移植 RT-Thread Nano

4、使用简单

RT-Thread Nano 在使用上也非常简单,带给开发者友好的开发体验。

  • 易裁剪:Nano 的配置文件为 rtconfig.h,该文件中列出了内核中的所有宏定义,有些默认没有打开,如需使用,打开即可。具体的配置可见 Nano 版块的 RT-Thread Nano 配置 教程。

  • 易添加 FinSH 组件:FinSH 组件 可以很方便的在 Nano 上进行移植,而不再依赖 device 框架,只需要对接两个必要的函数即可完成 FinSH 移植。

  • 自选驱动库:可以使用厂商提供的固件驱动库,如 ST 的 STD 库、HAL 库、LL 库等,可以自行选择。

  • 完善的文档:包含 内核基础、线程管理 (例程)、时钟管理 (例程)、线程间同步 (例程)、线程间通信 (例程)、内存管理 (例程)、中断管理,以及 Nano 版块的移植教程。

3.环境搭建

细节在这里 — 野火]RT-Thread内核实现与应用开发实战——基于STM32 文档 (embedfire.com)

目前所有资源如果写好的话会放在专栏的导航页里面。

3.1 创建本地工程文件夹

文件夹作用表:

文件夹名称 文件夹 文件夹作用
Doc 用于存放对整个工程的说明文件,如readme.txt。 通常情况下,我们都要对整个工程实现的功能, 如何编译,如何使用等做一个简要的说明。
Project 用于存放新建的工程文件。
rtthread/3.0.3 bsp 存放板级支持包,暂时为空。
components/finsh 存放RT-Thread组件,暂时未空。
include 存放头文件,暂时为空。
include/libc
libcpu/arm/cortex-m0 存放与处理器相关的接口文件,暂时为空。
libcpu/arm/cortex-m3
libcpu/arm/cortex-m4
libcpu/arm/cortex-m7
src 存放RT-Thread内核源码,暂时为空。
User 存放main.c和其它的用户编写的程序,main.c第一次使用需要用户自行新建。

2 初识RT-Thread_第3张图片

3.2 使用Keil创建工程、添加文件

2 初识RT-Thread_第4张图片

你可能感兴趣的:(RT-Thread-内核篇,物联网,单片机,stm32)