分享一些精選的開(kāi)源框架與代碼~
[導(dǎo)讀]來(lái)源|?最后一個(gè)bug正文大家好,我是bug菌!今天主要是收集并精選了一些自己所了解和學(xué)習(xí)過(guò)的優(yōu)秀的嵌入式開(kāi)源框架代碼和項(xiàng)目,不太了解的就不推薦給大家了,因?yàn)殚_(kāi)源的東西實(shí)在是太多了,魚(yú)龍混雜,所以取其精華去其糟粕是迫在眉睫的大事~當(dāng)然也不要總是沉浸在開(kāi)源的東西之中無(wú)法自拔,開(kāi)源雖...
來(lái)源 |?最后一個(gè)bug
正文
大家好,我是bug菌!今天主要是收集并精選了一些自己所了解和學(xué)習(xí)過(guò)的優(yōu)秀的嵌入式開(kāi)源框架代碼和項(xiàng)目,不太了解的就不推薦給大家了,因?yàn)殚_(kāi)源的東西實(shí)在是太多了,魚(yú)龍混雜,所以取其精華去其糟粕是迫在眉睫的大事~當(dāng)然也不要總是沉浸在開(kāi)源的東西之中無(wú)法自拔,開(kāi)源雖然是一種很好的品質(zhì),但是開(kāi)源的未必就一定是好東西~下面是bug菌推薦的一些不錯(cuò)的開(kāi)源項(xiàng)目和代碼,大家有時(shí)間可以參考學(xué)習(xí)~1開(kāi)源RTOS
bug菌最早接觸的開(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)看看bug菌推薦了哪些好東西?:?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ū)ο缶幊炭蚣?/span>。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)。bug菌經(jīng)常談到閱讀源碼、閱讀源碼,那么這里就為大家精選了一波開(kāi)源代碼供大家學(xué)習(xí)參考,相關(guān)介紹來(lái)自于項(xiàng)目本身和修改。它們均可以在github,gitee等開(kāi)源平臺(tái)搜索查找到,這里就不放鏈接了,自己動(dòng)動(dòng)手,快速查找資料也是一種能力~之前也整理了一些學(xué)習(xí)感悟,大家可以參考此篇文章:最后? ? 好了,今天的內(nèi)容就到這里了,覺(jué)得有所收獲,記得點(diǎn)個(gè)贊哦~~???????????????? ?END ?????????????????關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。





