EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发一个企业级的嵌入式开发平台,以事件总线为核心,打造一个统一的嵌入式技术生态,为广大企业用户和嵌入式开发者们,提供搞可靠性的、高性能的、现代且高开发效率的嵌入式开发环境。
EventOS的主要特性列举如下:
1、事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,或者发布-订阅机制两种方式(二选一)。
2、全局事件队列,摒弃每个线程(状态机)拥有自己的事件队列的方式,只有一个全局事件队列,极限压缩对RAM的占用。
3、协作式内核,优点是不会产生资源竞争,极度可靠。
4、极度轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机、平面状态机、发布-订阅机制、事件携带数据、事件桥等)均可裁剪,将资源占用降至极限,可低至ROM 1.2KB,RAM 172Byte。可以作为子系统,“悄悄”嵌入到其他软件系统中去。
5、功能强大的软定时器,以时间事件的形式,对软定时器功能,进行优雅且功能强大的实现。
6、API的设计,更加简明,更加符合本土嵌入式工程师的习惯。
7、移植方便,只需实现少数几个接口函数即可。
未来会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。
重点关注三种应用场景:中小资源单片机,作为模块向其他软件系统的嵌入和可靠性要求较高的嵌入式场景。
EventOS主张的编程思想
1、事件驱动与事件总线
事件驱动和事件总线,是EventOS的核心,也是EventOS的核心。事件机制,与RTOS中事件概念完全不同,它更像是windows编程中的消息。事件,可以认为是主题 + 不定长数据,通过事件,可以极大解耦模块间的耦合,增强软件的可测试性,还可以进行跨平台开发和分布式扩展。
2、防御式编程
EventOS使用了大量的断言,对系统的运行过程和用户对EventOS的使用进行大量的检查。我们强烈建议,用户要对断言接口函数进行精心的设计和实现,在实际的产品代码中,依然打开断言。这样,软件将以非常快的速度,收敛于稳定状态。
3、跨平台开发
EventOS提倡跨平台开发。所谓跨平台开发,就是在Windows和Linux等便捷友好的开发环境里,完成绝大部分的开发工作,包括编程、调试、运行和单元测试等工作,然后在目标平台上进行最后的移植、调试和适配工作。跨平台的优点有很多,比如开发效率非常高、工程师进入到更多的编程领域和程序稳定可靠等。EventOS主要在32位MinGW平台和Linux平台上开发。开发环境的搭建,见文档开发环境搭建。当然,也完全可以用MDK在单片机上直接开发,效率稍低而已。
4、消除耦合
无论是广播式的事件发送机制,还是发布-订阅式的事件发送机制,实际上,都是为了消除软件模块间的耦合。 |