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