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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/499583.html
標籤:嵌入式
