分享一个面向MCU的事件调度器

strongerHuang 2025-10-28 08:00

关注+星标公众,不错过精彩内容

作者 | 刘东晨

来源 | Gitee

今天分享一个面向单片机的事件调度器,地址:

https://gitee.com/event-os/eventos
分享一个面向MCU的事件调度器图1

一、EventOS是什么?

EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。

EventOS以及其母项目EventOS,目标是开发一个企业级的嵌入式开发平台,以事件总线为核心,打造一个统一的嵌入式技术生态,

为广大企业用户和嵌入式开发者们,提供搞可靠性的、高性能的、现代且高开发效率的嵌入式开发环境。

EventOS的主要特性列举如下:

(1)事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,或者发布-订阅机制两种方式(二选一)。

(2)全局事件队列,摒弃每个线程(状态机)拥有自己的事件队列的方式,只有一个全局事件队列,极限压缩对RAM的占用。

(3)协作式内核,优点是不会产生资源竞争,极度可靠。

(4)极度轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机、平面状态机、发布-订阅机制、事件携带数据、事件桥等)均可裁剪,将资源占用降至极限,可低至ROM 1.2KB,RAM 172Byte。可以作为子系统,“悄悄”嵌入到其他软件系统中去。

(5)功能强大的软定时器,以时间事件的形式,对软定时器功能,进行优雅且功能强大的实现。

(6)API的设计,更加简明,更加符合本土嵌入式工程师的习惯。移植方便,只需实现少数几个接口函数即可。

(7)未来会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。

(8)重点关注三种应用场景:中小资源单片机,作为模块向其他软件系统的嵌入和可靠性要求较高的嵌入式场景。

EventOS的前身,曾经让我在过去的工作中受益匪浅,让我非常高效的写出了很多可靠的程序,能力和回报都有了质的提升。

现在,我将以前的技术成果整理重构,在各方面都向着规范的开源项目靠拢,包括源码、注释、文档、单元测试和例程等等。

未来,EventOS这个项目我会一直完善下去。我的目标是,将EventOS项目在2022年底前做成Gitee推荐项目,2024年年底前将EventOS项目,做成Gitee的GVP项目。造福更多的嵌入式工程师。


二、文档与博客

EventOS的移植和入门,在documentation文件夹里,可以参考以下几个文档:
(1)快速入门文档
https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-001-QuickStart.md

(2)裸机移植文档
https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-002-PortMetal.md

(3)开发环境搭建
https://gitee.com/event-os/eventos/blob/master/documentation/UM-02-003-DevEnv.md

(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

三、为什么叫做EventOS?


EventOS真的非常轻量。全功能的EventOS目前经MDK编译后,框架本身占用RAM 200Byte,ROM约3.5KB(优化等级为-O3)或4.5KB(优化等级为-O0)。

裁剪后,最小功能的EventOS,目前经MDK编译后,框架本身占用RAM 172Byte,ROM约1.2KB(优化等级为-O3)或1.5KB(优化等级为-O0)。

之所以叫EventOS,一是因为它的技术特色与核心思想,就是事件驱动;二是因为它是另外一个开源项目EventOS(准备中)的简化实现,

EventOS是一个事件驱动的、分布式的、可跨平台开发的嵌入式RTOS,面向32位单片机和更高处理器的嵌入式开发平台。

四、EventOS主张的编程思想


事件驱动与事件总线


事件驱动和事件总线,是EventOS的核心,也是EventOS的核心。事件机制,与RTOS中事件概念完全不同,它更像是windows编程中的消息。

事件,可以认为是主题 + 不定长数据,通过事件,可以极大解耦模块间的耦合,增强软件的可测试性,还可以进行跨平台开发和分布式扩展。


防御式编程


EventOS使用了大量的断言,对系统的运行过程和用户对EventOS的使用进行大量的检查。

我们强烈建议,用户要对断言接口函数进行精心的设计和实现,在实际的产品代码中,依然打开断言。这样,软件将以非常快的速度,收敛于稳定状态。

跨平台开发


EventOS提倡跨平台开发。所谓跨平台开发,就是在Windows和Linux等便捷友好的开发环境里,完成绝大部分的开发工作,包括编程、调试、运行和单元测试等工作,然后在目标平台上进行最后的移植、调试和适配工作。


跨平台的优点有很多,比如开发效率非常高、工程师进入到更多的编程领域和程序稳定可靠等。EventOS主要在32位MinGW平台和Linux平台上开发。


开发环境的搭建,见文档开发环境搭建。当然,也完全可以用MDK在单片机上直接开发,效率稍低而已。

消除耦合


无论是广播式的事件发送机制,还是发布-订阅式的事件发送机制,实际上,都是为了消除软件模块间的耦合。

五、EventOS项目的维护原则


但行好事,不问前程


我完全没有考虑过EventOS将来能够如何,而且最近EventOS的发展有点超出我预计,我有点受宠若惊。

更多的人了解EventOS是一件好事,敦促这我把EventOS项目尽快做好,做完善,做成一个工业级的软件产品,为广大的嵌入式工作者创造便利。

希望EventOS最终被众多工程师和企业认可,并在成千上万的嵌入式产品中广泛应用起来,那就不枉我这些年深挖技术的努力。

源码文档并进


我深知完善丰富的文档,对一个开源项目的重要意义。因此,我坚持每一个特性的升级,每一个BUG的修复,都跟随着相应的文档。

让EventOS和EventOS项目的文档专业化、体系化,包含用户手册、版本特性、原理说明、博客、例程等等。

单元测试优先


嵌入式的开源项目,用户最关心的,是软件的可靠性。单元测试,是保证软件健壮与可靠的重要手段。对于EventOS这种系统级、框架级的软件,稳定性与可靠性更加重要。

从EventOS诞生之日起,它就是面向单元测试的。详尽而严谨的单元测试,保证了EventOS将绝大多数的BUG,消除在了开发阶段。EventOS的每一次重构、升级与发布,都是经过了严谨的单元测试的。

用户至上,需求至上


软件如何发展,代码向哪个方向前进,EventOS完全听从用户们的声音,完全从需求出发。我们从各个渠道,微信、QQ、论坛等获取的意见建议,都将体现到EventOS的开发中去。

六、代码结构


核心代码


分享一个面向MCU的事件调度器图2

第三方代码库



例程代码



声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

------------ END ------------


分享一个面向MCU的事件调度器图3


关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。


点击“阅读原文”查看更多分享。

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
MCU
more
关于工程师发烧友对航顺HK32MCU近期建议和疑问
深圳市南山区-工业控制及车规级 MCU 芯片升级及产业化项目可行性研究报告
普冉股份并购再落子,拟控股诺亚长天打造“MCU+存储”双平台
人形机器人量产前夜:兆易创新如何以“MCU+模拟+存储”破局落地瓶颈?
M7内核、纳秒级响应:工业MCU高性能时代,瑞萨、纳芯微、极海再推新品
今日上午有奖直播 | 瑞萨电子 RA MCU 线上峰会
中国“芯”再突破!22nm高端车规MCU率先量产,抢跑下一代区域控制器市场
140亿!MCU大厂拟出售一芯片业务
业界首例!TI 已量产的低功耗Bluetooth® 6.0无线 MCU 通过蓝牙信道探测官方认证
实时控制MCU,开启一轮鏖战
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号