RT-Thread 軟體包介紹

2021-02-20 RTThread物聯網作業系統
1、軟體包的目的

軟體包在高級語言中非常常見,很多高級語言都有對應的軟體包平臺,比如 Python 的 PyPi,Ruby 的 Gems 等等。軟體包生態對於一門語言的選擇至關重要,因為這些軟體包具有很強的可重用性,模塊化程度很高,極大的方便應用開發者在最短時間內,打造出自己想要的軟體。

從 工具 的角度去看軟體包,我們很容易聯想到高級動物與低級動物的差別:無外乎就是 使用和製造工具 的熟練程度。這個道理對於我們程式設計師世界也同樣適用,比如高級的程式設計師和初級程式設計師的差距可以歸納為:開發工具和軟體包的熟練程度上,甚至在於是否會 創造 適用面廣的軟體包(圓輪子)或開發工具。

所以,想要成為高級程式設計師就快來使用、創造軟體包吧~

2、軟體包的定義

RT-Thread 軟體包:運行於 RT-Thread 物聯網作業系統平臺上,面向不同應用領域的 通用軟體組件 。軟體包由描述信息,原始碼或庫文件組成。

RT-Thread 同時提供了 開放的 軟體包平臺,這裡存放了官方提供或開發者提供的軟體包。該平臺為開發者提供了眾多可重用軟體包的選擇,這也是 RT-Thread 生態的重要組成部分。

3、軟體包的使用

RT-Thread 為開發者提供的全面的使用教程,詳情如下:

4、軟體包匯總

RT-Thread 已經支持的軟體包數量已經達到 40+。所有軟體包已經按照軟體功能的角度,在 menuconfig 中進行了分類。每個分類下的軟體包都可以在 menuconfig->RT-Thread online packages 菜單裡對應的子菜單下找到。

為了降低大家的上手門檻,每個軟體包在其項目首頁都有詳細的使用說明文檔及示例代碼。

4.1 物聯網相關的軟體包

物聯網(IoT) 是 RT-Thread 當前非常重視一個環節,與其相關的軟體包也非常龐大。你所開發的任何物聯網應用,幾乎都可以在這裡找到對應的軟體包,目前包括如下:

Paho MQTT:基於 Eclipse 開源的 Paho MQTT,對於做了很多功能及性能優化,比如:增加了斷線自動重連功能,採用 pipe 模型,支持非阻塞 API,支持 TLS 加密傳輸等等;

WebClient:簡單易用的 HTTP 客戶端,支持 HTTP GET/POST 等常見請求功能,支持 HTTPS ,斷點續傳等功能;

mongoose:嵌入式 Web 伺服器網絡庫,類似嵌入式世界裡的 Nginx 。授權許可不夠友好,商業需要收費;

WebTerminal:網友 @armink 開發的,可以在瀏覽器訪問 Finsh/MSH Shell 的軟體包,甚至是手機端;

cJSON:超輕量級的 JSON 解析庫;

ljson:網友 @qiaoqidui 開發的 json 到 struct 的解析,輸出庫;

ezXML: XML 文件解析庫,目前還不支持解析 XML 數據;

nanopb:Protocol Buffers 格式數據解析庫,Protocol Buffers 格式比 JSON、XML 格式資源佔用更少;

GAgent:接入機智雲的軟體包;

Marvell WiFi:Marvell WiFi 驅動;

Wiced WiFi:Wiced 接口的 WiFi 驅動;

CoAP:移植 libcoap 的 CoAP 通信軟體包;

nopoll:移植的開源 WebSocket 通信軟體包;

netutils:實用的網絡調試小工具集合,包括:ping、TFTP、iperf、NetIO、NTP、Telnet 等;

OneNet:與中國移動 OneNet 雲對接的軟體包;

4.2 安全相關的軟體包

安全一直是 RT-Thread 非常重視一個領域,尤其是在 RT-Thread 3.0 IoT OS 發布以後。接入網絡的設備對於網絡安全需求更是強烈,主要軟體包:

mbedtls:ARM 公司開源的、可移植的適合嵌入式領域的 SSL 庫,一些物聯網包中的一些加密通信都會依賴它;

libsodium:現代化的、可移植的、易於使用的加密庫,libsodium 的目標是提供構建高層密碼學工具所需的核心算法;

