電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 22|回復(fù): 0
收起左側(cè)

嵌入式軟件框架,一個面向單片機應(yīng)用的事件調(diào)度器。

[復(fù)制鏈接]

449

主題

449

帖子

588

積分

二級會員

Rank: 2

積分
588
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-9 17:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師5 p& ~9 T! ]8 b' @# I
關(guān)注我,一起變得更加優(yōu)秀!
  \$ T  ?( @; f: Y  }一、EventOS是什么?, j2 ^0 Z9 y. H  Q, [0 g! C
EventOS,是一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺。它主要有兩大技術(shù)特色:一是事件驅(qū)動,二是超輕量。) _2 e0 k$ F5 q; ?8 @: g
EventOS以及其母項目EventOS,目標(biāo)是開發(fā)一個企業(yè)級的嵌入式開發(fā)平臺,以事件總線為核心,打造一個統(tǒng)一的嵌入式技術(shù)生態(tài),
" ~6 P0 z8 l6 _4 S$ ]為廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高開發(fā)效率的嵌入式開發(fā)環(huán)境。
! S: L% Q- E. uEventOS的主要特性列舉如下:. `" U6 B6 k9 S$ g$ K, B
(1)事件總線為核心組件,靈活易用,是進(jìn)行線程(狀態(tài)機)間同步或者通信的主要手段,也是對EventOS分布式特性和跨平臺開發(fā)進(jìn)行支持的唯一手段。事件支持廣播發(fā)送,或者發(fā)布-訂閱機制兩種方式(二選一)。
9 ~! V* ?( r' q5 G(2)全局事件隊列,摒棄每個線程(狀態(tài)機)擁有自己的事件隊列的方式,只有一個全局事件隊列,極限壓縮對RAM的占用。! i1 E# ~  [( o4 n0 {
(3)協(xié)作式內(nèi)核,優(yōu)點是不會產(chǎn)生資源競爭,極度可靠。$ {! m% b6 }+ ~9 Y
(4)極度輕量,便于嵌入其他系統(tǒng),除事件總線外的所有特性(層次狀態(tài)機、平面狀態(tài)機、發(fā)布-訂閱機制、事件攜帶數(shù)據(jù)、事件橋等)均可裁剪,將資源占用降至極限,可低至ROM 1.2KB,RAM 172Byte?梢宰鳛樽酉到y(tǒng),“悄悄”嵌入到其他軟件系統(tǒng)中去。9 D, r: K5 h: k5 O5 G( j
(5)功能強大的軟定時器,以時間事件的形式,對軟定時器功能,進(jìn)行優(yōu)雅且功能強大的實現(xiàn)。
5 q2 ]! k2 }( k(6)API的設(shè)計,更加簡明,更加符合本土嵌入式工程師的習(xí)慣。移植方便,只需實現(xiàn)少數(shù)幾個接口函數(shù)即可。9 c, o; y7 }2 u) p: Z2 g) M# a
(7)未來會使用Event Bridge(事件橋)機制與EventOS打通事件總線,以便對EventOS的分布式特性進(jìn)行支持。
5 b. V1 ^0 u1 q" b: f% i4 U+ v(8)重點關(guān)注三種應(yīng)用場景:中小資源單片機,作為模塊向其他軟件系統(tǒng)的嵌入和可靠性要求較高的嵌入式場景。
* o8 Q$ r, D) `8 ~8 p( G4 M; _, U/ Z1 NEventOS的前身,曾經(jīng)讓我在過去的工作中受益匪淺,讓我非常高效的寫出了很多可靠的程序,能力和回報都有了質(zhì)的提升。0 Q$ d: ?+ T/ {/ j' ?
現(xiàn)在,我將以前的技術(shù)成果整理重構(gòu),在各方面都向著規(guī)范的開源項目靠攏,包括源碼、注釋、文檔、單元測試和例程等等。
; T' d  z9 L: D9 P, z, C未來,EventOS這個項目我會一直完善下去。我的目標(biāo)是,將EventOS項目在2022年底前做成Gitee推薦項目,2024年年底前將EventOS項目,做成Gitee的GVP項目。造福更多的嵌入式工程師。4 G+ l' m2 G2 D/ Z. X' |7 K
! V- s3 I5 y# ^# O
二、文檔與博客# [) l- K" J9 `; V  \( d
EventOS的移植和入門,在documentation文件夾里,可以參考以下幾個文檔:(1)快速入門文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md
) l* P' Q4 @5 @  k# ~! O& ^* `(2)裸機移植文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md( v, r( z% G. G0 j. t
(3)開發(fā)環(huán)境搭建https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md# |1 ~) c  _7 }7 m5 p! L" `6 Z
(4)如何理解事件https://gitee.com/event-os/eventos/blob/master/blog/%E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3%E4%BA%8B%E4%BB%B6.md
# x7 E* ~6 E' c3 A6 T三、為什么叫做EventOS?$ r% V' s* H3 v( d  [$ v3 ?& i
EventOS真的非常輕量。全功能的EventOS目前經(jīng)MDK編譯后,框架本身占用RAM 200Byte,ROM約3.5KB(優(yōu)化等級為-O3)或4.5KB(優(yōu)化等級為-O0)。
) L3 s7 {* K# v, ^" x裁剪后,最小功能的EventOS,目前經(jīng)MDK編譯后,框架本身占用RAM 172Byte,ROM約1.2KB(優(yōu)化等級為-O3)或1.5KB(優(yōu)化等級為-O0)。3 O' Y# `; {. {/ c/ ~) R
之所以叫EventOS,一是因為它的技術(shù)特色與核心思想,就是事件驅(qū)動;二是因為它是另外一個開源項目EventOS(準(zhǔn)備中)的簡化實現(xiàn),
! M+ f- l% V4 j4 FEventOS是一個事件驅(qū)動的、分布式的、可跨平臺開發(fā)的嵌入式RTOS,面向32位單片機和更高處理器的嵌入式開發(fā)平臺。
+ f  D' W& H# G2 p8 I" o四、EventOS主張的編程思想4 u0 ~2 C  v5 ^8 [3 ~7 y. O) \7 }
事件驅(qū)動與事件總線; k( l" Y* F. y5 T
事件驅(qū)動和事件總線,是EventOS的核心,也是EventOS的核心。事件機制,與RTOS中事件概念完全不同,它更像是windows編程中的消息。  p9 T+ H+ W) ?  R* p
事件,可以認(rèn)為是主題 + 不定長數(shù)據(jù),通過事件,可以極大解耦模塊間的耦合,增強軟件的可測試性,還可以進(jìn)行跨平臺開發(fā)和分布式擴展。  [8 W* x  Z& D9 y
防御式編程5 X$ x# d" o" x" A9 E. n2 f
EventOS使用了大量的斷言,對系統(tǒng)的運行過程和用戶對EventOS的使用進(jìn)行大量的檢查。
+ c( X$ C/ T; K! y% h我們強烈建議,用戶要對斷言接口函數(shù)進(jìn)行精心的設(shè)計和實現(xiàn),在實際的產(chǎn)品代碼中,依然打開斷言。這樣,軟件將以非?斓乃俣,收斂于穩(wěn)定狀態(tài)。! k4 z' ]4 C; c$ l6 z0 R/ o+ z
跨平臺開發(fā)/ ?9 L9 G) i. v2 M: ^! K( }
EventOS提倡跨平臺開發(fā)。所謂跨平臺開發(fā),就是在Windows和Linux等便捷友好的開發(fā)環(huán)境里,完成絕大部分的開發(fā)工作,包括編程、調(diào)試、運行和單元測試等工作,然后在目標(biāo)平臺上進(jìn)行最后的移植、調(diào)試和適配工作。5 ]: g; g% t  Y7 s) E2 k
跨平臺的優(yōu)點有很多,比如開發(fā)效率非常高、工程師進(jìn)入到更多的編程領(lǐng)域和程序穩(wěn)定可靠等。EventOS主要在32位MinGW平臺和Linux平臺上開發(fā)。* L7 _6 `* }3 J8 Z7 S& \
開發(fā)環(huán)境的搭建,見文檔開發(fā)環(huán)境搭建。當(dāng)然,也完全可以用MDK在單片機上直接開發(fā),效率稍低而已。6 _4 x! n+ p# K( T
消除耦合! ?4 R  v& r: R/ r$ \, Q0 L
無論是廣播式的事件發(fā)送機制,還是發(fā)布-訂閱式的事件發(fā)送機制,實際上,都是為了消除軟件模塊間的耦合。* E( r/ ]: l, _& k7 e% k8 n
五、EventOS項目的維護原則" G1 H! g9 ^5 x/ v  P
但行好事,不問前程
: L. r1 Y4 Z, l% n: a我完全沒有考慮過EventOS將來能夠如何,而且最近EventOS的發(fā)展有點超出我預(yù)計,我有點受寵若驚。
* E: @$ Z- t3 Y) ?: i# H; D更多的人了解EventOS是一件好事,敦促這我把EventOS項目盡快做好,做完善,做成一個工業(yè)級的軟件產(chǎn)品,為廣大的嵌入式工作者創(chuàng)造便利。
& T* @, }/ _6 j4 X# K/ {2 P0 Q希望EventOS最終被眾多工程師和企業(yè)認(rèn)可,并在成千上萬的嵌入式產(chǎn)品中廣泛應(yīng)用起來,那就不枉我這些年深挖技術(shù)的努力。
7 \) ]/ t" a* Z8 G# y# }* J+ Y1 S源碼文檔并進(jìn)
) j- ?8 V; o' K" P; q我深知完善豐富的文檔,對一個開源項目的重要意義。因此,我堅持每一個特性的升級,每一個BUG的修復(fù),都跟隨著相應(yīng)的文檔。9 f5 [9 I; U  `% \- m6 m- l) D
讓EventOS和EventOS項目的文檔專業(yè)化、體系化,包含用戶手冊、版本特性、原理說明、博客、例程等等。9 ]; w. p6 ?  f; `$ c
單元測試優(yōu)先8 G/ [( O: L  h9 Z) V5 g' \
嵌入式的開源項目,用戶最關(guān)心的,是軟件的可靠性。單元測試,是保證軟件健壯與可靠的重要手段。對于EventOS這種系統(tǒng)級、框架級的軟件,穩(wěn)定性與可靠性更加重要。
$ d2 @* T5 z& T/ `6 g$ T1 A從EventOS誕生之日起,它就是面向單元測試的。詳盡而嚴(yán)謹(jǐn)?shù)膯卧獪y試,保證了EventOS將絕大多數(shù)的BUG,消除在了開發(fā)階段。EventOS的每一次重構(gòu)、升級與發(fā)布,都是經(jīng)過了嚴(yán)謹(jǐn)?shù)膯卧獪y試的。/ Y0 S' F- s3 L
用戶至上,需求至上
" W8 R1 ]. e* Q2 M: Q- ^$ M$ _軟件如何發(fā)展,代碼向哪個方向前進(jìn),EventOS完全聽從用戶們的聲音,完全從需求出發(fā)。我們從各個渠道,微信、QQ、論壇等獲取的意見建議,都將體現(xiàn)到EventOS的開發(fā)中去。
7 u; O' b8 H& t1 Z# i/ Z5 d0 k% T, x六、代碼結(jié)構(gòu)
6 R8 y1 e* _+ J1 }3 n! h核心代碼
( w" [8 U* f! J( t; }. T" N; ^eventos/eventos.c EventOS狀態(tài)機框架的實現(xiàn)eventos/eventos.h 頭文件eventos/eventos_config.h 對EventOS進(jìn)行配置與裁剪% j8 J8 D6 a. t1 X
第三方代碼庫
* q* \8 ]9 }/ D* B; W  URTT Segger JLink所提供的日志庫,依賴于JLink硬件。unity 單元測試框架
, ~' t1 P" q6 R' F' E例程代碼# Q/ ~- ?6 Z- x( [' v! t; }
freertos 對FreeRTOS的適配例程(未完成)。posix 對符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)(如Linux、VxWork、MinGW等)的適配例程。stm32f030 對ARM Cortex-M0芯片的裸機運行(無RTOS)的例程。stm32f103 對ARM Cortex-M3芯片的裸機運行(無RTOS)的例程。test 對源碼進(jìn)行的單元測試?yán)獭igital_watch 電子表例程,狀態(tài)機的典型應(yīng)用。
) d3 ?  a8 L" b1 b. [& B* L
tools
5 Y* X9 G- T  @$ X$ p) K0 e一些Python腳本和工具。. t5 f5 x6 c0 I, q% H7 p0 Z
文檔
3 G$ g- A& t6 I0 r+ a$ g3 L文檔包含Doxygen代碼文檔的生成路徑(未完成)、圖片、代碼相關(guān)文檔(如快速入門文檔、移植文檔、開發(fā)環(huán)境搭建說明文檔等)。
$ h/ u6 R' Q' J, L# Y來自: https://gitee.com/event-os/eventos" K( F  s% k4 N# j; L% i
-END-$ B* D; K( k; O2 k! F  m! n/ j
往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀
3 k# E' H* N  T* q. I$ _                                                       
8 A; U- f/ T' _8 d, h# l                                                                4 k+ e0 @& e! y" u
                                                                        7 a! r; [/ R, k1 K' }
                                                                               
" Y. F& s# k: h2 j
8 _0 \5 @  R1 @+ a* A8 J0 ]                                                                                : V$ o! d- `" |1 ^
                                                                                        現(xiàn)場實測,用數(shù)據(jù)說話,星閃通信距離突破3.3公里!
$ c$ [8 [& y" D/ A2 T8 a% c                                                       
4 a% V, J6 J! A7 f  J. Z& g8 X/ a                                                                  s/ s, b9 V6 D. {2 c9 J' o) g
                                                                        - ?( P# _: D) r& C3 a
                                                                               
! h  b2 i. |+ a" J - X: L/ s' S! N( S  R8 F
                                                                                4 h- R2 @- d' g$ ]5 a8 r9 q3 j
                                                                                        樹莓派第二代微控制器 RP2350,終于拿到手了!~) V% T2 F9 X- w
                                                                # }0 B/ x" d1 ?
                                                                        : }( ?9 y  z' S
                                                                               
" h* W; {+ @9 x" U 0 p3 s4 |! U  M& x
                                                                                : r  z- s) v/ L. ]2 `/ d' z
                                                                                        跟嵌入式技術(shù)相關(guān)的熱門應(yīng)用,全都在這里了!/ ?  @* o: N: f% t0 G) `& C
                                                                               
& J  ]6 j) S) \, ~* c) _/ D& ?& E                                                                        # @, d; r* Z) v6 o1 P, B
                                                               
' K) m- o, t/ N                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師$ Z' d. C7 M0 H" p
關(guān)注我,一起變得更加優(yōu)秀!
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表