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

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

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

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

[復制鏈接]

449

主題

449

帖子

588

積分

二級會員

Rank: 2

積分
588
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-9 17:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我是老溫,一名熱愛學習的嵌入式工程師' 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
/ 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) {; w
tools! 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

+ 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
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 * 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)秀!
回復

使用道具 舉報

發(fā)表回復

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

本版積分規(guī)則

關(guān)閉

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


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