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

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

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

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

[復(fù)制鏈接]

449

主題

449

帖子

586

積分

二級(jí)會(huì)員

Rank: 2

積分
586
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-9 17:50:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
7 Q2 R+ ~" ?! l! ]關(guān)注我,一起變得更加優(yōu)秀!
. ~. R$ {, n' O一、EventOS是什么?
2 b' _3 P+ l2 j$ T% ^EventOS,是一個(gè)面向單片機(jī)、事件驅(qū)動(dòng)的嵌入式開發(fā)平臺(tái)。它主要有兩大技術(shù)特色:一是事件驅(qū)動(dòng),二是超輕量。
/ k" P# X6 Q: l/ \/ D2 z1 c: |EventOS以及其母項(xiàng)目EventOS,目標(biāo)是開發(fā)一個(gè)企業(yè)級(jí)的嵌入式開發(fā)平臺(tái),以事件總線為核心,打造一個(gè)統(tǒng)一的嵌入式技術(shù)生態(tài),
1 [- @2 T* i7 o, l( t2 d為廣大企業(yè)用戶和嵌入式開發(fā)者們,提供搞可靠性的、高性能的、現(xiàn)代且高開發(fā)效率的嵌入式開發(fā)環(huán)境。
" D$ Q% H; o4 p" s9 d3 O/ HEventOS的主要特性列舉如下:6 V3 f: W4 y6 u
(1)事件總線為核心組件,靈活易用,是進(jìn)行線程(狀態(tài)機(jī))間同步或者通信的主要手段,也是對(duì)EventOS分布式特性和跨平臺(tái)開發(fā)進(jìn)行支持的唯一手段。事件支持廣播發(fā)送,或者發(fā)布-訂閱機(jī)制兩種方式(二選一)。, R# w  n( E" V( n4 J+ O4 Q/ b
(2)全局事件隊(duì)列,摒棄每個(gè)線程(狀態(tài)機(jī))擁有自己的事件隊(duì)列的方式,只有一個(gè)全局事件隊(duì)列,極限壓縮對(duì)RAM的占用。
/ V/ o& s% O6 J% y7 E4 }(3)協(xié)作式內(nèi)核,優(yōu)點(diǎn)是不會(huì)產(chǎn)生資源競(jìng)爭(zhēng),極度可靠。
* ^7 d( ]7 P# y3 D% D(4)極度輕量,便于嵌入其他系統(tǒng),除事件總線外的所有特性(層次狀態(tài)機(jī)、平面狀態(tài)機(jī)、發(fā)布-訂閱機(jī)制、事件攜帶數(shù)據(jù)、事件橋等)均可裁剪,將資源占用降至極限,可低至ROM 1.2KB,RAM 172Byte?梢宰鳛樽酉到y(tǒng),“悄悄”嵌入到其他軟件系統(tǒng)中去。5 D& ~' N+ \  g( g* X) h5 H0 c
(5)功能強(qiáng)大的軟定時(shí)器,以時(shí)間事件的形式,對(duì)軟定時(shí)器功能,進(jìn)行優(yōu)雅且功能強(qiáng)大的實(shí)現(xiàn)。
( K, R3 s7 E8 r1 F) s2 H(6)API的設(shè)計(jì),更加簡(jiǎn)明,更加符合本土嵌入式工程師的習(xí)慣。移植方便,只需實(shí)現(xiàn)少數(shù)幾個(gè)接口函數(shù)即可。
0 f  m8 S4 O3 Q+ s) B" }4 e(7)未來(lái)會(huì)使用Event Bridge(事件橋)機(jī)制與EventOS打通事件總線,以便對(duì)EventOS的分布式特性進(jìn)行支持。1 c) A+ m/ H9 \4 }0 D, j! D+ }5 _
(8)重點(diǎn)關(guān)注三種應(yīng)用場(chǎng)景:中小資源單片機(jī),作為模塊向其他軟件系統(tǒng)的嵌入和可靠性要求較高的嵌入式場(chǎng)景。
' Q  P' e. S$ x; w& X6 FEventOS的前身,曾經(jīng)讓我在過(guò)去的工作中受益匪淺,讓我非常高效的寫出了很多可靠的程序,能力和回報(bào)都有了質(zhì)的提升。
/ d0 a' b+ j- K3 I8 _* _現(xiàn)在,我將以前的技術(shù)成果整理重構(gòu),在各方面都向著規(guī)范的開源項(xiàng)目靠攏,包括源碼、注釋、文檔、單元測(cè)試和例程等等。
  ?6 I$ ~, i# X7 L" @% C, f: q/ N未來(lái),EventOS這個(gè)項(xiàng)目我會(huì)一直完善下去。我的目標(biāo)是,將EventOS項(xiàng)目在2022年底前做成Gitee推薦項(xiàng)目,2024年年底前將EventOS項(xiàng)目,做成Gitee的GVP項(xiàng)目。造福更多的嵌入式工程師。
" R+ t3 p  o, I! {% e
9 c) u* `6 X) n8 L  J9 a二、文檔與博客  ~/ |, n2 x2 v  ]& M; s! P' p& U- c
EventOS的移植和入門,在documentation文件夾里,可以參考以下幾個(gè)文檔:(1)快速入門文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md; q6 @. r$ Z) x" [5 L$ u
(2)裸機(jī)移植文檔https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md. k9 N" a7 @& I1 m+ n5 t6 z+ H
(3)開發(fā)環(huán)境搭建https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md# t& ?5 i. s0 B" b; 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.md9 E- Z# C8 G$ X' [4 W% p
三、為什么叫做EventOS?
% |- U3 d* b* t. p  @+ [' g7 x% u0 y# NEventOS真的非常輕量。全功能的EventOS目前經(jīng)MDK編譯后,框架本身占用RAM 200Byte,ROM約3.5KB(優(yōu)化等級(jí)為-O3)或4.5KB(優(yōu)化等級(jí)為-O0)。$ F8 _9 m3 g3 B( k1 n1 U$ [
裁剪后,最小功能的EventOS,目前經(jīng)MDK編譯后,框架本身占用RAM 172Byte,ROM約1.2KB(優(yōu)化等級(jí)為-O3)或1.5KB(優(yōu)化等級(jí)為-O0)。. Y9 u! D/ i( _6 e
之所以叫EventOS,一是因?yàn)樗募夹g(shù)特色與核心思想,就是事件驅(qū)動(dòng);二是因?yàn)樗橇硗庖粋(gè)開源項(xiàng)目EventOS(準(zhǔn)備中)的簡(jiǎn)化實(shí)現(xiàn),
. d  L7 n, A. e- p4 s3 P3 rEventOS是一個(gè)事件驅(qū)動(dòng)的、分布式的、可跨平臺(tái)開發(fā)的嵌入式RTOS,面向32位單片機(jī)和更高處理器的嵌入式開發(fā)平臺(tái)。
& Z, U( e& I) f四、EventOS主張的編程思想+ l; G; [' W( J5 C
事件驅(qū)動(dòng)與事件總線& O  f+ z3 V2 n# K' c
事件驅(qū)動(dòng)和事件總線,是EventOS的核心,也是EventOS的核心。事件機(jī)制,與RTOS中事件概念完全不同,它更像是windows編程中的消息。3 ?2 g* l% d. \+ j! V7 M+ w! t
事件,可以認(rèn)為是主題 + 不定長(zhǎng)數(shù)據(jù),通過(guò)事件,可以極大解耦模塊間的耦合,增強(qiáng)軟件的可測(cè)試性,還可以進(jìn)行跨平臺(tái)開發(fā)和分布式擴(kuò)展。' X$ S! f7 F0 K) _+ e
防御式編程# u2 A2 h$ O! i
EventOS使用了大量的斷言,對(duì)系統(tǒng)的運(yùn)行過(guò)程和用戶對(duì)EventOS的使用進(jìn)行大量的檢查。1 s* o9 P6 ]* L, A& H! L
我們強(qiáng)烈建議,用戶要對(duì)斷言接口函數(shù)進(jìn)行精心的設(shè)計(jì)和實(shí)現(xiàn),在實(shí)際的產(chǎn)品代碼中,依然打開斷言。這樣,軟件將以非常快的速度,收斂于穩(wěn)定狀態(tài)。
! B0 t; V; H3 h- ?$ L跨平臺(tái)開發(fā)- e9 e2 u: \! e4 V, B1 X; F9 c
EventOS提倡跨平臺(tái)開發(fā)。所謂跨平臺(tái)開發(fā),就是在Windows和Linux等便捷友好的開發(fā)環(huán)境里,完成絕大部分的開發(fā)工作,包括編程、調(diào)試、運(yùn)行和單元測(cè)試等工作,然后在目標(biāo)平臺(tái)上進(jìn)行最后的移植、調(diào)試和適配工作。
& m$ J. c- r2 e/ g7 K跨平臺(tái)的優(yōu)點(diǎn)有很多,比如開發(fā)效率非常高、工程師進(jìn)入到更多的編程領(lǐng)域和程序穩(wěn)定可靠等。EventOS主要在32位MinGW平臺(tái)和Linux平臺(tái)上開發(fā)。
3 B3 n& F  X, U/ U: {! Z9 ~: O, q) e8 s開發(fā)環(huán)境的搭建,見文檔開發(fā)環(huán)境搭建。當(dāng)然,也完全可以用MDK在單片機(jī)上直接開發(fā),效率稍低而已。
) ]# c( B+ @& i8 m5 t; a消除耦合
2 I8 L/ G9 S( R無(wú)論是廣播式的事件發(fā)送機(jī)制,還是發(fā)布-訂閱式的事件發(fā)送機(jī)制,實(shí)際上,都是為了消除軟件模塊間的耦合。
$ r: |- ~9 W' U  B; d6 z$ b五、EventOS項(xiàng)目的維護(hù)原則% {* v' ^$ D: i" @, t
但行好事,不問(wèn)前程
( H, L7 g# P( S; k我完全沒有考慮過(guò)EventOS將來(lái)能夠如何,而且最近EventOS的發(fā)展有點(diǎn)超出我預(yù)計(jì),我有點(diǎn)受寵若驚。
: I6 f9 o1 T! {. S更多的人了解EventOS是一件好事,敦促這我把EventOS項(xiàng)目盡快做好,做完善,做成一個(gè)工業(yè)級(jí)的軟件產(chǎn)品,為廣大的嵌入式工作者創(chuàng)造便利。4 @. x+ C4 `2 o8 v! s' J4 X4 x" V
希望EventOS最終被眾多工程師和企業(yè)認(rèn)可,并在成千上萬(wàn)的嵌入式產(chǎn)品中廣泛應(yīng)用起來(lái),那就不枉我這些年深挖技術(shù)的努力。
& Y, y8 S1 T% N: z% M+ ]源碼文檔并進(jìn)$ d6 R; _0 b( g6 X; d1 q
我深知完善豐富的文檔,對(duì)一個(gè)開源項(xiàng)目的重要意義。因此,我堅(jiān)持每一個(gè)特性的升級(jí),每一個(gè)BUG的修復(fù),都跟隨著相應(yīng)的文檔。. a! q1 |7 l& v& q4 u# o7 j1 ^
讓EventOS和EventOS項(xiàng)目的文檔專業(yè)化、體系化,包含用戶手冊(cè)、版本特性、原理說(shuō)明、博客、例程等等。) E. [, ?4 s$ v/ |! u
單元測(cè)試優(yōu)先
  d2 q0 n& D" {' Z* T0 u. [" r  F嵌入式的開源項(xiàng)目,用戶最關(guān)心的,是軟件的可靠性。單元測(cè)試,是保證軟件健壯與可靠的重要手段。對(duì)于EventOS這種系統(tǒng)級(jí)、框架級(jí)的軟件,穩(wěn)定性與可靠性更加重要。& w0 o2 J4 e2 ]3 e3 @6 _
