RT-Thread 簡介
作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS 的種種優越之處。RT-Thread 是一款完全由國內團隊開發維護的嵌入式實時操作系統(RTOS),具有完全的自主知識產權。經過 16 個年頭的沉淀,伴隨著物聯網的興起,它正演變成一個功能強大、組件豐富的物聯網操作系統。
RT-Thread 概述
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 系統完全開源,3.1.0 及以前的版本遵循 GPL V2 + 開源許可協議。從 3.1.0 以后的版本遵循 Apache License 2.0 開源許可協議,可以免費在商業產品中使用,并且不需要公開私有代碼。
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 已經支持的軟件包數量已經達到 400+,如下舉例:
-
物聯網相關的軟件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
-
多媒體相關的軟件包:Openmv、mupdf。
-
工具類軟件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
-
系統相關的軟件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
-
外設庫與驅動類軟件包:RealTek RTL8710BN SDK。
-
其他。
-
嵌入式
+關注
關注
5106文章
19294瀏覽量
310223 -
內核
+關注
關注
3文章
1392瀏覽量
40615 -
RTOS
+關注
關注
23文章
829瀏覽量
120151 -
RT-Thread
+關注
關注
31文章
1321瀏覽量
40845
發布評論請先 登錄
相關推薦
【原創精選】RT-Thread征文精選技術文章合集
RT-Thread編程指南
RT-Thread 應用筆記 - RTC Alarm 組件的使用

RT-Thread 內核學習筆記 - 理解defunct僵尸線程

RT-Thread 內核學習筆記 - 設備模型rt_device的理解

RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解

評論