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

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

搜索
查看: 23|回復(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í)的嵌入式工程師
2 C+ `; k  G1 h6 q$ ]- E關(guān)注我,一起變得更加優(yōu)秀!
4 L/ ^9 e0 T- V  z( R" u( E  A一、EventOS是什么?# v7 r: {4 J: c1 j9 _. W0 V4 k
EventOS,是一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺。它主要有兩大技術(shù)特色:一是事件驅(qū)動,二是超輕量。
8 _$ n9 C2 z7 k3 _, |6 O+ [: JEventOS以及其母項目EventOS,目標(biāo)是開發(fā)一個企業(yè)級的嵌入式開發(fā)平臺,以事件總線為核心,打造一個統(tǒng)一的嵌入式技術(shù)生態(tài),% |: L& p: |( P1 }- g) q4 }
為廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高開發(fā)效率的嵌入式開發(fā)環(huán)境。
* R. u; g2 c% [+ o' ?# U1 z7 MEventOS的主要特性列舉如下:
+ G* G; ~& q. e0 B$ T& i6 f  E(1)事件總線為核心組件,靈活易用,是進行線程(狀態(tài)機)間同步或者通信的主要手段,也是對EventOS分布式特性和跨平臺開發(fā)進行支持的唯一手段。事件支持廣播發(fā)送,或者發(fā)布-訂閱機制兩種方式(二選一)。
# x: j3 G) q( N2 b* V  J2 w( E(2)全局事件隊列,摒棄每個線程(狀態(tài)機)擁有自己的事件隊列的方式,只有一個全局事件隊列,極限壓縮對RAM的占用。2 v& E  X4 X- u2 O' J6 z7 f# R
(3)協(xié)作式內(nèi)核,優(yōu)點是不會產(chǎn)生資源競爭,極度可靠。$ S4 R* y/ W: z( O
(4)極度輕量,便于嵌入其他系統(tǒng),除事件總線外的所有特性(層次狀態(tài)機、平面狀態(tài)機、發(fā)布-訂閱機制、事件攜帶數(shù)據(jù)、事件橋等)均可裁剪,將資源占用降至極限,可低至ROM 1.2KB,RAM 172Byte?梢宰鳛樽酉到y(tǒng),“悄悄”嵌入到其他軟件系統(tǒng)中去。
& |! S) n7 B7 S# c(5)功能強大的軟定時器,以時間事件的形式,對軟定時器功能,進行優(yōu)雅且功能強大的實現(xiàn)。5 U& {, X  U( V9 Q
(6)API的設(shè)計,更加簡明,更加符合本土嵌入式工程師的習(xí)慣。移植方便,只需實現(xiàn)少數(shù)幾個接口函數(shù)即可。
  ~$ v# N( L4 j7 ]* i(7)未來會使用Event Bridge(事件橋)機制與EventOS打通事件總線,以便對EventOS的分布式特性進行支持。
8 L. \' B% j1 H$ y! n0 |; k(8)重點關(guān)注三種應(yīng)用場景:中小資源單片機,作為模塊向其他軟件系統(tǒng)的嵌入和可靠性要求較高的嵌入式場景。4 X$ S/ W" ^- H$ ^/ K* {
EventOS的前身,曾經(jīng)讓我在過去的工作中受益匪淺,讓我非常高效的寫出了很多可靠的程序,能力和回報都有了質(zhì)的提升。
' r" e1 Q! K0 r0 V" A) N; S現(xiàn)在,我將以前的技術(shù)成果整理重構(gòu),在各方面都向著規(guī)范的開源項目靠攏,包括源碼、注釋、文檔、單元測試和例程等等。( T' N( t1 g: K. x
未來,EventOS這個項目我會一直完善下去。我的目標(biāo)是,將EventOS項目在2022年底前做成Gitee推薦項目,2024年年底前將EventOS項目,做成Gitee的GVP項目。造福更多的嵌入式工程師。7 B6 S, j9 k/ t+ y

+ R: k" {8 s- F二、文檔與博客, f( ]7 K# K5 B9 X: N6 o
EventOS的移植和入門,在documentation文件夾里,可以參考以下幾個文檔:(1)快速入門文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md* T+ C2 t) v, w8 @2 x  q
(2)裸機移植文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md
& x/ c+ i* \2 Y# w; [(3)開發(fā)環(huán)境搭建https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md/ R3 S' C( x* w$ c, `4 Q
(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  g% z$ X/ w$ c' O8 U
三、為什么叫做EventOS?- f: Z9 ~+ c$ N. {1 M  X. c
EventOS真的非常輕量。全功能的EventOS目前經(jīng)MDK編譯后,框架本身占用RAM 200Byte,ROM約3.5KB(優(yōu)化等級為-O3)或4.5KB(優(yōu)化等級為-O0)。+ K5 M" y% O6 h% X
裁剪后,最小功能的EventOS,目前經(jīng)MDK編譯后,框架本身占用RAM 172Byte,ROM約1.2KB(優(yōu)化等級為-O3)或1.5KB(優(yōu)化等級為-O0)。
7 z8 n5 i8 E( Y. n$ s" q之所以叫EventOS,一是因為它的技術(shù)特色與核心思想,就是事件驅(qū)動;二是因為它是另外一個開源項目EventOS(準(zhǔn)備中)的簡化實現(xiàn),; F1 z3 }" {; M3 d1 ~# U( X6 j
EventOS是一個事件驅(qū)動的、分布式的、可跨平臺開發(fā)的嵌入式RTOS,面向32位單片機和更高處理器的嵌入式開發(fā)平臺。
1 u: ^: j0 O* w5 R  a+ c2 V$ G四、EventOS主張的編程思想
; n( T. P1 S: b% c* ^% L) ~事件驅(qū)動與事件總線
' Z( S& h: {# @& j/ d# Y8 n事件驅(qū)動和事件總線,是EventOS的核心,也是EventOS的核心。事件機制,與RTOS中事件概念完全不同,它更像是windows編程中的消息。
7 F: J# I( K, _1 U( C事件,可以認(rèn)為是主題 + 不定長數(shù)據(jù),通過事件,可以極大解耦模塊間的耦合,增強軟件的可測試性,還可以進行跨平臺開發(fā)和分布式擴展。: F! L! x9 t/ H0 D2 @- g
防御式編程5 m2 \0 j. V8 }0 }
EventOS使用了大量的斷言,對系統(tǒng)的運行過程和用戶對EventOS的使用進行大量的檢查。& G" N6 @0 _/ Z
我們強烈建議,用戶要對斷言接口函數(shù)進行精心的設(shè)計和實現(xiàn),在實際的產(chǎn)品代碼中,依然打開斷言。這樣,軟件將以非常快的速度,收斂于穩(wěn)定狀態(tài)。2 z3 B0 L7 H( |8 I5 W7 k* L. v9 u
跨平臺開發(fā)- e& U& w- H6 [
EventOS提倡跨平臺開發(fā)。所謂跨平臺開發(fā),就是在Windows和Linux等便捷友好的開發(fā)環(huán)境里,完成絕大部分的開發(fā)工作,包括編程、調(diào)試、運行和單元測試等工作,然后在目標(biāo)平臺上進行最后的移植、調(diào)試和適配工作。
/ V4 D8 p- T0 W跨平臺的優(yōu)點有很多,比如開發(fā)效率非常高、工程師進入到更多的編程領(lǐng)域和程序穩(wěn)定可靠等。EventOS主要在32位MinGW平臺和Linux平臺上開發(fā)。7 H- t% y0 E0 B3 M
開發(fā)環(huán)境的搭建,見文檔開發(fā)環(huán)境搭建。當(dāng)然,也完全可以用MDK在單片機上直接開發(fā),效率稍低而已。
8 m# c' y8 F0 @) n& m消除耦合
' s, d2 o4 T; o) I3 @無論是廣播式的事件發(fā)送機制,還是發(fā)布-訂閱式的事件發(fā)送機制,實際上,都是為了消除軟件模塊間的耦合。
* h$ q2 V6 J& B7 [9 }! b1 }五、EventOS項目的維護原則2 B( h0 e: C& w2 k% o3 i
但行好事,不問前程
# Y: P1 P6 H0 m我完全沒有考慮過EventOS將來能夠如何,而且最近EventOS的發(fā)展有點超出我預(yù)計,我有點受寵若驚。/ ]. e% w- t9 p+ c/ O& X
更多的人了解EventOS是一件好事,敦促這我把EventOS項目盡快做好,做完善,做成一個工業(yè)級的軟件產(chǎn)品,為廣大的嵌入式工作者創(chuàng)造便利。- E8 U  O7 p2 P* z$ O4 n
希望EventOS最終被眾多工程師和企業(yè)認(rèn)可,并在成千上萬的嵌入式產(chǎn)品中廣泛應(yīng)用起來,那就不枉我這些年深挖技術(shù)的努力。
  o) Y% w" u- v8 ^; c源碼文檔并進$ A- Q9 w* G# L* d, ?3 n
我深知完善豐富的文檔,對一個開源項目的重要意義。因此,我堅持每一個特性的升級,每一個BUG的修復(fù),都跟隨著相應(yīng)的文檔。5 T, C4 l4 h! A  c- |
讓EventOS和EventOS項目的文檔專業(yè)化、體系化,包含用戶手冊、版本特性、原理說明、博客、例程等等。) {8 R: u6 U8 @. x0 _
單元測試優(yōu)先
. z7 e9 x* j: t, }嵌入式的開源項目,用戶最關(guān)心的,是軟件的可靠性。單元測試,是保證軟件健壯與可靠的重要手段。對于EventOS這種系統(tǒng)級、框架級的軟件,穩(wěn)定性與可靠性更加重要。$ T* j5 j: W! u( T7 f2 C2 M
從EventOS誕生之日起,它就是面向單元測試的。詳盡而嚴(yán)謹(jǐn)?shù)膯卧獪y試,保證了EventOS將絕大多數(shù)的BUG,消除在了開發(fā)階段。EventOS的每一次重構(gòu)、升級與發(fā)布,都是經(jīng)過了嚴(yán)謹(jǐn)?shù)膯卧獪y試的。
( }9 a9 v, S) d/ i4 q
用戶至上,需求至上
( `' B7 M# q5 U軟件如何發(fā)展,代碼向哪個方向前進,EventOS完全聽從用戶們的聲音,完全從需求出發(fā)。我們從各個渠道,微信、QQ、論壇等獲取的意見建議,都將體現(xiàn)到EventOS的開發(fā)中去。# S* U5 T5 ]" L: U
六、代碼結(jié)構(gòu)' @( U3 V2 |# {: M0 t% e0 d2 }- I
核心代碼. D, N% r1 n9 b$ U# z: x, v
eventos/eventos.c EventOS狀態(tài)機框架的實現(xiàn)eventos/eventos.h 頭文件eventos/eventos_config.h 對EventOS進行配置與裁剪. S8 g0 U( O( y* y5 Q
第三方代碼庫1 ^( u  h7 D, f$ I9 G/ j
RTT Segger JLink所提供的日志庫,依賴于JLink硬件。unity 單元測試框架% i6 N, Q$ k6 M. f% b
例程代碼) }9 Z7 j& ~9 F2 N
freertos 對FreeRTOS的適配例程(未完成)。posix 對符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)(如Linux、VxWork、MinGW等)的適配例程。stm32f030 對ARM Cortex-M0芯片的裸機運行(無RTOS)的例程。stm32f103 對ARM Cortex-M3芯片的裸機運行(無RTOS)的例程。test 對源碼進行的單元測試?yán)。digital_watch 電子表例程,狀態(tài)機的典型應(yīng)用。! V+ {  G6 x4 b( ?3 G- Z
tools( j  ?- }+ q  \+ ^
一些Python腳本和工具。
1 u9 l1 ^  w$ H, k! x1 j文檔/ F" L8 b2 A0 m+ H! n! F
文檔包含Doxygen代碼文檔的生成路徑(未完成)、圖片、代碼相關(guān)文檔(如快速入門文檔、移植文檔、開發(fā)環(huán)境搭建說明文檔等)。; B& i1 Y0 ]. S. i! Q5 B
來自: https://gitee.com/event-os/eventos
6 u; v8 c( M3 X; L3 _, y-END-
9 j1 l2 s( N( C7 t$ i往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀- A/ f8 N3 j5 F# I# G$ R
                                                       
5 m& x9 Z7 A( \# N& R                                                                : D, R2 X2 [3 `6 E* y7 D7 u% p
                                                                        , S' s" t6 v( y9 B. `
                                                                               
" y6 k; N/ @; y( f9 i. O & }0 Y7 n9 g3 {, u  p
                                                                               
2 H% n1 z' {+ Z6 t9 G" S& o                                                                                        現(xiàn)場實測,用數(shù)據(jù)說話,星閃通信距離突破3.3公里!
. `7 J( T6 _# S* a& p7 @! u                                                        , j. b3 K5 k5 v4 q7 p3 h
                                                               
$ @( ^- h( m7 t& e" ^6 o                                                                       
* g4 F; u. i% c, d) S, H$ `& ]                                                                               
8 ^6 u$ k* r0 U 5 _7 s' ^5 c% t1 t- N, N) w
                                                                                  `9 m0 H6 m; m( ?. G) C$ b% y. d1 E8 |
                                                                                        樹莓派第二代微控制器 RP2350,終于拿到手了!~
  j) m& v: B; ^  t% C0 j. l                                                                / d$ k* h% {9 z7 n  a
                                                                       
) v4 O3 L& n/ n* H: E3 ~                                                                                6 v9 z1 {% l+ b0 T* K

+ Y- ~6 k- c& M0 o2 h                                                                                * ?1 l  u0 p- C0 e. C0 Z- N' ]
                                                                                        跟嵌入式技術(shù)相關(guān)的熱門應(yīng)用,全都在這里了!! f8 J" E. z4 _" X/ @" H4 U' I
                                                                               
5 |$ M" n( u( ?5 J7 W6 {2 T                                                                       
, T1 a; G6 g; R( f% E$ v                                                               
7 }5 N* k& x' b# t% Y0 G                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師6 M; O+ R  v1 C+ C# ?8 ~
關(guān)注我,一起變得更加優(yōu)秀!
回復(fù)

使用道具 舉報

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

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

本版積分規(guī)則

關(guān)閉

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


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