58 Star 299 Fork 122

eLab / elab

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.61 KB
一键复制 编辑 原始数据 按行查看 历史
狗哥 提交于 2023-12-03 05:45 . update README.md.

关于本项目


坚定的相信自己,迅速的做自己。


一、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站二维码

C
1
https://gitee.com/event-os/elab.git
git@gitee.com:event-os/elab.git
event-os
elab
elab
master

搜索帮助