RT_Thread好用嗎? RT_Thread成國內(nèi)最成熟開源RTOS?
RT-Thread 是一款主要由中國開源社區(qū)主導(dǎo)開發(fā)的開源實時操作系統(tǒng)(許可證GPLv2)。實時線程操作系統(tǒng)不僅僅是一個單一的實時操作系統(tǒng)內(nèi)核,它也是一個完整的應(yīng)用系統(tǒng),包含了實時、嵌入式系統(tǒng)相關(guān)的各個組件:TCP/IP協(xié)議棧,libc接口,圖形用戶界面等。
作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS 的種種優(yōu)越之處。RT-Thread 是一款完全由國內(nèi)團隊開發(fā)維護的嵌入式實時操作系統(tǒng)(RTOS),具有完全的自主知識產(chǎn)權(quán)。經(jīng)過近 12 個年頭的沉淀,伴隨著物聯(lián)網(wǎng)的興起,它正演變成一個功能強大、組件豐富的物聯(lián)網(wǎng)操作系統(tǒng)。
1、RT-Thread 操作系統(tǒng)有哪些優(yōu)勢?
無論是stm32和51單片機工程師轉(zhuǎn)過來學習操作系統(tǒng)都需一個認識的過程的,RT-thread是一個輕量級的操作系統(tǒng),很小,但是也是一個操作系統(tǒng)。主要優(yōu)勢有這些:
跨芯片平臺:支持所有主流微控制器,解決設(shè)備碎片化問題。
實時操作系統(tǒng)內(nèi)核:完全自主開發(fā),硬實時,精致,高效,高度可定制。
云端一體化:設(shè)備端和云端一體化設(shè)計,輕松接入各類主流物聯(lián)網(wǎng)設(shè)備云平臺。
超低功耗設(shè)計:最大限度的降低系統(tǒng)功耗,針對不同應(yīng)用場景,采用自動功耗控制策略。
快速啟動:上電即啟動,毫秒級啟動時間,真正零等待開機。
安全性設(shè)計:層次化的系統(tǒng)安全架構(gòu),提供各類安全機制,保障應(yīng)用和系統(tǒng)安全。
智能AI引擎:集成音頻,圖像相關(guān)的各類算法和智能引擎。
開放平臺:獨立第三方開放平臺,支持各類,第三方軟件包和SDK,擴展系統(tǒng)功能
開發(fā)者說,RT-Thread是最簡潔,優(yōu)雅的開源操作系統(tǒng)之一,簡單易用。
RT-Thread 主要采用 C 語言編寫,淺顯易懂,方便移植。它把面向?qū)ο蟮脑O(shè)計方法應(yīng)用到實時系統(tǒng)設(shè)計中,使得代碼風格優(yōu)雅、架構(gòu)清晰、系統(tǒng)模塊化并且可裁剪性非常好。針對資源受限的微控制器(MCU)系統(tǒng),可通過方便易用的工具,裁剪出僅需要 3KB Flash、1.2KB RAM 內(nèi)存資源的 NANO 版本(NANO 是 RT-Thread 官方于 2017 年 7 月份發(fā)布的一個極簡版內(nèi)核);而對于資源豐富的物聯(lián)網(wǎng)設(shè)備,RT-Thread 又能使用在線的軟件包管理工具,配合系統(tǒng)配置工具實現(xiàn)直觀快速的模塊化裁剪,無縫地導(dǎo)入豐富的軟件功能包,實現(xiàn)類似 Android 的圖形界面及觸摸滑動效果、智能語音交互效果等復(fù)雜功能。
相較于 Linux 操作系統(tǒng),RT-Thread 體積小,成本低,功耗低、啟動快速,除此以外 RT-Thread 還具有實時性高、占用資源小等特點,非常適用于各種資源受限(如成本、功耗限制等)的場合。雖然 32 位 MCU 是它的主要運行平臺,實際上很多帶有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列級別 CPU 的應(yīng)用處理器在特定應(yīng)用場合也適合使用 RT-Thread。
RT-Thread 系統(tǒng)完全開源,3.1.0 及以前的版本遵循 GPL V2 + 開源許可協(xié)議。從 3.1.0 以后的版本遵循 Apache License 2.0 開源許可協(xié)議,可以免費在商業(yè)產(chǎn)品中使用,并且不需要公開私有代碼。
2、RT-Thread 的架構(gòu)
近年來,物聯(lián)網(wǎng)(Internet Of Things,IoT)概念廣為普及,物聯(lián)網(wǎng)市場發(fā)展迅猛,嵌入式設(shè)備的聯(lián)網(wǎng)已是大勢所趨。終端聯(lián)網(wǎng)使得軟件復(fù)雜性大幅增加,傳統(tǒng)的 RTOS 內(nèi)核已經(jīng)越來越難滿足市場的需求,在這種情況下,物聯(lián)網(wǎng)操作系統(tǒng)(IoT OS)的概念應(yīng)運而生。物聯(lián)網(wǎng)操作系統(tǒng)是指以操作系統(tǒng)內(nèi)核(可以是 RTOS、Linux 等)為基礎(chǔ),包括如文件系統(tǒng)、圖形庫等較為完整的中間件組件,具備低功耗、安全、通信協(xié)議支持和云端連接能力的軟件平臺,RT-Thread 就是一個 IoT OS。
RT-Thread 與其他很多 RTOS 如 FreeRTOS、uC/OS 的主要區(qū)別之一是,它不僅僅是一個實時內(nèi)核,還具備豐富的中間層組件,如下圖所示。
它具體包括以下部分:
內(nèi)核層:RT-Thread 內(nèi)核,是 RT-Thread 的核心部分,包括了內(nèi)核系統(tǒng)中對象的實現(xiàn),例如多線程及其調(diào)度、信號量、郵箱、消息隊列、內(nèi)存管理、定時器等;libcpu/BSP(芯片移植相關(guān)文件 / 板級支持包)與硬件密切相關(guān),由外設(shè)驅(qū)動和 CPU 移植構(gòu)成。
組件與服務(wù)層:組件是基于 RT-Thread 內(nèi)核之上的上層軟件,例如虛擬文件系統(tǒng)、FinSH 命令行界面、網(wǎng)絡(luò)框架、設(shè)備框架等。采用模塊化設(shè)計,做到組件內(nèi)部高內(nèi)聚,組件之間低耦合。
RT-Thread 軟件包:運行于 RT-Thread 物聯(lián)網(wǎng)操作系統(tǒng)平臺上,面向不同應(yīng)用領(lǐng)域的通用軟件組件,由描述信息、源代碼或庫文件組成。RT-Thread 提供了開放的軟件包平臺,這里存放了官方提供或開發(fā)者提供的軟件包,該平臺為開發(fā)者提供了眾多可重用軟件包的選擇,這也是 RT-Thread 生態(tài)的重要組成部分。軟件包生態(tài)對于一個操作系統(tǒng)的選擇至關(guān)重要,因為這些軟件包具有很強的可重用性,模塊化程度很高,極大的方便應(yīng)用開發(fā)者在最短時間內(nèi),打造出自己想要的系統(tǒng)。RT-Thread 已經(jīng)支持的軟件包數(shù)量已經(jīng)達到 60+,如下舉例:
物聯(lián)網(wǎng)相關(guān)的軟件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。腳本語言相關(guān)的軟件包:目前支持 JerryScript、MicroPython。多媒體相關(guān)的軟件包:Openmv、mupdf。工具類軟件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。系統(tǒng)相關(guān)的軟件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。外設(shè)庫與驅(qū)動類軟件包:RealTek RTL8710BN SDK。
3、為什么要學習RT-Thread?
當然,RTOS不僅此而已,除了實時,從本質(zhì)上來說,它還是一款操作系統(tǒng)。因此在廠商的“精心呵護”之下,普遍來說RTOS都擁有著極小的體積、極低的功耗和快速的啟動速度,提供非常豐富的組件、工具鏈和社區(qū)。在物聯(lián)網(wǎng)爆發(fā)式發(fā)展下,RTOS是必備的。為何這么說?如果沒有RTOS,設(shè)備便是處于“裸奔”的狀態(tài),這樣的狀態(tài)性能是無法最大化利用的。而反觀招聘網(wǎng)站,RTOS幾乎成了“必修課”。
所以在物聯(lián)網(wǎng)的爆發(fā)興起下,嵌入式工程師掌握使用1-2種RTOS作為知識儲備是很有必要,說不定哪一天項目中就會使用到了。同時,一些著名的嵌入式專家也給出建議學習RTOS的觀點,因為目前來說,使用RTOS的人和場景也越來越多了。
4、如何選擇合適的 RT-Thread 版本進行開發(fā)?
RT-Thread 是以 Apache License v2 開源許可發(fā)布的物聯(lián)網(wǎng)操作系統(tǒng)。RT-Thread 有十多年的歷史,在開發(fā)過程中也放在 Github 上由大家協(xié)同開發(fā),并發(fā)布一個個版本,導(dǎo)致了不同人群面對多樣的版本無從下手,此文檔將說明如何選擇一個合適自己的版本進行開發(fā)。
RT-Thread 的版本 / 分支有以下幾種可供選擇:
開發(fā)分支(master 主分支)、長期支持分支(lts-v3.1.x 分支)、發(fā)布版本(release),推薦用戶使用已發(fā)布的版本。
RT-Thread 分支與版本介紹
分支情況:迄今為止,RT-Thread 已經(jīng)存在的分支有:stable-v1.2.x(已不維護)stable-v2.0.x(已不維護)stable-v2.1.x(已不維護)stable-v3.0.x(已不維護)lts-v3.1.x(長期支持、維護)master(master 主分支是 RT-Thread 開發(fā)分支,一直活躍)
當有較大的版本變化時(如 3.0.x 更新為 3.1.x,或者是主版本變化時),此時會在 master 分支上建立一個新分支對舊版本進行維護。版本發(fā)布:RT-Thread 已發(fā)布版本眾多,如 3.1.1、3.1.2、4.0.0 發(fā)布版等等。新版本是基于 master 主分支或者基于正在維護的分支進行發(fā)布的。例如長期支持分支 lts-v3.1.x,最新發(fā)布版是 3.1.2,之后還可能會發(fā)布 3.1.3、3.1.4、... 等版本,但是該分支上不會發(fā)布 3.2.x 版本。例如當前 master 分支的版本是 4.0.1,最新發(fā)布版本是 4.0.0,之后也可能會發(fā)布 4.0.1、4.0.2、... 等版本。若待到有較大版本變化時,比如發(fā)布 4.1.0 時,此時就會建立 4.0.x 分支,對 4.0.x 進行維護。
開發(fā)分支(GitHub master 主分支)
開發(fā)分支是 RT-Thread 團隊在開發(fā)中過程中提交的代碼的分支,位于 GitHub master 分支。該分支會一直更新迭代、優(yōu)化功能,并且更新頻率非常高。做產(chǎn)品 / 項目:開發(fā)中的分支不穩(wěn)定,不適合做產(chǎn)品或者用于項目中。學習 / 研究:由于更新速度快,適合有較多經(jīng)驗的 RT-Thread 開發(fā)者研究嘗鮮。代碼貢獻:可以提交代碼或者修補 Bug,歡迎廣大開發(fā)者 為 RT-Thread 貢獻代碼,成為 RT-Thread 貢獻者
長期支持分支(GitHub lts-v3.1.x 分支)
長期支持分支位于 GitHub lts-v3.1.x 分支,是 3.1.x 版本的維護分支,主要在于修復(fù) Bug 以及 BSP 的更新。由于從 4.0.0 開始,增加了較多特性,如 SMP、lwp等,對于 3.1.x 來說有非常大的變化,所以對 3.1.x 會做長期的支持。做產(chǎn)品 / 項目:開發(fā)中的分支不穩(wěn)定,不適合做產(chǎn)品或者用于項目中學習 / 研究:適合有較多經(jīng)驗的 RT-Thread 開發(fā)者
不過,RT-Thread 雖然坐擁諸多優(yōu)點,但也并非一把“萬能鑰匙”,任意場景都“一股腦”使用。雖然的確在物流網(wǎng)興起下,RT-Thread 的應(yīng)用越來越多,但許多工程師動不動就給項目給出使用RT-Thread 的方案,這在設(shè)計中是很大的一個誤區(qū)。一般來說,是否使用RT-Thread 取決于任務(wù)的數(shù)量和復(fù)雜程度。從方案來說,問題簡單化才是一切的核心。
【更多關(guān)于RT-Thread 操作系統(tǒng)相關(guān)閱讀】
基于RT_Thread連接中國移動onenet平臺的RGB三色燈項目原理圖
我畢業(yè)設(shè)計制作的FPV機器人系統(tǒng)采用(openwrt+rt_thread)
請問大家有用GD32F303移植過RT_Thread或FreeRTOS嗎
RT_Thread在LPC2378上的移植與應(yīng)用