1
開(kāi)源RTOS
我最早接觸的開(kāi)源代碼,應(yīng)該就是FreeRTOS了,從接觸到現(xiàn)在對(duì)于該RTOS的代碼研讀應(yīng)該有3遍的樣子,雖然工作以后也會(huì)用到其他的RTOS,但感覺(jué)都大同小異,因?yàn)樗麄兎庋b的服務(wù)接口都很類(lèi)似,一通百通,所以后面接觸的uCOS和RTThread雖然有時(shí)候也會(huì)看會(huì)代碼,但終究沒(méi)有從頭到尾研讀過(guò),除非遇到了一些更底層點(diǎn)的問(wèn)題。
如果有RTOS開(kāi)發(fā)需求或者是感興趣的朋友,建議都能夠認(rèn)認(rèn)真真研讀完一款RTOS的代碼,這樣對(duì)自身的編碼水平和能力會(huì)有較大的提升。
當(dāng)然,在首次閱碼的過(guò)程中會(huì)遇到很多理解上的問(wèn)題,希望你能夠用心的補(bǔ)充相關(guān)軟件知識(shí)和數(shù)據(jù)結(jié)構(gòu)理論等,這樣才能獲得更大的學(xué)習(xí)收益。
2
開(kāi)源UGUI
曾經(jīng)也嘗試閱讀過(guò)GUI的一些代碼,只要是嵌入式行業(yè)的伙計(jì)都會(huì)有一個(gè)徒手寫(xiě)一款類(lèi)似于手機(jī)界面的夢(mèng)吧~
其實(shí)很早玩的圖形界面就是 uCGUI ,uCGUI可以說(shuō)是emwin的一版精簡(jiǎn)版,老版本他們是開(kāi)源的,而新版本都閉源了,而后來(lái)工作上對(duì)圖形界面這一塊需求不是很大,也就沒(méi)有再去繼續(xù)閱讀下去,僅僅理了一下圖形界面的設(shè)計(jì)思路吧。
因?yàn)槔锩嫔婕暗胶芏嗟挠?jì)算機(jī)圖形算法等知識(shí),數(shù)學(xué)等功底還不能少,難度不小,撤~
后來(lái)兜兜轉(zhuǎn)轉(zhuǎn)換了一些公司又多多少少會(huì)涉及到一些小型的自研單色GUI,所以在需求設(shè)計(jì)和功能擴(kuò)展上也會(huì)去找一些相關(guān)開(kāi)源的代碼來(lái)吸收和借鑒,比如littlevGL、MonoGUI、MiniGUI、simpleGUI等,這些基本上都讀過(guò)和測(cè)試過(guò)。
3
框架和庫(kù)
最后是一些常用的框架和庫(kù),這一部分相對(duì)比較獨(dú)立,在平時(shí)的一些項(xiàng)目開(kāi)發(fā)中可以帶來(lái)一些借鑒意義和靈感。不過(guò),不建議大家直接拿來(lái)就用,畢竟大部分組件的代碼量都不是很大,還是要理順一下思路,能夠在此基礎(chǔ)上擴(kuò)展那就再好不過(guò)了。
當(dāng)然,如果你真的時(shí)間不夠,也要了解清楚每個(gè)組件的適應(yīng)場(chǎng)景和使用條件,避免一些迷之bug。
下面,我們來(lái)看看作者推薦了哪些好東西。
**cJSON:**基于ANSIC的超輕量級(jí)JSON解析器。
MultiTimer: 一個(gè)軟件定時(shí)器擴(kuò)展模塊,可無(wú)限擴(kuò)展你所需的定時(shí)器任務(wù),取代傳統(tǒng)的標(biāo)志位判斷方式, 更優(yōu)雅更便捷地管理程序的時(shí)間觸發(fā)時(shí)序。
MultiButton: 一個(gè)小巧簡(jiǎn)單易用的事件驅(qū)動(dòng)型按鍵驅(qū)動(dòng)模塊,可無(wú)限量擴(kuò)展按鍵,按鍵事件的回調(diào)異步處理方式可以簡(jiǎn)化你的程序結(jié)構(gòu),去除冗余的按鍵處理硬編碼,讓你的按鍵業(yè)務(wù)邏輯更清晰。
lw_oopc: 是了高先生及其MISOO團(tuán)隊(duì)創(chuàng)作的lw_oopc宏,一個(gè)輕量級(jí)的C語(yǔ)言面向?qū)ο?a href="http://www.zgszdi.cn/v/tag/1315/" target="_blank">編程框架。
cmd-parser: 一個(gè)非常簡(jiǎn)單好用的命令解析器,占用資源極少極少,采用哈希算法超快匹配命令!
letter shell: 是一個(gè)C語(yǔ)言編寫(xiě)的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式設(shè)備,以C語(yǔ)言函數(shù)為運(yùn)行單位,可以通過(guò)命令行調(diào)用,運(yùn)行程序中的函數(shù)。
eepromfs: 基于EEPROM的簡(jiǎn)易類(lèi)文件的數(shù)據(jù)讀寫(xiě)庫(kù),方便做動(dòng)態(tài)功能增減時(shí)參數(shù)管理。增減參數(shù)塊類(lèi)似增減文件,不會(huì)對(duì)已有數(shù)據(jù)存儲(chǔ)帶來(lái)影響。
EFSM (event finite state machine,事件驅(qū)動(dòng)型有限狀態(tài)機(jī)):是一個(gè)基于事件驅(qū)動(dòng)的有限狀態(tài)機(jī),主要應(yīng)用于嵌入式設(shè)備的軟件系統(tǒng)中,EFSM的設(shè)計(jì)原則是:簡(jiǎn)單!
OpenBLT: 主要用作STM32引導(dǎo)加載程序。它可以與幾乎任何微控制器一起工作,并使用幾乎任何類(lèi)型的通信接口來(lái)執(zhí)行固件更新。
**NorthFrame:**是基于非UML極簡(jiǎn)理念的狀態(tài)機(jī)框架,配合NF_FsmDesigner圖形化開(kāi)發(fā)工具,可無(wú)負(fù)擔(dān)替代傳統(tǒng)switch-case狀態(tài)機(jī)開(kāi)發(fā)。
**lwrb:**庫(kù)提供了通用的FIFO環(huán)緩沖區(qū)實(shí)現(xiàn)。
**EasyLogger:**是一款超輕量級(jí)(ROM<1.6K, RAM<0.3K)、高性能的 C/C++ 日志庫(kù),非常適合對(duì)資源敏感的軟件項(xiàng)目,
**EasyFlash:**是一款開(kāi)源的輕量級(jí)嵌入式Flash存儲(chǔ)器庫(kù),方便開(kāi)發(fā)者更加輕松的實(shí)現(xiàn)基于Flash存儲(chǔ)器的常見(jiàn)應(yīng)用開(kāi)發(fā)。
**SFUD:**一款開(kāi)源的串行 SPI Flash 通用驅(qū)動(dòng)庫(kù)。解決 Flash 的差異現(xiàn)狀而設(shè)計(jì),讓我們的產(chǎn)品能夠支持不同品牌及規(guī)格的 Flash,提高了涉及到 Flash 功能的軟件的可重用性及可擴(kuò)展性,同時(shí)也可以規(guī)避 Flash 缺貨或停產(chǎn)給產(chǎn)品所帶來(lái)的風(fēng)險(xiǎn)。
**znfat:**振南的znFAT是一套高效、完備、精簡(jiǎn)且具有高可移植性的嵌入式FAT32文件系統(tǒng)。
以前經(jīng)常談到閱讀源碼、閱讀源碼,那么這里就為大家精選了一波開(kāi)源代碼供大家學(xué)習(xí)參考,相關(guān)介紹來(lái)自于項(xiàng)目本身和修改。
它們均可以在github,gitee等開(kāi)源平臺(tái)搜索查找到,這里就不放鏈接了,自己動(dòng)動(dòng)手,快速查找資料也是一種能力~
-
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62395 -
RTThread
+關(guān)注
關(guān)注
8文章
132瀏覽量
41000 -
開(kāi)源代碼
+關(guān)注
關(guān)注
0文章
36瀏覽量
3007
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論