|
我是老溫,一名熱愛學習的嵌入式工程師' c9 F' u G8 {
關(guān)注我,一起變得更加優(yōu)秀!9 t( s2 Q* M6 y2 O+ }* l" @
一、EventOS是什么?; x# J* w/ k, |* F
EventOS,是一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺。它主要有兩大技術(shù)特色:一是事件驅(qū)動,二是超輕量。
4 ?7 b- }2 I& }EventOS以及其母項目EventOS,目標是開發(fā)一個企業(yè)級的嵌入式開發(fā)平臺,以事件總線為核心,打造一個統(tǒng)一的嵌入式技術(shù)生態(tài),! X1 R6 D* A* x( W" l% o- I
為廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高開發(fā)效率的嵌入式開發(fā)環(huán)境。
4 q8 Q1 `/ ~& U- b6 b, h" R1 GEventOS的主要特性列舉如下:* W8 J1 ^ p( W3 E5 X
(1)事件總線為核心組件,靈活易用,是進行線程(狀態(tài)機)間同步或者通信的主要手段,也是對EventOS分布式特性和跨平臺開發(fā)進行支持的唯一手段。事件支持廣播發(fā)送,或者發(fā)布-訂閱機制兩種方式(二選一)。
/ ?2 S; R! V, _8 _0 n(2)全局事件隊列,摒棄每個線程(狀態(tài)機)擁有自己的事件隊列的方式,只有一個全局事件隊列,極限壓縮對RAM的占用。
' k. m! }% I" g0 _(3)協(xié)作式內(nèi)核,優(yōu)點是不會產(chǎn)生資源競爭,極度可靠。% ~8 T$ N5 y4 B
(4)極度輕量,便于嵌入其他系統(tǒng),除事件總線外的所有特性(層次狀態(tài)機、平面狀態(tài)機、發(fā)布-訂閱機制、事件攜帶數(shù)據(jù)、事件橋等)均可裁剪,將資源占用降至極限,可低至ROM 1.2KB,RAM 172Byte?梢宰鳛樽酉到y(tǒng),“悄悄”嵌入到其他軟件系統(tǒng)中去。4 n9 f8 T, V- H+ j3 a+ Z
(5)功能強大的軟定時器,以時間事件的形式,對軟定時器功能,進行優(yōu)雅且功能強大的實現(xiàn)。- Q! V) q7 S _
(6)API的設計,更加簡明,更加符合本土嵌入式工程師的習慣。移植方便,只需實現(xiàn)少數(shù)幾個接口函數(shù)即可。* J8 P2 I4 ?, L) |% n4 R& m4 ]
(7)未來會使用Event Bridge(事件橋)機制與EventOS打通事件總線,以便對EventOS的分布式特性進行支持。
/ R' y7 y9 H' o8 C1 J(8)重點關(guān)注三種應用場景:中小資源單片機,作為模塊向其他軟件系統(tǒng)的嵌入和可靠性要求較高的嵌入式場景。/ f- e4 t$ l1 F, S
EventOS的前身,曾經(jīng)讓我在過去的工作中受益匪淺,讓我非常高效的寫出了很多可靠的程序,能力和回報都有了質(zhì)的提升。* H+ x' C/ y$ Z8 {8 S
現(xiàn)在,我將以前的技術(shù)成果整理重構(gòu),在各方面都向著規(guī)范的開源項目靠攏,包括源碼、注釋、文檔、單元測試和例程等等。
' M6 o% ~6 }' Z% b未來,EventOS這個項目我會一直完善下去。我的目標是,將EventOS項目在2022年底前做成Gitee推薦項目,2024年年底前將EventOS項目,做成Gitee的GVP項目。造福更多的嵌入式工程師。
?. X. q |0 q2 J0 J G
qy0pvvjawdu6406064522.jpg (224.26 KB, 下載次數(shù): 1)
下載附件
保存到相冊
qy0pvvjawdu6406064522.jpg
2024-9-16 11:14 上傳
/ T' v! f, i/ k D2 @" i' k. Y5 w二、文檔與博客! w+ u. y ?. e+ }
EventOS的移植和入門,在documentation文件夾里,可以參考以下幾個文檔:(1)快速入門文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md
% R1 i5 ^8 `/ b# e(2)裸機移植文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md
' d6 A! q3 b- \, J& y8 F2 I(3)開發(fā)環(huán)境搭建https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md' w1 L/ C; Z# y0 d8 R
(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" a* V- s, u; S, X6 D
三、為什么叫做EventOS?! z' G# @7 {5 J/ X/ ^
EventOS真的非常輕量。全功能的EventOS目前經(jīng)MDK編譯后,框架本身占用RAM 200Byte,ROM約3.5KB(優(yōu)化等級為-O3)或4.5KB(優(yōu)化等級為-O0)。
# T$ M- C j+ O1 p8 Z) o7 F0 a; M5 P1 [裁剪后,最小功能的EventOS,目前經(jīng)MDK編譯后,框架本身占用RAM 172Byte,ROM約1.2KB(優(yōu)化等級為-O3)或1.5KB(優(yōu)化等級為-O0)。8 l6 f/ @/ b' n
之所以叫EventOS,一是因為它的技術(shù)特色與核心思想,就是事件驅(qū)動;二是因為它是另外一個開源項目EventOS(準備中)的簡化實現(xiàn),2 X o8 l3 L) R6 P7 q# |# P
EventOS是一個事件驅(qū)動的、分布式的、可跨平臺開發(fā)的嵌入式RTOS,面向32位單片機和更高處理器的嵌入式開發(fā)平臺。# K' x5 S7 O6 G/ r7 Q+ |3 z
四、EventOS主張的編程思想
1 k) @2 t1 G1 n; w/ l事件驅(qū)動與事件總線8 I0 ?3 s; r, ]
事件驅(qū)動和事件總線,是EventOS的核心,也是EventOS的核心。事件機制,與RTOS中事件概念完全不同,它更像是windows編程中的消息。
, e0 e$ a3 ^, j4 U3 w事件,可以認為是主題 + 不定長數(shù)據(jù),通過事件,可以極大解耦模塊間的耦合,增強軟件的可測試性,還可以進行跨平臺開發(fā)和分布式擴展。' `7 T2 w5 U/ i% N# B! f' A. Y
防御式編程 {8 D3 K/ ]- `
EventOS使用了大量的斷言,對系統(tǒng)的運行過程和用戶對EventOS的使用進行大量的檢查。* {2 G% I* m! I8 t0 o, g( Z
我們強烈建議,用戶要對斷言接口函數(shù)進行精心的設計和實現(xiàn),在實際的產(chǎn)品代碼中,依然打開斷言。這樣,軟件將以非?斓乃俣龋諗坑诜(wěn)定狀態(tài)。- \# T9 w7 X* x. m$ J, b! \ R
跨平臺開發(fā)% s+ j* I! o" Q3 e. I) \
EventOS提倡跨平臺開發(fā)。所謂跨平臺開發(fā),就是在Windows和Linux等便捷友好的開發(fā)環(huán)境里,完成絕大部分的開發(fā)工作,包括編程、調(diào)試、運行和單元測試等工作,然后在目標平臺上進行最后的移植、調(diào)試和適配工作。: J. a& n9 E ~+ l+ M2 Q
跨平臺的優(yōu)點有很多,比如開發(fā)效率非常高、工程師進入到更多的編程領域和程序穩(wěn)定可靠等。EventOS主要在32位MinGW平臺和Linux平臺上開發(fā)。
$ S% c0 ]* P1 _' m+ g開發(fā)環(huán)境的搭建,見文檔開發(fā)環(huán)境搭建。當然,也完全可以用MDK在單片機上直接開發(fā),效率稍低而已。! y# \. F7 y/ \# h5 N1 X. b; Q
消除耦合
! |: L6 O7 P, E; G無論是廣播式的事件發(fā)送機制,還是發(fā)布-訂閱式的事件發(fā)送機制,實際上,都是為了消除軟件模塊間的耦合。& G2 K$ R$ F- ?( T5 z
五、EventOS項目的維護原則
, c0 L3 ~. o7 K但行好事,不問前程" @1 S4 x# C( G1 M3 i5 W
我完全沒有考慮過EventOS將來能夠如何,而且最近EventOS的發(fā)展有點超出我預計,我有點受寵若驚。1 j, X- y2 \( H- b1 ]
更多的人了解EventOS是一件好事,敦促這我把EventOS項目盡快做好,做完善,做成一個工業(yè)級的軟件產(chǎn)品,為廣大的嵌入式工作者創(chuàng)造便利。6 g, ~6 V- I% c& f$ l
希望EventOS最終被眾多工程師和企業(yè)認可,并在成千上萬的嵌入式產(chǎn)品中廣泛應用起來,那就不枉我這些年深挖技術(shù)的努力。
! D( B+ i# F" e0 N7 i; O9 I) i% K源碼文檔并進5 Z6 x. [1 { x1 q: d( K
我深知完善豐富的文檔,對一個開源項目的重要意義。因此,我堅持每一個特性的升級,每一個BUG的修復,都跟隨著相應的文檔。
Z% T! x4 t# Q) D, V9 @讓EventOS和EventOS項目的文檔專業(yè)化、體系化,包含用戶手冊、版本特性、原理說明、博客、例程等等。
# w2 G7 B0 x. M: F5 r單元測試優(yōu)先
' \2 H* i; Z0 Z' q) u" v$ |嵌入式的開源項目,用戶最關(guān)心的,是軟件的可靠性。單元測試,是保證軟件健壯與可靠的重要手段。對于EventOS這種系統(tǒng)級、框架級的軟件,穩(wěn)定性與可靠性更加重要。! R9 ~% o4 Y" `! G) R
從EventOS誕生之日起,它就是面向單元測試的。詳盡而嚴謹?shù)膯卧獪y試,保證了EventOS將絕大多數(shù)的BUG,消除在了開發(fā)階段。EventOS的每一次重構(gòu)、升級與發(fā)布,都是經(jīng)過了嚴謹?shù)膯卧獪y試的。
+ T" O% p9 x) I' p k9 D用戶至上,需求至上4 |4 _3 C6 o. `/ [/ m" q( o" j
軟件如何發(fā)展,代碼向哪個方向前進,EventOS完全聽從用戶們的聲音,完全從需求出發(fā)。我們從各個渠道,微信、QQ、論壇等獲取的意見建議,都將體現(xiàn)到EventOS的開發(fā)中去。
6 W# V3 J7 s* r5 v. N$ b v六、代碼結(jié)構(gòu)
4 t3 b; u$ q1 c8 Q8 E6 |核心代碼
! V8 E4 \7 O* c i" o9 o' }/ k, h% Feventos/eventos.c EventOS狀態(tài)機框架的實現(xiàn)eventos/eventos.h 頭文件eventos/eventos_config.h 對EventOS進行配置與裁剪
5 l' r! H* Z' k2 o8 f第三方代碼庫* Y5 L# C1 _" `
RTT Segger JLink所提供的日志庫,依賴于JLink硬件。unity 單元測試框架+ h0 M# e+ n" [
例程代碼
/ |7 b( v. h& l* k" Xfreertos 對FreeRTOS的適配例程(未完成)。posix 對符合POSIX標準的操作系統(tǒng)(如Linux、VxWork、MinGW等)的適配例程。stm32f030 對ARM Cortex-M0芯片的裸機運行(無RTOS)的例程。stm32f103 對ARM Cortex-M3芯片的裸機運行(無RTOS)的例程。test 對源碼進行的單元測試例程。digital_watch 電子表例程,狀態(tài)機的典型應用。
: ]: a" }/ p9 S8 q7 u) {; wtools! n8 H) L0 J6 Q8 t
一些Python腳本和工具。
# t' ] S8 P8 F9 {- a文檔 a0 ~/ J. E* p
文檔包含Doxygen代碼文檔的生成路徑(未完成)、圖片、代碼相關(guān)文檔(如快速入門文檔、移植文檔、開發(fā)環(huán)境搭建說明文檔等)。
3 U3 F' f( a% j來自: https://gitee.com/event-os/eventos0 ~+ t; g3 \8 V& R: l
-END- a7 e+ ?* w z2 ^# g- C( f
往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀
/ N# E0 Z! X2 P& B% K ! p; N* d/ d! u* B- N- @" _
& `) C) l! L- ~8 E( }% }
6 p q1 ^ T+ _/ ~8 J2 z, } + \7 B3 Z u7 k) W
psfh0ak1h1m6406064622.jpg (225.45 KB, 下載次數(shù): 1)
下載附件
保存到相冊
psfh0ak1h1m6406064622.jpg
2024-9-16 11:14 上傳
+ f4 Q1 U0 ]! Z2 K
?& P, S' _& I& y% Z: Y% Y 現(xiàn)場實測,用數(shù)據(jù)說話,星閃通信距離突破3.3公里!
' j" I5 s; r! W$ H3 T( d# P 8 _. v4 ]3 x+ |
# @; X: `6 i. W& d/ X
' r+ z( B9 r6 Y
+ u- ` \2 J4 {1 N. `5 i/ a, B
2e3mpgeydk26406064722.jpg (239.95 KB, 下載次數(shù): 1)
下載附件
保存到相冊
2e3mpgeydk26406064722.jpg
2024-9-16 11:14 上傳
3 i5 r5 z# @8 I0 ^
& b* ~, s9 O3 v0 M' Y; t- A& |1 B 樹莓派第二代微控制器 RP2350,終于拿到手了!~" |& {3 y3 d S& `
[( ` I/ C; s. n* B* t; U0 x6 z, }
" E" m/ ^+ f0 @# ^7 J# _
_. `8 Y1 { _; D# f
gaqe3ybogbt6406064822.jpg (176.13 KB, 下載次數(shù): 1)
下載附件
保存到相冊
gaqe3ybogbt6406064822.jpg
2024-9-16 11:14 上傳
* A* s5 ~) T) x0 X
5 G* ~' \# m8 L9 F 跟嵌入式技術(shù)相關(guān)的熱門應用,全都在這里了!# p! N; `4 Q3 G6 ~ V' f: W: E
7 f+ W2 {1 @: N) |4 C. ]) v
, I; l6 f* i5 v; _" H) C 8 }# H) m5 s% T* P
我是老溫,一名熱愛學習的嵌入式工程師
6 f I0 i9 ]1 z6 s3 b( J關(guān)注我,一起變得更加優(yōu)秀! |
|