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





