Giter VIP home page Giter VIP logo

LiteEMF

中文 | EN

什么是LiteEMF

LiteEMF(Lite Embedded Middle Framework) 嵌入式中间件通用框架,基于HAL硬件抽象层集成了嵌入式设备常用模块和功能.

LiteEMF不是一个操作系统, 确可以运行在任何操作系统或裸机中.

LiteEMF规定了一系列的标准api接口,通过HAL硬件抽象层用来隔离硬件和应用层. 移植一个新平台只需要适配HAL层,上层开发就和硬件无关.让开发者能够忽略硬件的差异把更多的尽力花在产品的功能开发上.能够快速移植用户程序到任何芯片和系统中去,帮助开发者快速实现产品开发迭代.

LiteEMF 为了灵活配置,用户可以在工程通过宏定义进行配置选择开启哪些功能, 芯片占用FLASH,RAM空间根据功能使用情况决定,完全关闭可以做到0字节占用.

框架:
这是图片

LiteEMF 由来

嵌入式开发的特点是芯片差异大,芯片内核类型多,很难做到完全脱离硬件来开发软件. 当然目前有很多嵌入式系统开源项目,这些开源项目为了可移植性都做到脱离了硬件(例mbed). 或者是类似arduino这样优秀的开源平台,把硬件和软件SDK绑定到一起. 但是这些或多或少都有他的应用领域和本身的一些限制,例如mbed 是ARM公司推出的一个IOT平台只支持ARM芯片.

LiteEMF项目的目标是能搭建一个框架, 这个框架能够很方便的使用到自己的硬件中. 不论芯片是51单片机,还是arm,avr,risc-v, 无论SDK采用的是main loop还是Freertos,UcosII,Rtheard,Linux等任意操作系统, 都能够通过这个框架快速的搭建出一个硬件基本输入输出api接口,能让用户脱离硬件专注做上层应用开发.

除了底层搭建一个标准的API帮助使用者对接的硬件, 上层还应该和主流的IOT系统一样,提供丰富的标准协议接口,和常用的嵌入式模块(电源管理, 按键, RGB, USB, 马达, 体感, 手柄, 蓝牙, 网络等), 主流的开源模块(例nanopb)等.

目前LiteEMF已经做到这一点, 也成功在51单片机,Arm等芯片平台,在freeRtos,Linux操作系统上得到量产产品的验证.

你是否正在为换芯片重新移植而烦恼, 你是否正在为原厂更新了SDK需要大量修改代码而烦恼, 那就快来采用LiteEMF吧!

快速开始

欢迎使用LiteEMF开源项目, 详细api接口请参考用户手册

编译

Window 编译

LiteEMF 可以在windows平台上直接编译, 可以用于代码测试和windows平台APP开发. 注意windows平台下无法调用api层中的嵌入式硬件接口.

makefile编译:

  • 下载 MinGW for windows
  • 安装 MinGW 建议默认安装到C:/MinGW"目录下, 如果安装到其他目录需要设置环境变量. 同时修改 c_cpp_properties.jsonlaunch.json 文件中MinGW gcc编译器目录
  • vscode打开代码, 选择终端--运行任务--make,或 命令行 执行make 指令
  • 运行生成的LiteEMF.exe

cmake 编译:

mkdir build; cd build
cmake .. -G "Unix Makefiles"
make

嵌入式平台编译

LiteEMF 在嵌入式平台中移植和运行

  • 下载LiteEMF到你的芯片SDK中,推荐使用 git submodule方式
  • 将LiteEMF中的hal/目录拷贝到芯片SDK中,并且重新命名为xxx_hal/ (LiteEMF/hal/目录下文件是一个参考文件, 每一个平台的hal层都需要单独适配)
    为了不破坏芯片原厂SDK, 推荐新建文件夹project/ 和 user/ 目录
    • project/ 存放工程文件和项目源文件
    • user/ 存放LiteEMF, 和 xxx_hal/, hw_confg.h, hw_board.h(这两个头文件用于项目管理)
      推荐的文件目录
  • 新建工程修改工程文件或者makefile文件包含 user/LiteEMF 和 user/xxx_hal(注意:不要包含/user/LiteEMF/hal目录!)
  • 编写适配 xxx_hal/ 驱动程序, 根据emf.c中的例程添加 LiteEMF 初始化 和 任务到工程中
    LiteEMF 提供了xxx_handler()函数接口和 xxx_task(*void)两种方式调用任务
  • 根据芯片sdk编译

平台支持

  • 支持裸机系统
  • 支持操作系统

未来工作

  • usb bt 模块验证测试
  • 完善api接口,提供更加优化的api
  • 官方适配更多芯片提开发者使用
  • 移植更多开源项目,丰富app层应用
  • 官方适配更多外设驱动(nfc,gsm,sensor等)提开发者使用
  • LVGL 图形库支持
  • 网络接口支持
  • 还将在LiteEMF基础上实现几个开源项目,目前计划实现QMK开源键盘项目

交流

为了完善LiteEMF开源项目有更多的人使用, 合作者也会筛选合适的项目免费为大家移植开发.

欢迎大家使用LiteEMF,加入QQ群交流: 130611332

免责声明

LiteEMF可以作为开发,评估,甚至量产使用. LiteEMF是一个开源项目不承担任何因使用这些资料所产生的后果

LiteEMF's Projects

ch5xx icon ch5xx

沁恒ch559,ch554等系列C8051单片机

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.