1、軟件包的目的
軟件包在高級(jí)語(yǔ)言中非常常見(jiàn),很多高級(jí)語(yǔ)言都有對(duì)應(yīng)的軟件包平臺(tái),比如 Python 的 PyPi,Ruby 的 Gems 等等。軟件包生態(tài)對(duì)于一門(mén)語(yǔ)言的選擇至關(guān)重要,因?yàn)檫@些軟件包具有很強(qiáng)的可重用性,模塊化程度很高,極大的方便應(yīng)用開(kāi)發(fā)者在最短時(shí)間內(nèi),打造出自己想要的軟件。
從工具的角度去看軟件包,我們很容易聯(lián)想到高級(jí)動(dòng)物與低級(jí)動(dòng)物的差別:無(wú)外乎就是使用和制造工具的熟練程度。這個(gè)道理對(duì)于我們程序員世界也同樣適用,比如高級(jí)的程序員和初級(jí)程序員的差距可以歸納為:開(kāi)發(fā)工具和軟件包的熟練程度上,甚至在于是否會(huì)創(chuàng)造適用面廣的軟件包(圓輪子)或開(kāi)發(fā)工具。
所以,想要成為高級(jí)程序員就快來(lái)使用、創(chuàng)造軟件包吧~
2、軟件包的定義
RT-Thread 軟件包:運(yùn)行于 RT-Thread 物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上,面向不同應(yīng)用領(lǐng)域的通用軟件組件。軟件包由描述信息,源代碼或庫(kù)文件組成。
RT-Thread 同時(shí)提供了開(kāi)放的軟件包平臺(tái),這里存放了官方提供或開(kāi)發(fā)者提供的軟件包。該平臺(tái)為開(kāi)發(fā)者提供了眾多可重用軟件包的選擇,這也是 RT-Thread 生態(tài)的重要組成部分。
3、軟件包的使用
RT-Thread 為開(kāi)發(fā)者提供的全面的使用教程,詳情如下:
入門(mén)文檔教程:位于 RT-Thread 官網(wǎng),文檔->開(kāi)發(fā)指南->env 工具用戶(hù)手冊(cè)
軟件包制作教程:位于 RT-Thread 官網(wǎng),文檔->開(kāi)發(fā)指南->package 開(kāi)發(fā)指南
4、軟件包匯總
RT-Thread 已經(jīng)支持的軟件包數(shù)量已經(jīng)達(dá)到40+。所有軟件包已經(jīng)按照軟件功能的角度,在 menuconfig 中進(jìn)行了分類(lèi)。每個(gè)分類(lèi)下的軟件包都可以在menuconfig->RT-Thread online packages菜單里對(duì)應(yīng)的子菜單下找到。
為了降低大家的上手門(mén)檻,每個(gè)軟件包在其項(xiàng)目首頁(yè)都有詳細(xì)的使用說(shuō)明文檔及示例代碼。
4.1 物聯(lián)網(wǎng)相關(guān)的軟件包
物聯(lián)網(wǎng)(IoT) 是 RT-Thread 當(dāng)前非常重視一個(gè)環(huán)節(jié),與其相關(guān)的軟件包也非常龐大。你所開(kāi)發(fā)的任何物聯(lián)網(wǎng)應(yīng)用,幾乎都可以在這里找到對(duì)應(yīng)的軟件包,目前包括如下:
Paho MQTT:基于 Eclipse 開(kāi)源的 Paho MQTT,對(duì)于做了很多功能及性能優(yōu)化,比如:增加了斷線(xiàn)自動(dòng)重連功能,采用 pipe 模型,支持非阻塞 API,支持 TLS 加密傳輸?shù)鹊龋?/p>
WebClient:簡(jiǎn)單易用的 HTTP 客戶(hù)端,支持 HTTP GET/POST 等常見(jiàn)請(qǐng)求功能,支持 HTTPS ,斷點(diǎn)續(xù)傳等功能;
mongoose:嵌入式 Web 服務(wù)器網(wǎng)絡(luò)庫(kù),類(lèi)似嵌入式世界里的 Nginx 。授權(quán)許可不夠友好,商業(yè)需要收費(fèi);
WebTerminal:網(wǎng)友 @armink 開(kāi)發(fā)的,可以在瀏覽器訪問(wèn) Finsh/MSH Shell 的軟件包,甚至是手機(jī)端;
cJSON:超輕量級(jí)的 JSON 解析庫(kù);
ljson:網(wǎng)友 @qiaoqidui 開(kāi)發(fā)的 json 到 struct 的解析,輸出庫(kù);
ezXML: XML 文件解析庫(kù),目前還不支持解析 XML 數(shù)據(jù);
nanopb:Protocol Buffers 格式數(shù)據(jù)解析庫(kù),Protocol Buffers 格式比 JSON、XML 格式資源占用更少;
GAgent:接入機(jī)智云的軟件包;
Marvell WiFi:Marvell WiFi 驅(qū)動(dòng);
Wiced WiFi:Wiced 接口的 WiFi 驅(qū)動(dòng);
CoAP:移植 libcoap 的 CoAP 通信軟件包;
nopoll:移植的開(kāi)源 WebSocket 通信軟件包;
netutils:實(shí)用的網(wǎng)絡(luò)調(diào)試小工具集合,包括:ping、TFTP、iperf、NetIO、NTP、Telnet 等;
OneNet:與中國(guó)移動(dòng) OneNet 云對(duì)接的軟件包;
4.2 安全相關(guān)的軟件包
安全一直是 RT-Thread 非常重視一個(gè)領(lǐng)域,尤其是在 RT-Thread 3.0 IoT OS 發(fā)布以后。接入網(wǎng)絡(luò)的設(shè)備對(duì)于網(wǎng)絡(luò)安全需求更是強(qiáng)烈,主要軟件包:
mbedtls:ARM 公司開(kāi)源的、可移植的適合嵌入式領(lǐng)域的 SSL 庫(kù),一些物聯(lián)網(wǎng)包中的一些加密通信都會(huì)依賴(lài)它;
libsodium:現(xiàn)代化的、可移植的、易于使用的加密庫(kù),libsodium 的目標(biāo)是提供構(gòu)建高層密碼學(xué)工具所需的核心算法;
TinyCrypt:輕量級(jí)、可配置的加密庫(kù),支持 MD5、base64、AES、SHA1、SHA256 算法;
4.3 腳本語(yǔ)言相關(guān)的軟件包
高級(jí)語(yǔ)言中的一些特性非常人性化,也很大程度上降低的開(kāi)發(fā)門(mén)檻,但一直受限于嵌入式的資源。隨著 MCU 技術(shù)的逐步發(fā)展,資源也是越來(lái)越多了。未來(lái),也許 C 將不在是 MCU 編程的主流選擇。目前 RT-Thread 支持的腳本語(yǔ)言如下:
JerryScript:超輕量級(jí)的 JavaScript 引擎;
MicroPython:針對(duì)嵌入式領(lǐng)域的 Python 語(yǔ)言實(shí)現(xiàn)軟件包。這塊也是 RT-Thread 最近一直在熱推的技術(shù),只要是支持的 RT-Thread 并有一定資源(ROM: 190KB, RAM: 8KB)的開(kāi)發(fā)板,都可以跑 MicroPython 在官網(wǎng)文檔中能找到 RTT 最新出爐的《MicroPython 開(kāi)發(fā)手冊(cè)》。MicroPython 現(xiàn)在也被廣泛應(yīng)用于產(chǎn)品原型驗(yàn)證、教育、創(chuàng)客 DIY、硬件測(cè)試等領(lǐng)域;
4.4 多媒體相關(guān)的軟件包
Openmv:基于 MicroPython 的開(kāi)源的機(jī)器視覺(jué)庫(kù);
mupdf:網(wǎng)友 @rtoslab 移植的輕量級(jí) PDF, XPS, E-book解析/渲染庫(kù)。用 RTT DIY 一個(gè) Kindle 不是夢(mèng);
4.5 工具類(lèi)軟件包
這里主要是一些輔助開(kāi)發(fā)、調(diào)試的實(shí)用工具。這些專(zhuān)業(yè)化的工具,使用以后能夠很大程度上提高大家的開(kāi)發(fā)效率,節(jié)省我們程序員的寶貴開(kāi)發(fā)時(shí)間。
CmBacktrace:網(wǎng)友 @armink 開(kāi)源的 ARM Cortex-M 系列 MCU 的 HardFault 錯(cuò)誤追蹤庫(kù)。目前已對(duì) RTT 做了無(wú)縫對(duì)接,不用在修改任何移植代碼,下載即用;
EasyFlash:網(wǎng)友 @armink 開(kāi)源的輕量級(jí) Flash 閃存庫(kù),非常適用于物聯(lián)網(wǎng)產(chǎn)品的參數(shù)存儲(chǔ)、日志記錄的場(chǎng)景;
EasyLogger:網(wǎng)友 @armink 開(kāi)源的超輕量級(jí)日志庫(kù)。日志支持異步輸出模式,各級(jí)別日志格式(包括顏色)可獨(dú)立設(shè)置,并支持日志關(guān)鍵詞過(guò)濾功能。極大的方便的開(kāi)發(fā)者的調(diào)試過(guò)程。
SystemView:可以實(shí)時(shí)查看、追蹤、分析 RT-Thread 各線(xiàn)程等資源使用情況,對(duì)于性能分析很有幫助。這里有很多是網(wǎng)友 @ArdaFu 的貢獻(xiàn);
4.6 系統(tǒng)相關(guān)的軟件包
系統(tǒng)類(lèi)的軟件包,更多的是與操作系統(tǒng)精密聯(lián)系在一起的軟件組件:
RTGUI:RT-Thread GUI 繪圖引擎。RT-Thread 的 Persimmon 柿餅 UI 組件,就依賴(lài)于該軟件包;
Persimmon UI:適合嵌入式的,支持手勢(shì)識(shí)別、滑動(dòng)特效等類(lèi) Android 的 UI 庫(kù);
lwext4:來(lái)自網(wǎng)友 @parai 移植的,適合嵌入式的 ext2/3/4 文件系統(tǒng)庫(kù);
partition:一個(gè)簡(jiǎn)單的適合塊設(shè)備的分區(qū)管理庫(kù);
SQLite:一個(gè)高可靠的、適合嵌入式領(lǐng)域的SQL數(shù)據(jù)庫(kù)引擎。SQLite 也是 Android 內(nèi)部集成的數(shù)據(jù)庫(kù),有一定的應(yīng)用領(lǐng)域;
RT-Thread Insight:簡(jiǎn)寫(xiě)是 RTI ,一個(gè)用于 RT-Thread 的探測(cè)工具,用來(lái)幫助分析系統(tǒng)的內(nèi)部行為;
LittlevGL2RTT:網(wǎng)友 @liu2guang 移植的 LittlevGl GUI 庫(kù),這是一個(gè)最近新出的嵌入式 GUI 庫(kù);
4.7 外設(shè)庫(kù)和驅(qū)動(dòng)類(lèi)軟件包
STM32F4_HAL:STM32 F4 系列的 HAL 固件函數(shù)庫(kù);
STM32F4_Drivers:STM32 F4 系列的 標(biāo)準(zhǔn) 固件函數(shù)庫(kù);
4.8 其他的軟件包
Fastlz:一個(gè)可移植的、實(shí)時(shí)的壓縮庫(kù);
miniLZO:一個(gè)類(lèi) LZO 壓縮庫(kù)的小型實(shí)時(shí)壓縮庫(kù);
QuickLZ:一個(gè)號(hào)稱(chēng)是世界上壓縮速度最快的壓縮庫(kù);
MultiButton:由網(wǎng)友 @liu2guang 移植的簡(jiǎn)單易用的,基于事件驅(qū)動(dòng)型的按鍵驅(qū)動(dòng)庫(kù),可無(wú)限量擴(kuò)展按鍵;
CanFestival:Canfestival (一個(gè)開(kāi)源的 CANopen 協(xié)議棧)在 RT-Thread 系統(tǒng)上的移植,由網(wǎng)友 @gbcwbz 移植。提供了 CANopen 的一些示例,力圖做到開(kāi)箱即用;
samples:RT-Thread 的示例代碼。這是一個(gè)降低新手入門(mén)學(xué)習(xí)門(mén)檻的軟件包,里面從基礎(chǔ)、內(nèi)核、文件系統(tǒng)、網(wǎng)絡(luò)以及驅(qū)動(dòng)這幾個(gè)方面,由淺入深,逐個(gè)引導(dǎo)大家去上手使用 RT-Thread 。不僅有詳細(xì)代碼及注釋?zhuān)€有完善的文檔。把這個(gè)軟件包都學(xué)會(huì),就算已經(jīng)入 RT-Thread 的門(mén)了;
hello:這是一個(gè)軟件包的模板,如果想要制作軟件包,需要可以借鑒它。
5、軟件包的未來(lái)
從去年 9 月 RT-Thread 3.0 發(fā)布至今,RT-Thread 官方團(tuán)隊(duì)和我們開(kāi)發(fā)者在半年多的時(shí)間里積累下來(lái) 40 多個(gè)軟件包足以說(shuō)明的 RT-Thread 軟件生態(tài)的強(qiáng)大。當(dāng)然我們并沒(méi)有滿(mǎn)足于此,未來(lái)已經(jīng)有更多的、更高質(zhì)量的軟件包在我們開(kāi)放計(jì)劃中了,例如:
AT 命令庫(kù):同時(shí)支持 AT 服務(wù)器及客戶(hù)端,提供 CLI 命令行交互調(diào)試模式,自動(dòng)檢測(cè)參數(shù)格式等等實(shí)用功能。已經(jīng)進(jìn)入發(fā)布倒計(jì)時(shí);
低功耗框架:超低功耗設(shè)計(jì)、系統(tǒng)自動(dòng)休眠,動(dòng)態(tài)調(diào)頻調(diào)壓,應(yīng)用不需要關(guān)心低功耗狀態(tài);
軟件包的積累將會(huì)是一個(gè)量變到質(zhì)變過(guò)程,能夠匯集到更多大家常用的軟件組件。真正做到,底層使用 RT-Thread 操作系統(tǒng),上層使用搭積木方式開(kāi)發(fā)應(yīng)用。
當(dāng)然,距離這個(gè)目標(biāo)還是有一定的距離。RT-Thread 作為國(guó)內(nèi)最為活躍嵌入式開(kāi)源社區(qū),深刻體會(huì)到了開(kāi)放的心態(tài)所能產(chǎn)生的價(jià)值。期待更多的人來(lái)使用、反饋甚至是創(chuàng)建自己的軟件包。換個(gè)角度去想,也許今天你的分享所產(chǎn)生的積累,未來(lái)可能會(huì)是你解決明天困難的“鑰匙”。
最后,借用一句歌詞:如果人人都貢獻(xiàn)(包括反饋)軟件包,嵌入式將變成美好的明天
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372753 -
軟件包
+關(guān)注
關(guān)注
0文章
104瀏覽量
11590 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1285瀏覽量
40079
原文標(biāo)題:RT-Thread 軟件包介紹
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論