痞子衡嵌入式半月刊: 第 116 期
這裡分享嵌入式領域有用有趣的專案/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時釋出一期。
本期刊是開源專案(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。
上期回顧 :《痞子衡嵌入式半月刊: 第 115 期》
嘮兩句
歷史上的今天:1787年1月11日,天王星的兩顆衛星被發現。
本期共 4 個專案,希望對你有幫助!
專案類
1、CosyOS - 零中斷延遲的RTOS
CosyOS 是一款來自中國的開源實時作業系統,從經典的 8051 核心,到流行的 Arm Cortex-M 核心,均可實現全域性不關總中斷、零中斷延遲,適用於對系統實時性及中斷響應速度有較高要求的場合。CosyOS 以極具浪漫主義色彩的宏定義,實現了高度的物件導向及良好的易用性。CosyOS 以零中斷延遲為宗旨,突破創新為方針,簡單易用為原則。
- 專案地址:https://gitee.com/cosyos/cosyos
CosyOS 零中斷延遲基本原理:
- 服務層中,SysTick、PendSV、任務臨界區,三者間是互斥訪問的。換言之,整個服務層是一個大臨界區(服務層臨界區)。
- 所有核心服務(中斷本地服務除外),均在 “服務層臨界區” 執行,從而保證服務的 “操作流” 不會被打斷。
- 中斷本地服務採用互斥訪問機制。
2、EFSMC - 一個基於事件驅動的有限狀態機
EFSM (event finite state machine,事件驅動型有限狀態機),是一個基於事件驅動的有限狀態機,主要應用於嵌入式裝置的軟體系統中。
- 專案地址:https://gitee.com/simpost/EFSMC
EFSM 的設計原則是:簡單!EFSM 的使用者只需要關心:
- 當事件到來時,透過EFSM取得對應事件的處理方法;
- 當特定事件到來,或者條件滿足時,呼叫狀態切換方法進行狀態切換。
由於 EFSM 的巧妙設計,避免了命名衝突的問題,使用者可以在一個程式中定義多個狀態機;要是能對不同狀態進行組織,還可以做出層次狀態機的結構。
3、eLab - 整合多種開源專案和多個技術特性的嵌入式開發平臺
eLab 是一個整合了多種開源專案和多個技術特性的嵌入式開發平臺。作者在這個專案裡彙集了多年來在產品開發中的開發理念和經驗,以現有的開源軟體為主,以作者自己開發的元件為輔,打造一個統一而完善的開發平臺。
- 專案地址:https://gitee.com/event-os/elab
eLab 專案,側重兩大技術方向,一是產品級的嵌入式軟體開發,二是跨平臺的嵌入式軟體開發。這兩個技術方向,最終目的,都是為了讓工程師的開發效率,得到顛覆性的提升。尤其很多非軟體或者非計算機專業畢業的嵌入式工程師們,不必在錯誤或者跑偏的技術方向上苦苦探索,從而減少技術進階的年限,早日進入更高的職業階段。
4、YMCV - 跨平臺迷你計算視覺庫
YMCV 庫名中文簡稱妖米CV,英文全稱 your mini computer vision,意為你的迷你計算機視覺,含義有雙重,第一重含義是:一個迷你的CV庫;第二重含義是:可用於迷你計算機(如嵌入式計算機)的視覺庫。YMCV 庫是跨平臺的,原始碼由C語言編寫,可以在任意平臺編譯,這個庫也可以透過選擇開啟部分功能從而實現將庫裁剪到你所必須的大小,降低對小型計算機的原始碼空間佔用。
- 專案地址:https://gitee.com/yao_mi/ymcv
YMCV 專案分為三層架構,頂層是使用者層,它是對核心層的包裹,方便使用者對它進行呼叫,核心層的內容為左邊那列內容,其中黑體的 QRcode 是二維碼相關的編碼和解碼功能,這部分作者是將第三方庫進行了壓縮打包,底層 congfig 是配置資訊,記憶體管理以及 IO 檔案介面的定義。
歡迎訂閱
文章會同時釋出到我的 部落格園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。