TinyCrypt:輕量級、可配置的加密庫,支持 MD5、base64、AES、SHA1、SHA256 算法;

4.3 腳本語言相關的軟體包

高級語言中的一些特性非常人性化,也很大程度上降低的開發門檻,但一直受限於嵌入式的資源。隨著 MCU 技術的逐步發展,資源也是越來越多了。未來,也許 C 將不在是 MCU 編程的主流選擇。目前 RT-Thread 支持的腳本語言如下:

JerryScript:超輕量級的 JavaScript 引擎;

MicroPython:針對嵌入式領域的 Python 語言實現軟體包。這塊也是 RT-Thread 最近一直在熱推的技術,只要是支持的 RT-Thread 並有一定資源(ROM: 190KB, RAM: 8KB)的開發板,都可以跑 MicroPython 在官網文檔中能找到 RTT 最新出爐的《MicroPython 開發手冊》。MicroPython 現在也被廣泛應用於產品原型驗證、教育、創客 DIY、硬體測試等領域;

4.4 多媒體相關的軟體包

Openmv:基於 MicroPython 的開源的機器視覺庫;

mupdf:網友 @rtoslab 移植的輕量級 PDF, XPS, E-book解析/渲染庫。用 RTT DIY 一個 Kindle 不是夢;

4.5 工具類軟體包

這裡主要是一些輔助開發、調試的實用工具。這些專業化的工具,使用以後能夠很大程度上提高大家的開發效率,節省我們程式設計師的寶貴開發時間。

CmBacktrace:網友 @armink 開源的 ARM Cortex-M 系列 MCU 的 HardFault 錯誤追蹤庫。目前已對 RTT 做了無縫對接,不用在修改任何移植代碼,下載即用;

EasyFlash:網友 @armink 開源的輕量級 Flash 快閃記憶體庫,非常適用於物聯網產品的參數存儲、日誌記錄的場景;

EasyLogger:網友 @armink 開源的超輕量級日誌庫。日誌支持異步輸出模式,各級別日誌格式(包括顏色)可獨立設置,並支持日誌關鍵詞過濾功能。極大的方便的開發者的調試過程。

SystemView:可以實時查看、追蹤、分析 RT-Thread 各線程等資源使用情況,對於性能分析很有幫助。這裡有很多是網友 @ArdaFu 的貢獻;

4.6 系統相關的軟體包

系統類的軟體包,更多的是與作業系統精密聯繫在一起的軟體組件:

RTGUI:RT-Thread GUI 繪圖引擎。RT-Thread 的 Persimmon 柿餅 UI 組件,就依賴於該軟體包;

Persimmon UI:適合嵌入式的,支持手勢識別、滑動特效等類 Android 的 UI 庫;

lwext4:來自網友 @parai 移植的,適合嵌入式的 ext2/3/4 文件系統庫;

partition:一個簡單的適合塊設備的分區管理庫;

SQLite:一個高可靠的、適合嵌入式領域的SQL資料庫引擎。SQLite 也是 Android 內部集成的資料庫,有一定的應用領域;

RT-Thread Insight:簡寫是 RTI ,一個用於 RT-Thread 的探測工具,用來幫助分析系統的內部行為;

LittlevGL2RTT:網友 @liu2guang 移植的 LittlevGl GUI 庫,這是一個最近新出的嵌入式 GUI 庫;

4.7 外設庫和驅動類軟體包4.8 其他的軟體包

Fastlz:一個可移植的、實時的壓縮庫;

miniLZO:一個類 LZO 壓縮庫的小型實時壓縮庫;

QuickLZ:一個號稱是世界上壓縮速度最快的壓縮庫;

MultiButton:由網友 @liu2guang 移植的簡單易用的,基於事件驅動型的按鍵驅動庫,可無限量擴展按鍵;

CanFestival:Canfestival (一個開源的 CANopen 協議棧)在 RT-Thread 系統上的移植,由網友 @gbcwbz 移植。提供了 CANopen 的一些示例,力圖做到開箱即用;

samples:RT-Thread 的示例代碼。這是一個降低新手入門學習門檻的軟體包,裡面從基礎、內核、文件系統、網絡以及驅動這幾個方面,由淺入深,逐個引導大家去上手使用 RT-Thread 。不僅有詳細代碼及注釋,還有完善的文檔。把這個軟體包都學會,就算已經入 RT-Thread 的門了;

