3

超轻量级事件驱动的嵌入式开发平台 EventOS Nano

 2 years ago
source link: https://www.oschina.net/p/eventos-nano
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

EventOS Nano 是什么?

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

  • 事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,或者发布-订阅机制两种方式(二选一)。
  • 全局事件队列,摒弃每个线程(状态机)拥有自己的事件队列的方式,只有一个全局事件队列,极限压缩对RAM的占用。
  • 极度轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机、平面状态机、发布-订阅机制、事件携带数据、事件桥等)均可裁剪,将资源占用降至极限,可低至ROM 1.2KB,RAM 172Byte。可以作为子系统,“悄悄”嵌入到其他软件系统中去。
  • 以时间事件的形式,优雅实现了软定时器
  • API的设计,更加简明,更加符合本土嵌入式工程师的习惯。
  • 移植方便,只需实现少数几个接口函数即可。
  • 未来会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。
  • 重点关注三种应用场景:小资源单片机,作为模块向其他软件系统的嵌入和可靠性要求较高的嵌入式场景。

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

二、为什么叫做EventOS Nano?

之所以叫Nano,是因为它真的非常轻量。全功能的EventOS Nano目前经MDK编译后,框架本身占用RAM 200Byte,ROM约3.5KB(优化等级为-O3)或4.5KB(优化等级为-O0)。裁剪后,最小功能的EventOS Nano,目前经MDK编译后,框架本身占用RAM 172Byte,ROM约1.2KB(优化等级为-O3)或1.5KB(优化等级为-O0)。 之所以叫EventOS Nano,一是因为它的技术特色与核心思想,就是事件驱动;二是因为它是另外一个开源项目EventOS(准备中)的简化实现,EventOS是一个事件驱动的、分布式的、可跨平台开发的嵌入式RTOS,面向32位单片机和更高处理器的嵌入式开发平台。

三、EventOS Nano主张的编程思想

事件驱动事件总线

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

防御式编程

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

跨平台开发

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

消除耦合

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

四、EventOS Nano项目的维护原则

但行好事,不问前程

我完全没有考虑过EventOS Nano将来如何,也没有考虑过所谓商业模式。我有自认为还不错的工作,收入够用,家庭温馨而和睦。我现在只是想,把EventOS Nano项目做好,做成一个工业级的软件产品,被众多网友和用户认可,并在成千上万的嵌入式产品中广泛应用起来。至于其他,就随遇而安吧。

源码文档并进

我深知完善丰富的文档,对一个开源项目的重要意义。因此,我坚持每一个特性的升级,每一个BUG的修复,都跟随着相应的文档。让EventOS NanoEventOS项目的文档专业化、体系化,包含用户手册、版本特性、原理说明、博客、例程等等。

单元测试优先

嵌入式的开源项目,用户最关心的,是软件的可靠性。单元测试,是保证软件健壮与可靠的重要手段。对于EventOS Nano这种系统级、框架级的软件,稳定性与可靠性更加重要。从EventOS Nano诞生之日起,它就是面向单元测试的。详尽而严谨的单元测试,保证了EventOS Nano将绝大多数的BUG,消除在了开发阶段。EventOS Nano的每一次重构、升级与发布,都是经过了严谨的单元测试的。

用户至上,需求至上

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

五、联系方式

邮箱:[email protected] 

展开阅读全文

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK