一个面向单片机、事件驱动的嵌入式开发平台

嵌入式电子 2024-08-01 08:11

一、EventOS是什么?

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

EventOS的主要特性列举如下:

  • 事件总线为核心组件,灵活易用,是进行线程(状态机)间同步或者通信的主要手段,也是对EventOS分布式特性和跨平台开发进行支持的唯一手段。事件支持广播发送,或者发布-订阅机制两种方式(二选一)。

  • 全局事件队列,摒弃每个线程(状态机)拥有自己的事件队列的方式,只有一个全局事件队列,极限压缩对RAM的占用。

  • 协作式内核,优点是不会产生资源竞争,极度可靠。

  • 极度轻量,便于嵌入其他系统,除事件总线外的所有特性(层次状态机、平面状态机、发布-订阅机制、事件携带数据、事件桥等)均可裁剪,将资源占用降至极限,可低至ROM 1.2KB,RAM 172Byte。可以作为子系统,“悄悄”嵌入到其他软件系统中去。

  • 功能强大的软定时器,以时间事件的形式,对软定时器功能,进行优雅且功能强大的实现。

  • API的设计,更加简明,更加符合本土嵌入式工程师的习惯。

  • 移植方便,只需实现少数几个接口函数即可。

  • 未来会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。

  • 重点关注三种应用场景:中小资源单片机,作为模块向其他软件系统的嵌入和可靠性要求较高的嵌入式场景。

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

二、文档与博客

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

  • 快速入门文档

  • 裸机移植文档

  • 开发环境搭建

EventOS有关的博客:

  • 如何理解事件

三、为什么叫做EventOS?

EventOS真的非常轻量。全功能的EventOS目前经MDK编译后,框架本身占用RAM 200Byte,ROM约3.5KB(优化等级为-O3)或4.5KB(优化等级为-O0)。裁剪后,最小功能的EventOS,目前经MDK编译后,框架本身占用RAM 172Byte,ROM约1.2KB(优化等级为-O3)或1.5KB(优化等级为-O0)。

之所以叫EventOS,一是因为它的技术特色与核心思想,就是事件驱动;二是因为它是另外一个开源项目EventOS(准备中)的简化实现,EventOS是一个事件驱动的、分布式的、可跨平台开发的嵌入式RTOS,面向32位单片机和更高处理器的嵌入式开发平台。

四、EventOS主张的编程思想

事件驱动与事件总线

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

防御式编程

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

跨平台开发

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

消除耦合

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

五、EventOS项目的维护原则

但行好事,不问前程

我完全没有考虑过EventOS将来能够如何,而且最近EventOS的发展有点超出我预计,我有点受宠若惊。更多的人了解EventOS是一件好事,敦促这我把EventOS项目尽快做好,做完善,做成一个工业级的软件产品,为广大的嵌入式工作者创造便利。希望EventOS最终被众多工程师和企业认可,并在成千上万的嵌入式产品中广泛应用起来,那就不枉我这些年深挖技术的努力。

源码文档并进

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

单元测试优先

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

用户至上,需求至上

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

六、代码结构

核心代码

  • 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代码文档的生成路径(未完成)、图片、代码相关文档(如快速入门文档、移植文档、开发环境搭建说明文档等)。



资料来自: https://gitee.com/event-os/eventos


关注公众号,加星标,回复1024获取学习资料,每天进步一点点。


声明:

本号原创、转载的文章、图片等版权归原作者所有,如有侵权,请联系删除。

关注、点赞、在看、转发,支持优质内容! 

评论
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 58浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 50浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 69浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 51浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 87浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 110浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 36浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