# elab **Repository Path**: event-os/elab ## Basic Information - **Project Name**: elab - **Description**: eLab是集成了多种技术和特性的嵌入式开发平台。 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 393 - **Forks**: 156 - **Created**: 2023-03-02 - **Last Updated**: 2025-06-12 ## Categories & Tags **Categories**: iot **Tags**: 嵌入式开发平台, 跨平台开发, 功能仿真, 测试驱动开发 ## README # 关于本项目 ------- ## 坚定的相信自己,迅速的做自己。 ------- ## 一、eLab项目是什么? 简而言之,就是一个开发平台,其全称为**Embedded Laboratory**。 长久以来,MCU上的嵌入式软件开发的模式,与其他编程领域相比,实际上停留在比较原始的阶段上。MCU上的嵌入式软件开发,有很强的独特性,如资源有限、规模较小、极度底层、硬件紧密相关、很强的行业属性、苛刻的实时性、生态碎片化严重等。 作者认为,MCU上的嵌入式开发,面临的最严重的问题,是在嵌入式行业内部的大部分公司里,没有形成严谨的、科学的、符合软件工程要求的开发模式,去开发嵌入式软件,从而导致了行业整体的低效。借助某个我们熟悉的句式,MCU开发者们所面临的主要矛盾,是日益增长的嵌入式软件规模和复杂度,与落后的开发理念和开发手段之间的矛盾。 通过**eLab**项目,或许你能学会(前提是用心)是以一种非常聪明、省力和高效的方式设计和实现软件。本书提供一些类似于章法一样的东西,也可以叫做心法,指导嵌入式开发工程师们使用面向对象思想设计软件,并构建自动化单元测试和功能模拟器。在PC上编写、运行和测试嵌入式程序,摆脱硬件束缚,从而达到嵌入式开发的高阶阶段,为MCU开发加速,让嵌入式工程师的开发起飞! **eLab**项目,是一个集成了多种开源项目和多个技术特性的嵌入式开发平台。狗哥,将在这个项目,汇集我多年来在产品开发中的开发理念和经验,以现有的开源软件为主,以自己开发的组件为辅,打造一个统一而完善的开发平台。 **eLab**项目,侧重两大技术方向,一是**产品级的嵌入式软件开发**,二是**跨平台的嵌入式软件开发**。这两个技术方向,最终目的,都是为了让工程师的开发效率,得到颠覆性的提升。尤其很多非软件或者非计算机专业毕业的嵌入式工程师们,不必在错误或者跑偏的技术方向上苦苦探索,从而减少技术进阶的年限,早日进入更高的职业阶段。 国内工程师的技术生涯,实际上非常短暂,有着35岁危机之说(虽然我一直不认同)。如此算来,大概大约十年左右。十年,仅仅够一个技术小白,成长为一个入门级的专家(乐观估计,天才除外)。大环境如此。我们只能改变自己。**eLab**项目,能让大家的技术进阶之路,稍微快一点,到了所谓的危机年龄,有更多的选择。**人生短短数十载,自由才是最宝贵的**。 无论是**产品级的嵌入式软件开发**,还是**跨平台的嵌入式软件开发**,都不是一个单一的技术,这两个方向上,都需要一系列技术族进行支撑,**eLab**项目,便是这些技术族的逐一实现。还需要说明的是,这两个技术方向,能做的事情非常之多,狗哥会慢慢开发下去。同时,狗哥会通过B站视频,对这些技术,进行讲解,同时提供系列开发板,对**eLab**项目进行体验和学习。 ## 二、产品级的嵌入式开发(以单元测试为核心的嵌入式开发体系) 所谓产品级的嵌入式开发,指的是在大公司和大团队协作的开发模式下,以单元测试为核心的嵌入式开发技术体系。产品级的嵌入式,当然如果是测试驱动开发就更好了。但这样的技术体系,往往有些前提,需要一些前置的技术手段。这些技术手段,包括但不限于: + 面向对象的C编程 + 多线程编程 + 防御式编程 + 单元测试 + 测试驱动开发 + 模块化与层次化开发 + 设计模式 + 状态机 + 事件驱动 + 嵌入式软件架构 + 框架 + 基于平台的嵌入式开发 狗哥在15年的从业经历中,发现大量的嵌入式工程师,工作多年,都没有找到和掌握正确的技术路线,在技术道路上苦苦探索而不得其法。他们努力寻找能够提升开发效率的方法,但大多陷入经验主义,很快触及了技术的天花板,从而阻碍了技术道路的发展。有很多人,甚至对从事技术工作失去希望,改行其他。 经验主义是有用的,但狗哥是反对纯粹经验主义的。经验虽然有用,能够有效推动个人职业发展,也能诞生好的产品。但仅靠经验,没有办法有效应对产品级的嵌入式开发,尤其是应对产品线的嵌入式开发的。产品级的嵌入式开发,一定是以规范、章法和计算机软件工程理论为指导,在软件开发中进行充分的实践,才能形成系统化的嵌入式开发平台。这个规范和章法的核心,就是单元测试。 因此,**eLab**平台的第一个目标就是,将产品级的嵌入式开发手段,通过开源项目的形式,展示出来,并结合B站视频与专门的开发板,使更多人快速掌握单元测试技术,缩短技术探索的年限,从而以更快的速度进入下一个职业阶段。 ## 三、跨平台开发(功能仿真器) 跨平台开发,是狗哥这些年来,实践总结形成的一套独特的嵌入式开发方法。简而言之,就是在PC的开发环境上,搭建嵌入式开发环境、仿真环境和测试环境,开发嵌入式软件,并在嵌入式环境完成单元测试、集成测试甚至与大部分系统测试的开发方法,而不依赖于专门的硬件。 跨平台开发,与产品级的嵌入式开发,两种开发手段相结合时,能够极大的提升开发效率,极大的提升软件指令,开发工程师体验也大幅优化。**eLab**平台的另一个目标,是建立完善的跨平台开发的技术支持体系。在这种跨平台的开发体系下,嵌入式工程师能有几大收获,一是可以学习跨平台的开发方法,二是直接用**eLab**进行跨平台开发,三是帮助工程师完成从单片机到Linux的过渡,拓宽就业面,实现技术能力的进一步提升。 ## 四、eLab平台已经实现的模块 目前的eLab项目,已经实现的一些模块。上述已经实现的模块,已经可以初步支撑高效的嵌入式软件开发。我已经应用在项目里,完成一个机器人底盘项目,后续狗哥会以合适的方式将此项目开源。但**eLab**这个小小生态,还算不上完整,仍然需要完善,还有很多工作要做。 + eLab common module **eLab公共模块** + Basic definitions + Log module + Assert function + Export function + eLab OSAL **操作系统抽象层**,跨平台开发的基础 + Win32 + Linux + FreeRTOS + Basic library of eLab **eLab基础库** + Device framework of eLab **eLab设备框架**,面向对象与层次化的典型范例 + Core of device framework + **Normal devices**: Serial port, CAN port, ADC, I2C, SPI, Watchdog, RTC, PIN and so on. + **User defined devices**: Motor, RS485, Helm, LED, buttons and so on. + **Driver**: Linux, Simulators and WIN32. + Examples + CMSIS RTOS on WIN32 + Export on PC + QPC on CMSIS RTOS + Test + Unit tests **单元测试**,测试驱动开发 + Third-party modules for eLab **第三方中间件** + FreeRTOS + ini library + list library + lwrb + ucModbus + pikaPython + QPC + Rolla database based on file + Shell + Unity ## 五、狗哥的联系方式 ### Q群二维码 ### 微信二维码 ### B站二维码