中文 | EN
LiteEMF(Lite Embedded Middle Framework) 嵌入式中间件通用框架,基于HAL硬件抽象层集成了嵌入式设备常用模块和功能.
LiteEMF不是一个操作系统, 确可以运行在任何操作系统或裸机中.
LiteEMF规定了一系列的标准api接口,通过HAL硬件抽象层用来隔离硬件和应用层. 移植一个新平台只需要适配HAL层,上层开发就和硬件无关.让开发者能够忽略硬件的差异把更多的尽力花在产品的功能开发上.能够快速移植用户程序到任何芯片和系统中去,帮助开发者快速实现产品开发迭代.
LiteEMF 为了灵活配置,用户可以在工程通过宏定义进行配置选择开启哪些功能, 芯片占用FLASH,RAM空间根据功能使用情况决定,完全关闭可以做到0字节占用.
嵌入式开发的特点是芯片差异大,芯片内核类型多,很难做到完全脱离硬件来开发软件. 当然目前有很多嵌入式系统开源项目,这些开源项目为了可移植性都做到脱离了硬件(例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接口请参考用户手册
LiteEMF 可以在windows平台上直接编译, 可以用于代码测试和windows平台APP开发. 注意windows平台下无法调用api层中的嵌入式硬件接口.
makefile编译:
- 下载 MinGW for windows
- 安装 MinGW 建议默认安装到C:/MinGW"目录下, 如果安装到其他目录需要设置环境变量. 同时修改 c_cpp_properties.json 和launch.json 文件中MinGW gcc编译器目录
- vscode打开代码, 选择终端--运行任务--make,或 命令行 执行make 指令
- 运行生成的LiteEMF.exe
cmake 编译:
- 下载 MinGW for windows
- 终端运行指令
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/ 目录 - 新建工程修改工程文件或者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是一个开源项目不承担任何因使用这些资料所产生的后果