当前位置:首页 > 技术学院 > 技术解析
[导读]RT-Thread 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2)。实时线程操作系统不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈,libc接口,图形用户界面等。

RT-Thread 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2)。实时线程操作系统不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈,libc接口,图形用户界面等。

作为一名 RTOS 的初学者,也许你对 RT-Thread 还比较陌生。然而,随着你的深入接触,你会逐渐发现 RT-Thread 的魅力和它相较于其他同类型 RTOS 的种种优越之处。RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过近 12 个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富的物联网操作系统。

1、RT-Thread 操作系统有哪些优势?

无论是stm32和51单片机工程师转过来学习操作系统都需一个认识的过程的,RT-thread是一个轻量级的操作系统,很小,但是也是一个操作系统。主要优势有这些:

跨芯片平台:支持所有主流微控制器,解决设备碎片化问题。

实时操作系统内核:完全自主开发,硬实时,精致,高效,高度可定制。

云端一体化:设备端和云端一体化设计,轻松接入各类主流物联网设备云平台。

超低功耗设计:最大限度的降低系统功耗,针对不同应用场景,采用自动功耗控制策略。

快速启动:上电即启动,毫秒级启动时间,真正零等待开机。

安全性设计:层次化的系统安全架构,提供各类安全机制,保障应用和系统安全。

智能AI引擎:集成音频,图像相关的各类算法和智能引擎。

开放平台:独立第三方开放平台,支持各类,第三方软件包和SDK,扩展系统功能

开发者说,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 系统完全开源,3.1.0 及以前的版本遵循 GPL V2 + 开源许可协议。从 3.1.0 以后的版本遵循 Apache License 2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码。

2、RT-Thread 的架构

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

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

它具体包括以下部分:

内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。

组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。

RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:

物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。脚本语言相关的软件包:目前支持 JerryScript、MicroPython。多媒体相关的软件包:Openmv、mupdf。工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。外设库与驱动类软件包:RealTek RTL8710BN SDK。

3、为什么要学习RT-Thread?

当然,RTOS不仅此而已,除了实时,从本质上来说,它还是一款操作系统。因此在厂商的“精心呵护”之下,普遍来说RTOS都拥有着极小的体积、极低的功耗和快速的启动速度,提供非常丰富的组件、工具链和社区。在物联网爆发式发展下,RTOS是必备的。为何这么说?如果没有RTOS,设备便是处于“裸奔”的状态,这样的状态性能是无法最大化利用的。而反观招聘网站,RTOS几乎成了“必修课”。

所以在物联网的爆发兴起下,嵌入式工程师掌握使用1-2种RTOS作为知识储备是很有必要,说不定哪一天项目中就会使用到了。同时,一些著名的嵌入式专家也给出建议学习RTOS的观点,因为目前来说,使用RTOS的人和场景也越来越多了。

4、如何选择合适的 RT-Thread 版本进行开发?

RT-Thread 是以 Apache License v2 开源许可发布的物联网操作系统。RT-Thread 有十多年的历史,在开发过程中也放在 Github 上由大家协同开发,并发布一个个版本,导致了不同人群面对多样的版本无从下手,此文档将说明如何选择一个合适自己的版本进行开发。

RT-Thread 的版本 / 分支有以下几种可供选择:

开发分支(master 主分支)、长期支持分支(lts-v3.1.x 分支)、发布版本(release),推荐用户使用已发布的版本。

RT-Thread 分支与版本介绍

分支情况:迄今为止,RT-Thread 已经存在的分支有:stable-v1.2.x(已不维护)stable-v2.0.x(已不维护)stable-v2.1.x(已不维护)stable-v3.0.x(已不维护)lts-v3.1.x(长期支持、维护)master(master 主分支是 RT-Thread 开发分支,一直活跃)

当有较大的版本变化时(如 3.0.x 更新为 3.1.x,或者是主版本变化时),此时会在 master 分支上建立一个新分支对旧版本进行维护。版本发布:RT-Thread 已发布版本众多,如 3.1.1、3.1.2、4.0.0 发布版等等。新版本是基于 master 主分支或者基于正在维护的分支进行发布的。例如长期支持分支 lts-v3.1.x,最新发布版是 3.1.2,之后还可能会发布 3.1.3、3.1.4、... 等版本,但是该分支上不会发布 3.2.x 版本。例如当前 master 分支的版本是 4.0.1,最新发布版本是 4.0.0,之后也可能会发布 4.0.1、4.0.2、... 等版本。若待到有较大版本变化时,比如发布 4.1.0 时,此时就会建立 4.0.x 分支,对 4.0.x 进行维护。

开发分支(GitHub master 主分支)

