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

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

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

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

[復(fù)制鏈接]

449

主題

449

帖子

586

積分

二級會員

Rank: 2

積分
586
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-9 17:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
* f2 F* d) m$ I  B" c+ H關(guān)注我,一起變得更加優(yōu)秀!( D/ O" ?6 p- G" \7 P- o
一、EventOS是什么?
9 C" Q$ ~$ c, b2 }* k( aEventOS,是一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺。它主要有兩大技術(shù)特色:一是事件驅(qū)動,二是超輕量。
9 ^" E" @$ O9 a  u- oEventOS以及其母項目EventOS,目標是開發(fā)一個企業(yè)級的嵌入式開發(fā)平臺,以事件總線為核心,打造一個統(tǒng)一的嵌入式技術(shù)生態(tài),* t# j$ H5 O- m. u7 w( `; }
為廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高開發(fā)效率的嵌入式開發(fā)環(huán)境。
! m9 f6 n  Q- bEventOS的主要特性列舉如下:# V2 y% n: w* \. G! Q
(1)事件總線為核心組件,靈活易用,是進行線程(狀態(tài)機)間同步或者通信的主要手段,也是對EventOS分布式特性和跨平臺開發(fā)進行支持的唯一手段。事件支持廣播發(fā)送,或者發(fā)布-訂閱機制兩種方式(二選一)。: j2 n/ o3 ^/ ]0 i8 N: W
(2)全局事件隊列,摒棄每個線程(狀態(tài)機)擁有自己的事件隊列的方式,只有一個全局事件隊列,極限壓縮對RAM的占用。
7 K4 z+ U( H$ u) R4 U(3)協(xié)作式內(nèi)核,優(yōu)點是不會產(chǎn)生資源競爭,極度可靠。
$ N7 e) E7 r- C7 A, Z(4)極度輕量,便于嵌入其他系統(tǒng),除事件總線外的所有特性(層次狀態(tài)機、平面狀態(tài)機、發(fā)布-訂閱機制、事件攜帶數(shù)據(jù)、事件橋等)均可裁剪,將資源占用降至極限,可低至ROM 1.2KB,RAM 172Byte?梢宰鳛樽酉到y(tǒng),“悄悄”嵌入到其他軟件系統(tǒng)中去。$ C( p5 W8 l: K+ c* }( I' \
(5)功能強大的軟定時器,以時間事件的形式,對軟定時器功能,進行優(yōu)雅且功能強大的實現(xiàn)。
9 F0 N: |$ f! T) g; C& X) ^(6)API的設(shè)計,更加簡明,更加符合本土嵌入式工程師的習(xí)慣。移植方便,只需實現(xiàn)少數(shù)幾個接口函數(shù)即可。
, o( n6 t0 t0 N: l9 x(7)未來會使用Event Bridge(事件橋)機制與EventOS打通事件總線,以便對EventOS的分布式特性進行支持。* m6 @- j  T% j4 Z6 `1 K
(8)重點關(guān)注三種應(yīng)用場景:中小資源單片機,作為模塊向其他軟件系統(tǒng)的嵌入和可靠性要求較高的嵌入式場景。6 y: w0 b4 v, o
EventOS的前身,曾經(jīng)讓我在過去的工作中受益匪淺,讓我非常高效的寫出了很多可靠的程序,能力和回報都有了質(zhì)的提升。9 T* ^$ W" n5 Z
現(xiàn)在,我將以前的技術(shù)成果整理重構(gòu),在各方面都向著規(guī)范的開源項目靠攏,包括源碼、注釋、文檔、單元測試和例程等等。
. t; H2 e$ E; u, s; ], B9 {未來,EventOS這個項目我會一直完善下去。我的目標是,將EventOS項目在2022年底前做成Gitee推薦項目,2024年年底前將EventOS項目,做成Gitee的GVP項目。造福更多的嵌入式工程師。; }0 o  C! ~0 y
$ }1 E7 W0 R, E8 L& t2 ^1 j
二、文檔與博客* G& H. d+ N  ?) s. a# {
EventOS的移植和入門,在documentation文件夾里,可以參考以下幾個文檔:(1)快速入門文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md
, e0 g% e& c# l# q(2)裸機移植文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md
" U/ u8 _' `2 Q2 z% M' L( F(3)開發(fā)環(huán)境搭建https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md1 l: H& j- K2 n
(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. W2 {  ]2 R2 c9 y
三、為什么叫做EventOS?, G2 q+ a  k5 S( g" u8 S
EventOS真的非常輕量。全功能的EventOS目前經(jīng)MDK編譯后,框架本身占用RAM 200Byte,ROM約3.5KB(優(yōu)化等級為-O3)或4.5KB(優(yōu)化等級為-O0)。
; U' T' w; Q* N* g! i裁剪后,最小功能的EventOS,目前經(jīng)MDK編譯后,框架本身占用RAM 172Byte,ROM約1.2KB(優(yōu)化等級為-O3)或1.5KB(優(yōu)化等級為-O0)。
5 y& J$ D/ b4 t/ A之所以叫EventOS,一是因為它的技術(shù)特色與核心思想,就是事件驅(qū)動;二是因為它是另外一個開源項目EventOS(準備中)的簡化實現(xiàn),, ~7 I% {6 M- L) q+ W
EventOS是一個事件驅(qū)動的、分布式的、可跨平臺開發(fā)的嵌入式RTOS,面向32位單片機和更高處理器的嵌入式開發(fā)平臺。; k: T5 L* \) w0 R; M; R
四、EventOS主張的編程思想
- z. a, d* `! t7 U事件驅(qū)動與事件總線
4 x* _/ K/ U2 E5 ^1 h8 x事件驅(qū)動和事件總線,是EventOS的核心,也是EventOS的核心。事件機制,與RTOS中事件概念完全不同,它更像是windows編程中的消息。
( U6 }, N% d& Q- \- N/ Y$ s9 E1 L4 o事件,可以認為是主題 + 不定長數(shù)據(jù),通過事件,可以極大解耦模塊間的耦合,增強軟件的可測試性,還可以進行跨平臺開發(fā)和分布式擴展。
6 T3 \/ P+ N3 v, N. T& P防御式編程
* y6 q& {1 Y; I2 u! FEventOS使用了大量的斷言,對系統(tǒng)的運行過程和用戶對EventOS的使用進行大量的檢查。7 B; {8 k2 N* ]$ E1 q9 h( I
我們強烈建議,用戶要對斷言接口函數(shù)進行精心的設(shè)計和實現(xiàn),在實際的產(chǎn)品代碼中,依然打開斷言。這樣,軟件將以非?斓乃俣龋諗坑诜(wěn)定狀態(tài)。, I5 b6 M/ T. W- x, Y, D9 g5 x
跨平臺開發(fā)8 u' s9 H. o: K6 z+ U6 N/ o
EventOS提倡跨平臺開發(fā)。所謂跨平臺開發(fā),就是在Windows和Linux等便捷友好的開發(fā)環(huán)境里,完成絕大部分的開發(fā)工作,包括編程、調(diào)試、運行和單元測試等工作,然后在目標平臺上進行最后的移植、調(diào)試和適配工作。
+ d1 Q3 `3 a+ J: q, g+ O跨平臺的優(yōu)點有很多,比如開發(fā)效率非常高、工程師進入到更多的編程領(lǐng)域和程序穩(wěn)定可靠等。EventOS主要在32位MinGW平臺和Linux平臺上開發(fā)。7 P5 \0 \+ w' G* X7 Q1 Y) Y1 t% a
開發(fā)環(huán)境的搭建,見文檔開發(fā)環(huán)境搭建。當然,也完全可以用MDK在單片機上直接開發(fā),效率稍低而已。3 Y! X9 B/ J2 c+ l( t9 Z
消除耦合; M" o0 w( |. g
無論是廣播式的事件發(fā)送機制,還是發(fā)布-訂閱式的事件發(fā)送機制,實際上,都是為了消除軟件模塊間的耦合。8 p& |3 f) w; i1 s1 o; ^' C( P) V
五、EventOS項目的維護原則8 |- K2 E3 F2 }
但行好事,不問前程4 t. |% I+ }  e( X. q) l
我完全沒有考慮過EventOS將來能夠如何,而且最近EventOS的發(fā)展有點超出我預(yù)計,我有點受寵若驚。
. v7 a: o5 \- a% R( K更多的人了解EventOS是一件好事,敦促這我把EventOS項目盡快做好,做完善,做成一個工業(yè)級的軟件產(chǎn)品,為廣大的嵌入式工作者創(chuàng)造便利。
) a. S  T  o; J% B, A希望EventOS最終被眾多工程師和企業(yè)認可,并在成千上萬的嵌入式產(chǎn)品中廣泛應(yīng)用起來,那就不枉我這些年深挖技術(shù)的努力。" o% Y8 \' e. O/ V$ l  u  g) c
源碼文檔并進
6 y; V% z' V# b我深知完善豐富的文檔,對一個開源項目的重要意義。因此,我堅持每一個特性的升級,每一個BUG的修復(fù),都跟隨著相應(yīng)的文檔。' K7 e# s1 H2 ~$ a2 q+ D# v, q2 |% f
讓EventOS和EventOS項目的文檔專業(yè)化、體系化,包含用戶手冊、版本特性、原理說明、博客、例程等等。; ^1 ]# t: I* `5 ]3 x. ~" P
單元測試優(yōu)先
7 S9 c7 G% S  q9 }1 Z! b- p. f% ]4 |嵌入式的開源項目,用戶最關(guān)心的,是軟件的可靠性。單元測試,是保證軟件健壯與可靠的重要手段。對于EventOS這種系統(tǒng)級、框架級的軟件,穩(wěn)定性與可靠性更加重要。
8 d4 S, e0 }2 k( {3 z' e從EventOS誕生之日起,它就是面向單元測試的。詳盡而嚴謹?shù)膯卧獪y試,保證了EventOS將絕大多數(shù)的BUG,消除在了開發(fā)階段。EventOS的每一次重構(gòu)、升級與發(fā)布,都是經(jīng)過了嚴謹?shù)膯卧獪y試的。# a. D$ j9 D! C- ]# \/ H6 l8 h
用戶至上,需求至上
+ O( E) `! }: R; |軟件如何發(fā)展,代碼向哪個方向前進,EventOS完全聽從用戶們的聲音,完全從需求出發(fā)。我們從各個渠道,微信、QQ、論壇等獲取的意見建議,都將體現(xiàn)到EventOS的開發(fā)中去。# O- Y4 Q) B3 L5 V
六、代碼結(jié)構(gòu)" t" W0 Q: `/ Q7 u0 \
核心代碼
$ D8 r+ {6 ~/ o# U! @eventos/eventos.c EventOS狀態(tài)機框架的實現(xiàn)eventos/eventos.h 頭文件eventos/eventos_config.h 對EventOS進行配置與裁剪7 n0 r- t) q5 C( T) |7 L8 m$ }
第三方代碼庫
" c- }0 n% b* |; n5 A) N. _RTT Segger JLink所提供的日志庫,依賴于JLink硬件。unity 單元測試框架9 F0 G2 U" i  d/ h) \, ~
例程代碼
5 h. @" y7 n" qfreertos 對FreeRTOS的適配例程(未完成)。posix 對符合POSIX標準的操作系統(tǒng)(如Linux、VxWork、MinGW等)的適配例程。stm32f030 對ARM Cortex-M0芯片的裸機運行(無RTOS)的例程。stm32f103 對ARM Cortex-M3芯片的裸機運行(無RTOS)的例程。test 對源碼進行的單元測試例程。digital_watch 電子表例程,狀態(tài)機的典型應(yīng)用。
! a1 }# _9 s# c) h  m$ a8 p
tools
5 E/ E" v  e1 m2 j9 p2 Z+ Q; C, I7 a一些Python腳本和工具。3 t  ^& L" p& p; E
文檔
/ a5 |" P, w; Y! s9 `文檔包含Doxygen代碼文檔的生成路徑(未完成)、圖片、代碼相關(guān)文檔(如快速入門文檔、移植文檔、開發(fā)環(huán)境搭建說明文檔等)。6 A1 e6 c( p4 a' {# F. M7 S8 u/ @2 C! e
來自: https://gitee.com/event-os/eventos
& q2 L. U# T" j) _% E: X+ ~-END-
# {9 V/ L% U2 ~# y/ p5 j往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀! E  a. A( L9 b
                                                       
9 E& |: k! s* M                                                                " y& w$ x" l8 J: d  S+ z8 f& C
                                                                       
) J5 y- k0 a; L2 c1 w6 |                                                                               
& t% R7 o9 |* Y3 m& L 4 W( z% t/ C/ p9 N  w
                                                                               
. v' n  d$ E, r) Z7 M- l, u8 d                                                                                        現(xiàn)場實測,用數(shù)據(jù)說話,星閃通信距離突破3.3公里!
( Q  U; v  p+ E  {                                                        : O% w2 k, ~' Z- E
                                                               
/ ~! P" ?1 b/ X2 m* u0 j                                                                        2 f( B  p* q4 b, Z' J) ?
                                                                                % g( l) g, i  ^  i2 `8 \
" V% e9 F6 W. z4 m
                                                                               
5 p4 o0 I  L3 A" B0 m                                                                                        樹莓派第二代微控制器 RP2350,終于拿到手了!~
" a7 V1 d. S. q8 f  j( K( l2 S                                                                3 |' Y: Q4 }/ N4 V
                                                                        ) Q4 j8 h, \2 p8 B
                                                                               
3 Z' x8 ^& s' ]0 j: c7 K7 Y
4 e, @! S2 b. h& B                                                                               
1 J1 _2 `  W6 s$ f" r; C3 ]                                                                                        跟嵌入式技術(shù)相關(guān)的熱門應(yīng)用,全都在這里了!0 t9 s' X7 v0 K; V  b& C( ~
                                                                               
6 p0 n6 N4 W) S! M7 F: ?- _& z                                                                        " n4 ?# W8 Q# ]4 v% ^
                                                               
8 ]9 K$ z2 ]; J. H. g# @: i                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師! B6 i5 Z6 }# T6 X% w
關(guān)注我,一起變得更加優(yōu)秀!
回復(fù)

使用道具 舉報

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

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

本版積分規(guī)則

關(guān)閉

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


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