從EventOS誕生之日起,它就是面向單元測(cè)試的。詳盡而嚴(yán)謹(jǐn)?shù)膯卧獪y(cè)試,保證了EventOS將絕大多數(shù)的BUG,消除在了開發(fā)階段。EventOS的每一次重構(gòu)、升級(jí)與發(fā)布,都是經(jīng)過(guò)了嚴(yán)謹(jǐn)?shù)膯卧獪y(cè)試的。
9 L+ Y& l% o: e% j: y1 I* H9 k
用戶至上,需求至上
$ ]/ T- A" P+ Y/ z. L- |5 r' J軟件如何發(fā)展,代碼向哪個(gè)方向前進(jìn),EventOS完全聽從用戶們的聲音,完全從需求出發(fā)。我們從各個(gè)渠道,微信、QQ、論壇等獲取的意見建議,都將體現(xiàn)到EventOS的開發(fā)中去。
/ S0 x9 ]6 H( ?4 I3 L六、代碼結(jié)構(gòu)1 F9 ^" O  `0 c# S
核心代碼( ?5 d! k: V% i& h, i3 [7 [0 N
eventos/eventos.c EventOS狀態(tài)機(jī)框架的實(shí)現(xiàn)eventos/eventos.h 頭文件eventos/eventos_config.h 對(duì)EventOS進(jìn)行配置與裁剪
4 g1 g4 A; @% s/ d* N第三方代碼庫(kù)
/ u0 J' J' ?- _; P  ^) ^RTT Segger JLink所提供的日志庫(kù),依賴于JLink硬件。unity 單元測(cè)試框架
- T/ _+ x5 j% Y& j# ?! K' v例程代碼6 u2 O8 [3 C) t# |' @
freertos 對(duì)FreeRTOS的適配例程(未完成)。posix 對(duì)符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)(如Linux、VxWork、MinGW等)的適配例程。stm32f030 對(duì)ARM Cortex-M0芯片的裸機(jī)運(yùn)行(無(wú)RTOS)的例程。stm32f103 對(duì)ARM Cortex-M3芯片的裸機(jī)運(yùn)行(無(wú)RTOS)的例程。test 對(duì)源碼進(jìn)行的單元測(cè)試?yán)獭igital_watch 電子表例程,狀態(tài)機(jī)的典型應(yīng)用。
; V/ t$ l  ^- @5 Q- h) q' S
tools
9 A4 x% q0 B, c5 {6 a0 W; ]一些Python腳本和工具。
' z1 S9 j! r+ i9 T2 }. u9 `* Z文檔
2 v' {6 a: Y- O文檔包含Doxygen代碼文檔的生成路徑(未完成)、圖片、代碼相關(guān)文檔(如快速入門文檔、移植文檔、開發(fā)環(huán)境搭建說(shuō)明文檔等)。
4 O( I& s7 Z0 n$ E5 b+ n- S來(lái)自: https://gitee.com/event-os/eventos2 c8 q' P* B# ]9 b) A; z7 e6 r
-END-: H- l  S7 b* r4 X  H
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀8 r2 j$ L; L  t3 E' v" a0 P
                                                        ' q  C) Q" T6 ?# J: P/ P2 c
                                                               
4 t7 D4 G) Z; p0 i  k; i9 b                                                                        : }; o! ~- I- i( l& w6 w8 [, S
                                                                                ' f. P5 a4 q% J2 M. z! r
  A! f& l4 f' @- O/ o3 C: ?
                                                                               
$ s0 m3 S: v' K$ C# u' z                                                                                        現(xiàn)場(chǎng)實(shí)測(cè),用數(shù)據(jù)說(shuō)話,星閃通信距離突破3.3公里!3 R! o* o0 J; R3 z9 i8 g8 `; q7 a$ b
                                                        & T7 u5 g1 c! z* t* m& R) B+ \
                                                               
1 L, S: O" q7 F( Z, h# Y* _                                                                       
1 y$ b: W8 @5 |" J2 H( p+ {" _                                                                               
  _5 K* g' O7 W7 ^1 o; C 7 b* ~( M# b- B0 y
                                                                                3 Z) p) j# B7 {# L: _7 Z; [1 w* k  j
                                                                                        樹莓派第二代微控制器 RP2350,終于拿到手了!~) `3 u1 b$ i! Y7 h
                                                                ) v2 x% U  c6 R! X' m" T. e5 j
                                                                       
; e% k) l/ X& N                                                                                ; l+ v, w, f0 v) P7 S0 ~: t

8 O& Y6 e6 ?' i4 d; T$ y                                                                                9 D' d# e% {6 n
                                                                                        跟嵌入式技術(shù)相關(guān)的熱門應(yīng)用,全都在這里了!
2 S6 ~+ |) p) \8 {8 z% W                                                                               
- V+ L! d' Y8 U  ~6 T                                                                       
$ I+ [- k5 s! E# E: g. s                                                               
2 @! x4 k! I1 q7 P: O: N! G7 P                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
4 ~. |* k( ], [! y關(guān)注我,一起變得更加優(yōu)秀!

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

本版積分規(guī)則

關(guān)閉

站長(zhǎng)推薦上一條 /1 下一條


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