开发分支是 RT-Thread 团队在开发中过程中提交的代码的分支,位于 GitHub master 分支。该分支会一直更新迭代、优化功能,并且更新频率非常高。做产品 / 项目:开发中的分支不稳定,不适合做产品或者用于项目中。学习 / 研究:由于更新速度快,适合有较多经验的 RT-Thread 开发者研究尝鲜。代码贡献:可以提交代码或者修补 Bug,欢迎广大开发者 为 RT-Thread 贡献代码,成为 RT-Thread 贡献者

长期支持分支(GitHub lts-v3.1.x 分支)

长期支持分支位于 GitHub lts-v3.1.x 分支,是 3.1.x 版本的维护分支,主要在于修复 Bug 以及 BSP 的更新。由于从 4.0.0 开始,增加了较多特性,如 SMP、lwp等,对于 3.1.x 来说有非常大的变化,所以对 3.1.x 会做长期的支持。做产品 / 项目:开发中的分支不稳定,不适合做产品或者用于项目中学习 / 研究:适合有较多经验的 RT-Thread 开发者

不过,RT-Thread 虽然坐拥诸多优点,但也并非一把“万能钥匙”,任意场景都“一股脑”使用。虽然的确在物流网兴起下,RT-Thread 的应用越来越多,但许多工程师动不动就给项目给出使用RT-Thread 的方案,这在设计中是很大的一个误区。一般来说,是否使用RT-Thread 取决于任务的数量和复杂程度。从方案来说,问题简单化才是一切的核心。

【更多关于RT-Thread 操作系统相关阅读】

RT-Thread 移植到 STM32

基于RT_Thread连接中国移动onenet平台的RGB三色灯项目原理图

RT-Thread常见函数

RT-Thread移植到STM32F1步骤

我毕业设计制作的FPV机器人系统采用(openwrt+rt_thread)

请问大家有用GD32F303移植过RT_Thread或FreeRTOS吗

STM32F107移植RT_THREAD问题

新唐单片机与RT_Thread

RT_Thread在LPC2378上的移植与应用

gd32f103 RT_THREAD系统挂起和恢复线程,挂起可以,恢复不行

领导让我找个国产的操作系统,大家帮我比比哪家强

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式开发中,面对的都是单个CPU的情况,而在这个开发过程中,我们会涉及到裸机开发或者是跑操作系统的开发,在裸机开发的过程中,整个系统是以模块的角度来看的,也就是系统在运行完了这个模块之后,再去运行另外一个模块。但在有...

关键字: 嵌入式 rtos

  全球嵌入式及行动应用软体厂商美商温瑞尔(Wind River)近日宣布,Ubee-AirWALK公司以VxWorks即时操作系统为基础,建构其CDMA网路最新企业级微蜂巢式(Femtocel

关键字: rtos 微蜂窝 无线基地台

  • VirtualizaTIon Profile for VxWorks 把实时嵌入式Type 1 hypervisor集成到RTOS内核中。   • 提供安全、

关键字: rtos 物联网 美国风河系统公司

  为支持最小尺寸的物联网设备,Linux 基金会发布了 Zephyr物联网操作系统,旨在为物联网设备创建一个开源的实时操作系统 (RTOS)。Linux 基金会执行董事 Jim Zemlin

关键字: Linux rtos zephyr 物联网

2017年7月3日,国内领先的自主物联网操作系统平台RT-Thread暨上海睿赛德电子科技公司宣布:公司获得华强聚丰和思必驰基金的近千万人民币天使轮投资。新的投资将用于扩张研发团队,优化物联网操

关键字: rtthread 华强聚丰 思必驰

11年前,熊谱翔最初源于对当时小型RTOS现状的诸多不满,萌发了设计一款精致而优雅的操作系统的的念头,11年后,RT-Thread 致力打造成为国内首选的,联网终端装机容量超亿台的IoT OS。

关键字: IoT os rtthread 芯片

通过观察近年来招聘网站的招聘信息,嵌入式工程师的要求中总会多出一条“掌握至少1-2种RTOS”,网友头上也经常“有许多问号”表示,到底有没有必要学RTOS?

关键字: rt-thread rtos 嵌入式 技术专访

什么是调制解调器技术?它的作用是什么?西门子旗下业务Mentor近日宣布,全球领先的无晶圆厂半导体公司联发科技(MediaTek)已选用 Nucleus™ RTOS 平台的 ReadyStart™ 版本来开发其下一代调制...

关键字: nucleus rtos 联发科技 解调器

新闻要点-VxWorks是支持RISC-V架构且部署最为广泛的商业化RTOS-借力最新开源硬件指令集架构,风河持续增强在RTOS业界的领先地位-风河同时加入了RISC-V基金会领先的智能边缘软件提供商风河®近日宣...

关键字: risc-v rtos VxWorks 风河

​北京,2019年12月13日–横跨多重电子应用领域的全球领先的半导体供应商意法半导体与世界领先的欧洲可认证嵌入式实时操作系统(RTOS)开发公司SYSGO,将在美国内华达州拉斯维加斯CES 2020消费电子展(2020...

关键字: rtos 车联网 telemaco3p
关闭
关闭