1 Star 0 Fork 254

爱看书的猫 / eventos

forked from eLab / eventos 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

EventOS项目说明

starfork

邮箱:event-os@outlook.com,微信号:Event-OS,QQ群:667432915

兄弟项目:EventOS Basic

一、EventOS是什么?

EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其子项目EventOS Basic,目标是开发一个企业级的嵌入式开发平台,以事件总线为核心,打造一个统一的嵌入式技术生态,为广大企业用户和嵌入式开发者们,提供搞可靠性的、高性能的、现代且高开发效率的嵌入式开发环境。

EventOS的主要特性列举如下:

  • 强大的事件系统事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,发布-订阅直接发送三种方式。
  • 协作式内核,优点是不会产生资源竞争,极度可靠。
  • 轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机、平面状态机、发布-订阅机制、事件携带数据、事件桥等)均可裁剪,将资源占用降至极限,可低至ROM 1.2KB,RAM 172Byte。可以作为子系统,“悄悄”嵌入到其他软件系统中去。
  • 功能强大的软定时器,以时间事件的形式,对软定时器功能,进行优雅且功能强大的实现。
  • API的设计,更加简明,更加符合本土嵌入式工程师的习惯。
  • 移植方便,只需实现少数几个接口函数即可。

EventOS的前身,曾经让我在过去的工作中受益匪浅,让我非常高效的写出了很多可靠的程序,能力和回报都有了质的提升。现在,我将以前的技术成果整理重构,在各方面都向着规范的开源项目靠拢,包括源码、注释、文档、单元测试和例程等等。未来,EventOS这个项目我会一直完善下去。我的目标是,将EventOS项目在2022年底前做成Gitee推荐项目,2024年年底前将EventOS项目,做成Gitee的GVP项目。造福更多的嵌入式工程师。

二、文档与博客

EventOS的移植和入门,在documentation文件夹里,可以参考以下几个文档:

EventOS有关的博客:

三、EventOS主张的编程思想

事件总线

事件总线,是EventOS的核心,也是EventOS的特色。事件机制,与RTOS中事件概念完全不同,它更像是windows编程中的消息。事件,可以认为是主题 + 不定长数据,通过事件,可以极大解耦模块间的耦合,增强软件的可测试性,还可以进行跨平台开发和分布式扩展。

防御式编程

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

跨平台开发

EventOS提倡跨平台开发。所谓跨平台开发,就是在Windows和Linux等便捷友好的开发环境里,完成绝大部分的开发工作,包括编程、调试、运行和单元测试等工作,然后在目标平台上进行最后的移植、调试和适配工作。跨平台的优点有很多,比如开发效率非常高、工程师进入到更多的编程领域和程序稳定可靠等。EventOS主要在32位MinGW平台和Linux平台上开发。开发环境的搭建,见文档开发环境搭建。当然,也完全可以用MDK在单片机上直接开发,效率稍低而已。

消除耦合

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

四、代码结构

核心代码

  • eventos/eventos.c EventOS状态机框架的实现
  • eventos/eventos.h 头文件
  • eventos/eventos_config.h 对EventOS进行配置与裁剪

第三方代码库

  • RTT Segger JLink所提供的日志库,依赖于JLink硬件。
  • unity 单元测试框架

例程代码

  • freertos 对FreeRTOS的适配例程(未完成)。
  • posix 对符合POSIX标准的操作系统(如Linux、VxWork、MinGW等)的适配例程。
  • stm32f030 对ARM Cortex-M0芯片的裸机运行(无RTOS)的例程。
  • stm32f103 对ARM Cortex-M3芯片的裸机运行(无RTOS)的例程。
  • test 对源码进行的单元测试例程。
  • digital_watch 电子表例程,状态机的典型应用。

tools

一些Python脚本和工具。

文档

文档包含Doxygen代码文档的生成路径(未完成)、图片、代码相关文档(如快速入门文档、移植文档、开发环境搭建说明文档等)。

MIT License Copyright (c) 2022 EventOS Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

嵌入式开发框架,事件驱动,超级轻量。最低占用ROM 1.5KB,RAM 172字节。核心技术是事件总线,可深度裁剪,移植方便。微信号:Event-OS,QQ群:667432915。 展开 收起
C
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/hc_d_k/eventos.git
git@gitee.com:hc_d_k/eventos.git
hc_d_k
eventos
eventos
master

搜索帮助