RT-Thread/rt-thread
GitHub: RT-Thread/rt-thread
RT-Thread 是一个开源的物联网实时操作系统,专为资源受限的嵌入式设备设计,支持丰富的组件和软件包生态。
Stars: 11847 | Forks: 5362
**English** | [中文](README_zh.md) | [Español](README_es.md) | [Deutsch](README_de.md)
[](https://github.com/RT-Thread/rt-thread/stargazers)
[](https://gitee.com/rtthread/rt-thread/stargazers)
[](https://github.com/RT-Thread/rt-thread/blob/master/LICENSE)
[](https://github.com/RT-Thread/rt-thread/releases)
[](https://gitter.im/RT-Thread/rt-thread?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://github.com/RT-Thread/rt-thread/pulls)
[](https://github.com/RT-Thread/rt-thread/pulls)
[](https://github.com/RT-Thread/rt-thread/actions/workflows/bsp_buildings.yml)

# RT-Thread
RT-Thread 诞生于 2006 年,是一个开源、中立、社区化的实时操作系统(RTOS)。
RT-Thread 主要使用 C 语言编写,通俗易懂且容易移植(可快速移植到主流 MCU 和模块芯片上)。它将面向对象的编程方法应用于实时系统设计,使得代码风格优雅、结构清晰、模块化且可裁剪性极强。
RT-Thread 分为标准版和 Nano 版。对于资源受限的微控制器(MCU)系统,Nano 版本仅需 3KB Flash 和 1.2KB RAM 内存资源,可通过简单易用的工具进行裁剪。对于资源丰富的物联网设备,RT-Thread 可以使用在线软件包管理工具,配合系统配置工具,实现直观快速的模块化裁剪,无缝导入丰富的软件包,从而实现类似 Android 的图形界面和触摸滑动效果、智能语音交互效果等复杂功能。
## RT-Thread 架构
RT-Thread 不仅拥有实时内核,还拥有丰富的组件。其架构如下所示:

它包括:
- 内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件/板级支持包)与硬件密切相关,由外设驱动和 CPU 移植组成。
- 组件和服务层:组件是基于 RT-Thread 内核的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。其模块化设计实现了组件内部的高内聚和组件之间的低耦合。
- [RT-Thread 软件包](https://packages.rt-thread.org/en/index.html):运行在 RT-Thread IoT 操作系统平台上的通用软件组件,面向不同的应用领域,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,其中包含官方提供或开发者提供的软件包,为开发者提供了可重用软件包的选择,这些软件包是 RT-Thread 生态系统的重要组成部分。软件包生态系统对于操作系统的选择至关重要,因为这些软件包具有高度的可重用性和模块化,便于应用程序开发者在最短的时间内构建所需的系统。RT-Thread 目前支持 450 多个软件包。
## RT-Thread 特性
- 专为资源受限设备设计,最小内核仅需 1.2KB RAM 和 3 KB Flash。
- 多种标准接口,例如 POSIX、CMSIS、C++ 应用环境。
- 拥有丰富的组件和繁荣且快速增长的软件包生态系统。
- 优雅的代码风格,易于使用、阅读和掌握。
- 高可扩展性。RT-Thread 拥有高质量的可扩展软件架构,松耦合、模块化,易于裁剪和扩展。
- 支持高性能应用。
- 支持所有主流编译工具,例如 GCC、Keil 和 IAR。
- 支持广泛的
架构和芯片。
## 代码目录
RT-Thread 源代码目录如下所示:
| 名称 | 描述 |
| ------------- | ------------------------------------------------------- |
| bsp | 基于各种开发板移植的板级支持包 |
| components | 组件,例如 finsh shell、文件系统、协议栈等 |
| documentation | 相关文档,如编码风格、doxygen 等 |
| examples | 相关示例代码 |
| include | RT-Thread 内核头文件 |
| libcpu | CPU 移植代码,如 ARM/MIPS/RISC-V 等 |
| src | RT-Thread 内核源文件 |
| tools | RT-Thread 命令构建工具的脚本文件 |
RT-Thread 目前已移植到近 200 块开发板上,大多数 BSP 支持 MDK、IAR 开发环境和 GCC 编译器,并提供了默认的 MDK 和 IAR 工程,允许用户直接在工程基础上添加自己的应用代码。每个 BSP 都有相似的目录结构,大多数 BSP 都提供 README.md 文件,这是一个 markdown 格式的文件,包含 BSP 的基本介绍,并介绍如何简单地开始使用 BSP。
# 资源
## 支持的架构
RT-Thread 支持多种架构,涵盖了当前应用中的主要架构。涉及的架构和芯片厂商:
- **ARM Cortex-M0/M0+**:厂商如 ST
- **ARM Cortex-M3**:厂商如 ST、Winner Micro、MindMotion 等。
- **ARM Cortex-M4**:厂商如 ST、Infineon、Nuvoton、NXP、[Nordic](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nrf5x)、GigaDevice、Realtek、Ambiq Micro 等。
- **ARM Cortex-M7**:厂商如 ST、NXP
- **ARM Cortex-M23**:厂商如 GigaDevice
- **ARM Cortex-M33**:厂商如 ST
- **ARM Cortex-R4**
- **ARM Cortex-A8/A9**:厂商如 NXP
- **ARM7**:厂商如 Samsung
- **ARM9**:厂商如 Allwinner、Xilinx 、GOKE
- **ARM11**:厂商如 Fullhan
- **MIPS32**:厂商如 loongson、Ingenic
- **RISC-V RV32E/RV32I[F]/RV64[D]**:厂商如 sifive、[Canaan Kendryte](https://github.com/RT-Thread/rt-thread/tree/master/bsp/k210)、[bouffalo_lab](https://github.com/RT-Thread/rt-thread/tree/master/bsp/bouffalo_lab)、[Nuclei](https://nucleisys.com/)、[T-Head](https://www.t-head.cn/)、[HPMicro](https://github.com/RT-Thread/rt-thread/tree/master/bsp/hpmicro)
- **ARC**:厂商如 SYNOPSYS
- **DSP**:厂商如 TI
- **C-Sky**
- **x86**
## 支持的 IDE 和编译器
RT-Thread 主要支持的 IDE/编译器有:
- RT-Thread Studio IDE
- MDK KEIL
- IAR
- GCC
## RT-Thread Studio IDE
[用户手册](https://www.rt-thread.io/document/site/rtthread-studio/um/studio-user-manual/) | [教程视频](https://youtu.be/ucq5eJgZIQg)
RT-Thread Studio IDE(简称 RT-Studio)是由 RT-Thread 团队打造的一站式集成开发环境。它拥有易于使用的图形化配置系统和丰富的软件包及组件资源。RT-Studio 具备项目创建、配置和管理,以及代码编辑、SDK 管理、构建配置、调试配置、程序下载和调试等功能。我们致力于让 RT-Studio 的使用尽可能直观,减少重复工作,提高开发效率。

## Env 工具
[用户手册](documentation/env/env.md) | [教程视频](https://www.youtube.com/watch?v=dEK94o_YoSo)
在早期阶段,RT-Thread 团队还创建了一个名为 Env 的辅助工具。它是一个带有 TUI(文本用户界面)的辅助工具。开发者可以使用 Env 工具来配置并生成 GCC、Keil MDK 和 IAR 工程。

# 快速入门
[RT-Thread 编程指南](https://www.rt-thread.io/document/site/tutorial/quick-start/introduction/introduction/) | [RT-Thread Studio IDE](https://www.rt-thread.io/studio.html) | [内核示例](https://github.com/RT-Thread-packages/kernel-sample) | [RT-Thread 入门指南](https://www.youtube.com/watch?v=ZMi1O-Rr7yc&list=PLXUV89C_M3G5KVw2IerI-pqApdSM_IaZo)
基于 [STM32F103 BluePill](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f103-blue-pill) | [Raspberry Pi Pico](https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pico)
## 模拟器
RT-Thread BSP 可以直接编译并下载到相应的开发板上使用。此外,RT-Thread 还提供了 qemu-vexpress-a9 BSP,可在没有硬件平台的情况下使用。详情请参阅下面的入门指南。使用 Env 的 QEMU 入门:
[Windows](documentation/2.quick-start/quick_start_qemu/quick_start_qemu_windows.md) | [Linux Ubuntu](documentation/2.quick-start/quick_start_qemu/quick_start_qemu_linux.md) | [Mac OS](documentation/2.quick-start/quick_start_qemu/quick_start_qemu_macos.md)
# 许可证
RT-Thread 遵循 Apache License 2.0 开源软件许可证。它完全开源,可免费用于商业应用,无需公开代码,且无潜在商业风险。许可证信息和版权信息通常可在代码开头看到:
```
/* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
* ...
*/
```
# 贡献
如果你对 RT-Thread 感兴趣,并想参与 RT-Thread 的开发成为代码贡献者,请参考 [代码贡献指南](.github/CONTRIBUTING.md)。
## 感谢以下贡献者!
标签:BSP, IoT, IoT OS, MCU, RTOS, RT-Thread, 中间件, 内核, 固件开发, 实时操作系统, 客户端加密, 嵌入式开发, 嵌入式系统, 工业控制, 底层开发, 开源操作系统, 微控制器, 智能家居, 智能硬件, 物联网操作系统, 组件, 网络安全监控, 身份验证强制, 面向对象编程, 驱动开发