實(shí)用 – 分享幾個(gè)非常實(shí)用的開源項(xiàng)目(有哪些開源項(xiàng)目)
前言
本次分享幾個(gè)實(shí)用的、值得學(xué)習(xí)使用的嵌入式相關(guān)開源項(xiàng)目,下面列舉的這些基本上都在本公眾號(hào)分享過(guò),詳細(xì)介紹及使用可查看往期筆記。
protobuf
Protocol Buffers,是Google公司開發(fā)的一種數(shù)據(jù)格式,類似于XML能夠?qū)⒔Y(jié)構(gòu)化數(shù)據(jù)序列化,可用于數(shù)據(jù)存儲(chǔ)、通信協(xié)議等方面。它不依賴于語(yǔ)言和平臺(tái)并且可擴(kuò)展性極強(qiáng)。
下載鏈接:
https://github.com/protocolbuffers/protobuf
相關(guān)使用筆記:
protobuf-c在嵌入式Linux平臺(tái)的使用實(shí)例分享
nanomsg
nanomsg是一個(gè)實(shí)現(xiàn)了幾種“可擴(kuò)展協(xié)議”的高性能通信庫(kù);可擴(kuò)展協(xié)議的任務(wù)是定義多個(gè)應(yīng)用系統(tǒng)如何通信,從而組成一個(gè)大的分布式系統(tǒng)。當(dāng)前版本nanomsg支持以下協(xié)議:
- 配對(duì)模式:簡(jiǎn)單的一對(duì)一的通信;
- 總線模式:簡(jiǎn)單的多對(duì)多的通信;
- 請(qǐng)求/回復(fù)模式:支持組建大規(guī)模的集群服務(wù)來(lái)處理用戶請(qǐng)求;
- 扇入模式:支持從多個(gè)源聚合請(qǐng)求消息;
- 扇出模式:支持分配到多個(gè)節(jié)點(diǎn)以支持負(fù)載均衡;
- 調(diào)查模式:允許在一個(gè)單一的請(qǐng)求里檢查多個(gè)應(yīng)用的狀態(tài);
可擴(kuò)展協(xié)議是在網(wǎng)絡(luò)通信協(xié)議之上實(shí)現(xiàn)的,當(dāng)前版本nanomsg支持一下網(wǎng)絡(luò)協(xié)議:
- INPROC:?jiǎn)芜M(jìn)程內(nèi)通信;
- IPC:?jiǎn)螜C(jī)內(nèi)多進(jìn)程的通信;
- TCP:通過(guò)tcp協(xié)議的網(wǎng)絡(luò)通信;
nanomsg用c實(shí)現(xiàn),不依賴系統(tǒng)特性,所以支持多個(gè)操作系統(tǒng)。
下載鏈接:
https://github.com/nanomsg/nanomsg/releases
相關(guān)使用筆記:
實(shí)用 | 一個(gè)高性能通信庫(kù)的簡(jiǎn)單使用分享
mosquitto
mosquitto是一款開源的MQtT消息代理(服務(wù)器)軟件,提供輕量級(jí)的,支持可發(fā)布/可訂閱的的消息推送模式,使設(shè)備對(duì)設(shè)備之間的短消息通信變得簡(jiǎn)單,比如現(xiàn)在應(yīng)用廣泛的低功耗傳感器,手機(jī)、嵌入式計(jì)算機(jī)、微型控制器等移動(dòng)設(shè)備。
下載鏈接:
https://github.com/eclipse/mosquitto
相關(guān)使用筆記:
簡(jiǎn)單認(rèn)識(shí)認(rèn)識(shí)mqtt及mosquitto
cJSON
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。 易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
cJSON是C語(yǔ)言編寫的用于解析與組包JSON數(shù)據(jù)的一個(gè)庫(kù)。
下載鏈接:
https://github.com/DaveGamble/cJSON.git
相關(guān)使用筆記:
例說(shuō)嵌入式實(shí)用知識(shí)之JSON數(shù)據(jù)
「socket應(yīng)用」基于C語(yǔ)言的TCP天氣客戶端的實(shí)現(xiàn)
Unity
Unity 是一個(gè)輕量級(jí)的測(cè)試框架,它使用 C 語(yǔ)言實(shí)現(xiàn), 代碼本身很小 。其代碼中大多數(shù)是宏定義,所以實(shí)際編譯后的代碼會(huì)更小, 比較適合在嵌入式測(cè)試應(yīng)用。
下載鏈接:
https://github.com/ThrowTheSwitch/Unity/releases
相關(guān)使用筆記:
CmBacktrace
CmBacktrace (Cortex Microcontroller Backtrace)是一款針對(duì) ARM Cortex-M 系列 MCU 的錯(cuò)誤代碼自動(dòng)追蹤、定位,錯(cuò)誤原因自動(dòng)分析的開源庫(kù)。主要特性如下:
- 支持的錯(cuò)誤包括:
- 斷言(assert)
- 故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)
- 故障原因 自動(dòng)診斷 :可在故障發(fā)生時(shí),自動(dòng)分析出故障的原因,定位發(fā)生故障的代碼位置,而無(wú)需再手動(dòng)分析繁雜的故障寄存器;
- 適配 Cortex-M0/M3/M4/M7 MCU;
- 支持 IAR、KEIL、GCC 編譯器;
下載鏈接:
https://github.com/armink/CmBacktrace
相關(guān)使用筆記:
ARM Cortex-M 系列 MCU錯(cuò)誤代碼自動(dòng)追蹤庫(kù)的使用分享
GuiLite
GUILite是一個(gè)全平臺(tái)GUI庫(kù)。
輕量: 4千行C 代碼,0依賴,單一頭文件庫(kù)(GuiLite.h)。
超快: 高效渲染,單片機(jī)上也能流暢運(yùn)行。
兼容: 完美兼容第3方GUI框架(Qt/MFC/Winform/Cocoa/Web),現(xiàn)有Qt/MFC代碼可以繼續(xù)使用。
- 支持的操作系統(tǒng):iOS/macOS/WathOS,Android,Linux(ARM/x86-64),Windows(包含VR),RTOS… 甚至無(wú)操作系統(tǒng)的單片機(jī)
- 支持的開發(fā)語(yǔ)言: C/C , Swift, Java, Javascript, C#, Golang…
- 支持的第3方庫(kù):Qt, MFC, Winforms, CoCoa…
下載鏈接:
https://gitee.com/idea4good/GuiLite
相關(guān)使用筆記:
分享一個(gè)基于全平臺(tái)GUI庫(kù)GUILite的簡(jiǎn)易萬(wàn)年歷
LittlevGL
LittlevGL是一個(gè)免費(fèi)的開源圖形庫(kù),提供了創(chuàng)建嵌入式GUI所需的一切,具有易于使用的圖形元素、漂亮的視覺(jué)效果和低內(nèi)存占用。
特點(diǎn):
- 強(qiáng)大的構(gòu)建模組 按鈕、圖表、列表、滑塊、圖像等
- 先進(jìn)的圖形 動(dòng)畫、反鋸齒、半透明、平滑滾動(dòng)
- 多樣的輸入設(shè)備 觸摸板、鼠標(biāo)、鍵盤、編碼器等
- 多顯示器支持 支持同時(shí)使用多個(gè)TFT或單色顯示器
- 多語(yǔ)言支持 UTF-8格式文字編碼
- 完全自定義 圖形元素
- 硬件無(wú)關(guān) 可用于任意微控制器或顯示器
- 可裁剪 用于小內(nèi)存(80 KB FLASH,12 KB RAM)操作
- 操作系統(tǒng)、外部存儲(chǔ)以及GPU 支持但非必須
- 單幀緩存 即可實(shí)現(xiàn)先進(jìn)的圖形效果
- C語(yǔ)言編寫 以最大化兼容(C 兼容)
- 模擬器 無(wú)需嵌入式硬件就可以在電腦上開始GUI設(shè)計(jì)
- 教程、示例、主題 從而快速GUI設(shè)計(jì)
- 文檔 在線及離線
- 免費(fèi)開源 基于MIT協(xié)議
下載鏈接:
https://github.com/lvgl/lvgl
相關(guān)使用筆記:
EasyLogger
EasyLogger是一款超輕量級(jí)(ROM<1.6K, RAM<0.3K)、高性能的C/C 日志庫(kù),非常適合對(duì)資源敏感的軟件項(xiàng)目,例如:IoT產(chǎn)品、可穿戴設(shè)備、智能家居等等。
- 支持用戶自定義輸出方式(例如:終端、文件、數(shù)據(jù)庫(kù)、串口、485、Flash…);
- 日志內(nèi)容可包含級(jí)別、時(shí)間戳、線程信息、進(jìn)程信息等;
- 日志輸出被設(shè)計(jì)為線程安全的方式,并支持異步輸出及緩沖輸出模式;
- 支持多種操作系統(tǒng)(RT-Thread、UCOS、Linux、Windows…),也支持裸機(jī)平臺(tái);
- 日志支持RAW格式,支持hexdump;
- 支持按標(biāo)簽 、級(jí)別、關(guān)鍵詞進(jìn)行動(dòng)態(tài)過(guò)濾;
- 各級(jí)別日志支持不同顏色顯示;
- 擴(kuò)展性強(qiáng),支持以插件形式擴(kuò)展新功能。
下載鏈接:
https://gitee.com/Armink/EasyLogger?_from=gitee_search#easylogger
相關(guān)使用筆記:
OpenBLT
OpenBLT是一種開源引導(dǎo)加載程序,可以在任何微控制器上運(yùn)行并使用任何類型的通信接口來(lái)執(zhí)行軟件更新,而無(wú)需專用的調(diào)試器硬件。
下載鏈接:
https://sourceforge.net/projects/openblt/files/
相關(guān)使用筆記:
猜你喜歡:
長(zhǎng)文 | 花了兩天時(shí)間整理了STM32中的一些C語(yǔ)言知識(shí)點(diǎn)
1024G 嵌入式資源大放送!包括但不限于C/C 、單片機(jī)、Linux等。私信回復(fù)1024,即可免費(fèi)獲取!