EventOS Nano,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS Nano的主要特性列举如下:
如果你想写一个清晰的、结构健壮且利于维护的源代码,又不想使用传统的RTOS,那么EventOS Nano是你的不二选择。 EventOS Nano的前身,曾经让我在过去的工作中受益匪浅,让我非常高效的写出了很多可靠的程序,能力和回报都有了质的提升。现在,我将以前的技术成果整理重构,在各方面都向着规范的开源项目靠拢,包括源码、注释、文档、单元测试和例程等等。未来,EventOS Nano这个项目我会一直完善下去。我的目标是,将EventOS Nano项目在2022年底前做成Gitee推荐项目,2024年年底前将EventOS项目,做成Gitee的GVP项目,造福更多的嵌入式工程师。
之所以叫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的核心。事件机制,与RTOS中事件概念完全不同,它更像是windows编程中的消息。事件,可以认为是“主题 + 不定长数据**,通过事件,可以极大解耦模块间的耦合,增强软件的可测试性,还可以进行跨平台开发和分布式扩展。
EventOS Nano使用了大量的断言,对系统的运行过程和用户对EventOS Nano的使用进行大量的检查。我们强烈建议,用户要对断言接口函数进行精心的设计和实现,在实际的产品代码中,依然打开断言。这样,软件将以非常快的速度,收敛于稳定状态。
EventOS Nano提倡跨平台开发。所谓跨平台开发,就是在Windows和Linux等便捷友好的开发环境里完成大部分的开发工作,包括编程、调试、运行和单元测试等工作,然后在目标平台上进行最后的移植、调试和适配工作。跨平台的优点有很多,比如开发效率非常高、工程师进入到更多的编程领域和程序稳定可靠等。EventOS Nano主要在32位MinGW平台上开发,在Linux平台上也会开发一部分工作。开发环境的搭建,见文档开发环境搭建。
无论是广播式的事件发送机制,还是发布-订阅式的事件发送机制,实际上,都是为了消除软件模块间的耦合。
我完全没有考虑过EventOS Nano将来如何,也没有考虑过所谓商业模式。我有自认为还不错的工作,收入够用,家庭温馨而和睦。我现在只是想,把EventOS Nano项目做好,做成一个工业级的软件产品,被众多网友和用户认可,并在成千上万的嵌入式产品中广泛应用起来。至于其他,就随遇而安吧。
我深知完善丰富的文档,对一个开源项目的重要意义。因此,我坚持每一个特性的升级,每一个BUG的修复,都跟随着相应的文档。让EventOS Nano和EventOS项目的文档专业化、体系化,包含用户手册、版本特性、原理说明、博客、例程等等。
嵌入式的开源项目,用户最关心的,是软件的可靠性。单元测试,是保证软件健壮与可靠的重要手段。对于EventOS Nano这种系统级、框架级的软件,稳定性与可靠性更加重要。从EventOS Nano诞生之日起,它就是面向单元测试的。详尽而严谨的单元测试,保证了EventOS Nano将绝大多数的BUG,消除在了开发阶段。EventOS Nano的每一次重构、升级与发布,都是经过了严谨的单元测试的。
软件如何发展,代码向哪个方向前进,EventOS Nano完全听从用户们的声音,完全从需求出发。我们从各个渠道,微信、QQ、论坛等获取的意见建议,都将体现到EventOS Nano的开发中去。
邮箱:event-os@outlook.com
2.操作系统(39道) 2.1 Linux 系统的组成部分? Linux内核、Linux文件系统、Linux shell、Linux应用程序。 2.2 Linux 内核的组成部分? (1)第一种分类方式:内存管理子系统、进程管理子系统、文件管理子系统、I/O管理子系统。 (2)第二种分类方式:进程调度(SCHED)、进程间通信(IPC)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(N
null 解压缩算法的重要指标是数据的大小加上算法的大小(因为它们将驻留在相同的有限内存中)。 可用于解压的RAM很少;可以将单个字形的数据解压缩到RAM中,但不能更多。 为了使事情变得更加困难,算法必须在32位微控制器(ARM Cortex-M core)上非常快,因为字形在被绘制到显示器上时需要解压缩。每八位元组十个或二十个机器循环是可以的,一百个肯定太多了。 为了使事情变得更容易,完整的数据
天嵌股份面经,面试了linux驱动实习岗,大概谈了一下项目,然后深挖写过的驱动。无八股,无算法。(线下面试的) 👨🏻💻 工作环境 🫶️ 团队氛围 引流:360,小米,美团,腾讯,阿里菜鸟
我对GWT是新手。我不知道如何启动超级开发模式。我需要一步一步的详细解释。 但我不明白这一点。
面试过程在腾讯会议,下午16-17点,一个面试官面三个人,前期回答面试官问题,后期自由顺序: 大概询问的问题为: 1、自我介绍包括家庭背景 2、在校成绩 3、对于选择牧原的原因举例三点 4、单休能否接受(能肯定能哈哈哈) 5、对地域要求 6、家里人对工作地点的看法 7、对考研考公想法 8、对岗位来源的认识 9、已有项目评价 10、想要的期望薪资 11、对公司还想了解什么 { 我问了两个: a、该职
本文向大家介绍超好用轻量级MVC分页控件JPager.Net,包括了超好用轻量级MVC分页控件JPager.Net的使用技巧和注意事项,需要的朋友参考一下 JPager.Net MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象。 JPager.Net MVC好用的轻量级分页控件,实现非常简单,使用也非常简单。 JPager.Net MVC好用的轻量级分页控件,代码精心推敲,经多
1.进程&线程(16道) 1.1异步IO和同步IO区别? 答案:如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完。相反,异步IO操作在后台运行,IO操作和应用程序可以同时运行,提高系统性能,提高IO流量。 解读:在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO中,线程发送一个IO请求到内核,然后继续处理其他事
HR姐姐 声音很好听,面完有一些后悔 1.两面技术面面试官对你评价较高 你有期望的薪资吗 答了上一届加入mtk的师兄的薪资加一丢丢 2. 目前还有没有其它的offer Oppo 京东 3.假如mtk也给你发了 怎么排序 问到了这里 想打太极也不可能了,如实说实习更期望去oppo 4.就算最后不算牵手成功 秋招也会有优先面试的机会 感谢 5.想在哪个地方发展 基本都是hr面常见问题 复盘: 本次面试