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