【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,实际跑跑看

Original: https://www.cnblogs.com/Wangzx000/p/16492172.html
Author: _Wangzx
Title: 【EventOS Nano】EventOS Nano初步了解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607507/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球