【EventOS Nano】EventOS Nano初步瞭解

来源:https://www.cnblogs.com/Wangzx000/archive/2022/07/18/16492172.html
-Advertisement-
Play Games

(文章目錄) 前言 相信大多數人都有自己搭建博客網站的想法,本文就手把手一步一步的進行,最終結果類似如下樣式: 一、網站軟體的選擇 軟體選擇成熟而免費的WordPress,WordPress是一款能讓您建立出色網站、博客或應用程式的開源軟體。 可充分利用超過55,000個插件擴展WordPress, ...


EventOS Nano是什麼?

EventOS Nano是一個面向單片機、事件驅動的、分散式的、可跨平臺開發的嵌入式開發平臺。主要有兩大技術特色:事件驅動超輕量


EventOS主要特性如下:

  • 事件匯流排為核心組件,靈活易用,是進行線程(狀態機)間同步或者通信的主要手段,也是對EventOS分散式特性和跨平臺開發進行支持的唯一手段。事件支持廣播發送,或者發佈-訂閱機制兩種方式(二選一)
  • 全局事件隊列,摒棄每個線程擁有自己的事件隊列的方式,只有一個全局事件隊列,極限對壓縮對RAM的占用
  • 協作式內核,優點是不會產生資源競爭,非常可靠。
  • 功能強大的軟體定時器,以時間事件的形式對軟定時器功能,進行功能強大的實現
  • 極度輕量,便於嵌入其他系統,除事件匯流排外的所有特性(層次狀態機,平面狀態機,發佈-訂閱機制,事件橋等)均可裁剪,資源可低至ROM1.2Kb,RAM 172Byte,可以作為子系統,嵌入到其他軟體系統中去
  • 未來會使用Event Bridge(事件橋)機制與EventOS打通事件匯流排,以便對EventOS的分散式特性進行支持。
  • 重點關註三種應用場景:中小資源單片機,作為模塊向其他軟體系統的嵌入和可靠性要求較高的嵌入式場景。

如何理解事件?

嵌入式系統中,一切發生或者已發生的事情,只要導致了內部數據的變化,都可以被認為是事件

比如,按鍵的按下或者抬起,串口接收到一組數據,CAN匯流排接收到一個報文,某個通信協議連接失敗,定時500ms時間到,電池電量將到某個閾值之下,溫度感測器高於某個閾值,避障感測器檢測到障礙物,等等,都可以認為是事件。

是對系統中所發生的事,進行的高級抽象

運用事件機制,可以有效地對RTOS中存在的多種IPC(線程間通信)方式,進行整合。


EventOS Nano主張的編程思想

1.事件驅動與事件匯流排

EventOS Nano的核心是事件驅動和事件匯流排,事件機制與RTOS中的事件概念不同,它更像是windows編程中的消息。事件,可以認為是主題+不定長數據,通過事件,可以極大的解耦模塊間的耦合,增強軟體的可測試性,還可以進行跨平臺和分散式開發

2.防禦式編程

EventOS Nano使用了大量的斷言,對系統的運行過程和用戶對EventOS Nano使用大量的檢查。在實際的產品代碼中,依然打開斷言。這樣軟體將非常快速的收斂於穩定狀態

3.跨平臺開發

EventOS Nano提倡跨平臺開發。所謂跨平臺開發,就是在windows和Linux等便捷友好的開發環境里,完成絕大部分開發工作,包括編程、調試、運行和單元測試等工作,然後再目標平臺上進行最後的移植、調試和適配工作

4 .消除耦合

無論是廣播式的事件發送機制,還是發佈 -訂閱式的事件發送機制,都是為了消除軟體模塊間的耦合。


EventOS Nano的代碼結構

1.核心代碼

  • eventos/eventos.c EventOS Nano狀態機框架的實現
  • eventos/eventos.h 頭文件
  • eventos/eventos_config.h 對EventOS Nano進行配置與裁剪

2.三方代碼庫

  • RTT Segger Jlink所提供的日誌庫,依賴JLink硬體。
  • unity 單元測試框架

3.常式代碼

  • freertos對FreeRTOS的適配常式
  • posix對符合POSIX標準的操作系統(如linux,MinGW等)的適配常式
  • stm32f030對ARM Cortex-M0晶元的裸機運行(無RTOS)的常式
  • stm32f103對ARM Cortex-M3晶元的裸機運行(無RTOS)的常式
  • test對源碼進行的單元測試常式
  • digital_watch電子錶常式,狀態機的典型應用。

4.tools

一些Python腳本和工具







參考資源: https://mp.weixin.qq.com/s/0BkOD8hKCRW4OxoOlpIfLw
倉庫地址:https://gitee.com/event-os/eventos.git


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看《C++ Primer Plus》時整理的學習筆記,部分內容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,張海龍 袁國忠譯。只做學習記錄用途。 ...
  • 上一篇文章講到了標簽在 parseDefaultElement 方法中進行解析,本篇文章將講解這部分內容 bean 標簽解析 查看 processBeanDefinition 方法,針對各個操作作具體分析: protected void processBeanDefinition(Element e ...
  • 不要在foreach迴圈里進行元素的remove/add操作。 remove元素請使用Iterator方式,如果併發操作,需要對Iterator對象加鎖。 正例 List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); ...
  • 米哈游2023秋季招聘正式開始~ [燈泡]簡歷投遞:7.4-10.31 提前批: 7.22號之前投遞部分崗位有機會免筆試 筆試:7月-10月 面試:7月中旬開始 [燈泡] 成功密碼 內推碼拿好,沖! 校招唯一專屬內推碼EYTUC。 校招崗位鏈接:https://taou.cn/2piRI 選擇好崗位 ...
  • 1.過濾器 1.為什麼要使用過濾器 在Web開發中,常常會有這樣的需求:在所有介面中去除用戶輸入的非法字元,以防止引起業務異常。要實現這個功能,可以有很多方法,如: 在前端參數傳入時進行校驗,先過濾掉非法字元,然後,返回用戶界面提示用戶重新輸入。 後端接收前端沒有過濾的數據,然後過濾非法字元。 利用 ...
  • 有時為了確保數據存儲的唯一性,會選擇數據結構中的字典,但往往在存儲數據之後會對數據進行一系列的操作,比如排序等等,但字典在數據結構中是通過鍵值對進行存儲的,這時我們可以通過將字典轉換成對應的數組或動態數組進行排序,再通過排序後的鍵獲得字典中的值便可獲得想要的數據了。 引用的空間 using Syst ...
  • 我們作為咨詢方進行全廠的調研,最終給用戶交付《業務現狀分析與信息化需求評估報告》、《信息化總體規劃報告》、《應用架構設計報告》和《候選產品和潛在供應商名單》。 ...
  • awk的由來 awk這個工具的名字是由三個發明者的首字母組合而成。 awk是一個文本處理工具。 awk的版本 AWK:最早AWK是在unix上實現的,屬於貝爾實驗室的 NAWK:即NEW AWK,是AWK的升級版,也屬於貝爾實驗室。 GAWK:即GNU AWK,基於GNU重新編譯而來的,相容NAWK ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...