【EventOS Nano】EventOS Nano初步了解
EventOS Nano是什么?
EventOS Nano是一个面向单片机、事件驱动的、分布式的、可跨平台开发的嵌入式开发平台。主要有两大技术特色:事件驱动和超轻量
EventOS主要特性如下:
- 事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,或者发布-订阅机制两种方式(二选一)
- 全局事件队列,摒弃每个线程拥有自己的事件队列的方式,只有一个全局事件队列,极限对压缩对RAM的占用
- 协作式内核,优点是不会产生资源竞争,非常可靠。
- 功能强大的软件定时器,以时间事件的形式对软定时器功能,进行功能强大的实现
- 极度轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机,平面状态机,发布-订阅机制,事件桥等)均可裁剪,资源可低至ROM1.2Kb,RAM 172Byte,可以作为子系统,嵌入到其他软件系统中去
- 未来会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。
- 重点关注三种应用场景:中小资源单片机,作为模块向其他软件系统的嵌入和可靠性要求较高的嵌入式场景。
如何理解事件?
嵌入式系统中,一切发生或者已发生的事情,只要导致了内部数据的变化,都可以被认为是事件
比如,按键的按下或者抬起,串口接收到一组数据,CAN总线接收到一个报文,某个通信协议连接失败,定时500ms时间到,电池电量将到某个阈值之下,温度传感器高于某个阈值,避障传感器检测到障碍物,等等,都可以认为是事件。
是对系统中所发生的事,进行的高级抽象
运用事件机制,可以有效地对RTOS中存在的多种IPC(线程间通信)方式,进行整合。
EventOS Nano主张的编程思想
1.事件驱动与事件总线
EventOS Nano的核心是事件驱动和事件总线,事件机制与RTOS中的事件概念不同,它更像是windows编程中的消息。事件,可以认为是主题+不定长数据,通过事件,可以极大的解耦模块间的耦合,增强软件的可测试性,还可以进行跨平台和分布式开发
2.防御式编程
EventOS Nano使用了大量的断言,对系统的运行过程和用户对EventOS Nano使用大量的检查。在实际的产品代码中,依然打开断言。这样软件将非常快速的收敛于稳定状态
3.跨平台开发
EventOS Nano提倡跨平台开发。所谓跨平台开发,就是在windows和Linux等便捷友好的开发环境里,完成绝大部分开发工作,包括编程、调试、运行和单元测试等工作,然后再目标平台上进行最后的移植、调试和适配工作
4 .消除耦合
无论是广播式的事件发送机制,还是发布 -订阅式的事件发送机制,都是为了消除软件模块间的耦合。
EventOS Nano的代码结构
1.核心代码
- eventos/eventos.c EventOS Nano状态机框架的实现
- eventos/eventos.h 头文件
- eventos/eventos_config.h 对EventOS Nano进行配置与裁剪
2.三方代码库
- RTT Segger Jlink所提供的日志库,依赖JLink硬件。
- unity 单元测试框架
3.例程代码
- freertos对FreeRTOS的适配例程
- posix对符合POSIX标准的操作系统(如linux,MinGW等)的适配例程
- stm32f030对ARM Cortex-M0芯片的裸机运行(无RTOS)的例程
- stm32f103对ARM Cortex-M3芯片的裸机运行(无RTOS)的例程
- test对源码进行的单元测试例程
- digital_watch电子表例程,状态机的典型应用。
4.tools
一些Python脚本和工具
下一步:编译运行EventOS demo,实际跑跑看
参考资源: https://mp.weixin.qq.com/s/0BkOD8hKCRW4OxoOlpIfLw
仓库地址:https://gitee.com/event-os/eventos.git