hello:這是一個軟體包的模板,如果想要製作軟體包,需要可以借鑑它。

5、軟體包的未來

從去年 9 月 RT-Thread 3.0 發布至今,RT-Thread 官方團隊和我們開發者在半年多的時間裡積累下來 40 多個軟體包足以說明的 RT-Thread 軟體生態的強大。當然我們並沒有滿足於此,未來已經有更多的、更高質量的軟體包在我們開放計劃中了,例如:

軟體包的積累將會是一個量變到質變過程,能夠匯集到更多大家常用的軟體組件。真正做到,底層使用 RT-Thread 作業系統,上層使用搭積木方式開發應用。

當然,距離這個目標還是有一定的距離。RT-Thread 作為國內最為活躍嵌入式開源社區,深刻體會到了開放的心態所能產生的價值。期待更多的人來使用、反饋甚至是創建自己的軟體包。換個角度去想,也許今天你的分享所產生的積累,未來可能會是你解決明天困難的「鑰匙」。

最後,借用一句歌詞:如果人人都貢獻(包括反饋)軟體包,嵌入式將變成美好的明天

相關焦點

  • RT-Thread面向對象編程思路淺析
    (3)封裝使得對象相對獨立,對軟體維護帶來方便這個理解更加簡單,就是降低了程序設計的耦合性,修改或者變更一個功能時,不會引起程序邏輯的混亂。(4)多態性增強了操作的透明性、理解性和可維護性多態性和繼承的結合增強軟體的靈活性和可復用性,由於多態的支持,使得軟體的設計更加靈活,穩定。(5)模塊化要得到可維護性、可復用性與兼容性好的軟體,軟體的系統結構應該是模塊化的。
  • RT-Thread Studio V1.1 新版本發布
    本次V1.1.0不提供升級包,需從官網下載V1.1.0完整版安裝程序。  【官網下載地址】https://www.rt-thread.org/page/studio.html(或點擊文末閱讀原文下載)
  • RT_Thread系統使用總結
    //定義線程控制塊Static struct rt_thread led1_thread;4.    初始化線程線程三要素:線程主體函數,線程棧,線程控制塊,最後通過線程初始化函數rt_thread_init()將這些聯繫起來。
  • RT-Thread教程一之Linux下開發環境及QEMU配置
    RT-Thread原始碼Linux下安裝git後在工程目錄下(比~/Workplace)執行git clone https://github.com/RT-Thread/rt-thread我們看一下樹目錄結構rt-thread
  • 【RT-Thread Studio入門】使用輪詢法檢測按鍵
    = RT_NULL) 3    rt_err = rt_thread_startup(key_thread); 4else 5    rt_kprintf("key thread create failure !!!
  • RT-Thread低功耗組件用戶手冊(1)
    我們這裡使用軟體定時器來完成。我們將創建了一個周期性的軟體定時器,定時器超時函數裡輸出當前的 OS Tick 當前值。為了在休眠模式下,OS Tick 也能正常工作,我們希望進入的休眠模式也有休眠定時器。
  • RT-Thread AT 組件應用筆記 - 客戶端篇
    3.2.1AT Client 配置1.下載RT-Thread 源碼2.下載env 工具3.開啟 env 工具,進入 rt-thread\bsp\stm32f4xx-HAL 目錄,在 env 命令行輸入 menuconfig 進入配置界面配置工程。
  • RT-Thread 自動初始化詳解
    官網文檔提及到了,(他們的文檔在這裡:https://www.rt-thread.org/document/site/programming-manual/basic/basic/#rt-thread_3),但是寫的只是概念層面上的,看完後會使用但原理還是不太清楚。之前研究過,今天把它總結下,寫出來分享。
  • RT-Thread ADC設備學習筆記
    1、實踐需求1.1 硬體配置LED、煙感模塊1.2 軟體需求設備開機,當在串口終端輸入adc_cmd on時,adc數據開始列印,LED燈熄滅,當在串口終端輸入adc_cmd off,adc數據關閉列印,LED燈開始閃爍。本節,我們將會學習到RT-Thread ADC設備的基本使用。接下來,我們將基於RT-Thread Studio來構建。
  • RT-Thread的finsh在nRF52840上的使用
    18.3.1 移植參考    在RT-Thread官網的文檔中有finsh的專門介紹,官網網址為:https://www.rt-thread.org/document/site/。官方finsh介紹如圖18-3所示。【部分文章在公帳號「Bluetooth-BLE」發送"get"就能得到下載連結】
  • RT-Thread移植到nRF52840
    /document/site/submodules/rtthread-manual-doc/README/)以及火哥的《RT-Thread 內核實現與應用開發實戰—基於STM32》(本公眾號後臺回覆:野火RT-Thread 即可下載),本書的重點還是側重藍牙理論和實戰。
  • RT-Thread I2C總線設備學習筆記
    這是RTT官方設計的一個軟體框架,學習一個新東西,還是一樣,我個人主張帶著需求去學習,而不是漫無目的的去學,有了需求驅動,並且是一個努力付出就可以擁有的成果,那麼這還不容易嘛!如何看懂時序圖(以SPI/I2C為例)淺談總線通信機制(通信基礎+串口+I2C)我們接下來將基於小熊派開發平臺進行實踐。
  • RT-Thread傳感器設備驅動框架介紹
    14};15typedef struct rt_sensor_device *rt_sensor_t;Sensor 的信息struct rt_sensor_info info 裡存儲的是一些與 Sensor 自身相關的信息,在 Sensor 設備註冊的時候提供
  • RT-Thread設備框架使用指南——I2C 總線設備
    函數原型如下所示:1rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus,2                          struct rt_i2c_msg         msgs[],3                          rt_uint32_t               num);
  • (4)RT-Thread 多線程學習總結
    關於多線程的使用和管理,RT-Thread官方提供了比較豐富的文檔作為參考,具體內容可以查看以下連結:https://www.rt-thread.org/document/site/programming-manual/thread/thread/本文是對RT-Thread多線程學習後的總結,並嘗試從如圖所示的以下幾個方面進行總結。
  • 第3期:RT-Thread實戰入門學習營,報名了!看看上期學員怎麼說?
    下面例舉下我因為經驗不足而踩過的坑,希望可以幫到大家:1、GIT 使用不熟悉,Master和Tag版本壓根不知道,只知道clone下來就直接能用,這裡給向和我一起入門的小白提一下,GitHub上直接clone下的項目是master版本的哦,如果項目中實際使用的話建議使用Tag對應的發布版本,相當於這個軟體的正式版
  • RT-Thread Studio V1.0.2 發布,物聯網作業系統一站式開發工具
    RT-Thread Studio 下載地址:https://www.rt-thread.org/page/studio.htm新版亮點:完美暗黑主題最新版Studio還推出了的完美的暗黑主題了,對於習慣於用暗黑主題的粉絲1.0.2版本簡直就是福音了
  • i.MX RT1052晶片的核心板,性能和代碼詳細資料概述
    先介紹介紹RT-Thread物聯網作業系統(以下簡稱rtt),作業系統是輕量級的,利用很小的資源完成實時作業系統的工作。 ,再做rtt的啟動 int rtthread_startup(void) { rt_hw_interrupt_disable(); /* board level initalization * NOTE: please initialize heap inside board initialization.
  • RT-Thread 2.1.0 beta 發布,下一方向:物聯網
    雙核雙系統是一個令人感興趣的方向,所以今年6月份在深圳的嵌入式沙龍上圍繞著雙系統做了一個《Gemini》的主題介紹。目前放出來的Gemini更多說的是SoC的雙核或多核,兩者通過共享內存、VBUS組件的方式進行通信。如果更泛泛些,其實也可以是板載的分離多晶片系統,例如ARM Cortex-A8 + Cortex-M3/4 MCU等。
  • 成立11年裝機量上億,RT-Thread 3.0如何助力物聯網終端開發?
    據介紹,RT-Thread的物聯網作業系統已經得到了國內外晶片廠商和其他合作夥伴的廣泛認同和積極參與,不久前中天微、富瀚微、君正、全志、靈動微、愛普特和華芯微特等企業與睿賽德電子科技籤署了戰略合作協議,將RT-Thread作為其原生作業系統之一,搭配其晶片推向市場。mJCesmc什麼是RT-Thread ?