版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
现在嵌入式设计的要求,比以前要求更高了,这个时候还是建议大家要掌握一套或多套软件框架,以便随时派上用场。今天就来分享一个开源的轻量级的嵌入式设计框架:mr-library.mr-library简介MR
框架是专为嵌入式系统设计的轻量级框架。充分考虑了嵌入式系统在资源和性能方面的需求。通过提供标准化的设备管理接口,极大简化了嵌入式应用开发的难度,帮助开发者快速构建嵌入式应用程序。框架为开发者提供了标准化的开启(open)、关闭(close)、控制(ioctl)、读(read)、写(write)等接口。它将应用程序与底层硬件驱动进行解耦。应用程序无需了解驱动的实现细节。当硬件发生改变时,只需要适配底层驱动,应用程序就可以无缝迁移到新硬件上。这大大提高了软件的可重用性和应对新硬件的可扩展性。项目结构图关键特性标准化的设备访问接口应用程序和驱动开发解耦简化底层驱动和应用程序开发轻量易上手,资源占用低模块化设计,各部分解耦合并独立开发,极低的硬件迁移成本支持在裸机环境和操作系统环境下使用主要组成设备框架:提供设备访问标准接口内存管理:动态内存管理工具:链表、队列、平衡树等常用数据结构各类功能组件标准化设备接口设备的所有操作都可通过以下接口实现:接口描述mr_dev_register注册设备mr_dev_open打开设备mr_dev_close关闭设备mr_dev_ioctl控制设备mr_dev_read从设备读取数据mr_dev_write向设备写入数据示例:struct
mr_spi_dev
spi_dev;
int
main(void)
{
/*
注册SPI10设备(CS低电平有效)到SPI1总线上
*/
mr_spi_dev_register(&spi_dev,
"spi1/spi10",
0,
MR_SPI_CS_ACTIVE_LOW);
/*
打开SPI1总线下的SPI10设备
*/
int
ds
=
mr_dev_open("spi1/spi10",
MR_OFLAG_RDWR);
/*
发送数据
*/
uint8_t
wr_buf[]
=
{0x01,
0x02,
0x03,
0x04};
mr_dev_write(ds,
wr_buf,
sizeof(wr_buf));
/*
接收数据
*/
uint8_t
rd_buf[4]
=
{0};
mr_dev_read(ds,
rd_buf,
sizeof(rd_buf));
/*
关闭设备
*/
mr_dev_close(ds);
}配置工具MR
提供
Kconfig
可视化配置工具,开发者无需深入了解源代码即可进行配置。Kconfig
会根据配置文件自动生成配置选项界面。开发者可以通过简单的操作来选择需要启用的功能组件和设置相关参数。配置工具配置工具1通过修改参数,快速裁剪所需功能。配置完成后通过
Python
脚本自动生成配置文件。目录结构名称描述bsp板级支持包components组件device设备文件document文档driver驱动文件include库头文件source库源文件Kconfig配置文件kconfig.py自动配置脚本LICENSE许可证开始使用配置
Kconfig
环境注:Kconfig
并非必须的,但是推荐使用(安装和配置非常快捷,后续教程也是以应用
Kconfig
为例)。验证系统是否安装Python环境。在命令行中运行
python--version
检查Python版本(Kconfig
依赖于
python,若无
python环境请自行安装)。在命令行中使用所示命令安装
Kconfigpython-mpipinstallwindows-curses
python-mpipinstallkconfiglib在命令行中运行
menuconfig-h
验证安装是否成功。将框架导入工程1.从
Gitee
或
Github
仓库下载最新版本源码到本地。将源码导入到您工程所在的目录。以STM32工程为例:工程目录如使用的芯片已经做了
BSP
适配请参考芯片对应
BSP
中的配置教程,完成
BSP
配置。移除不需要的文件
bsp、document、module
目录(如不需要GIT也可以移除.git文件删除)。完成后,目录结构如下所示:工程目录1将文件加入到IDE中(大部分IDE都能自动识别工程路径下的文件,无需进行此步骤)。以
keil
为例:工程目录Keil添加
source、device、driver
目录下的所有文件。配置菜单选项在
mr-library
目录下打开命令行工具,运行
menuconfig
进行菜单配置。.工程目录2注:当添加对应芯片驱动的后,将显示
Deviceconfigure
和
Driverconfigure。对应
Driverconfigure
请参考
BSP
下教程。选中
Deviceconfigure
回车进入菜单,按照需要配置功能。工程目录3配置完成后,按
Q
退出菜单配置界面,按Y
保存配置。生成配置文件在
mr-library
目录下打开命令行工具,运行
pythonkconfig.py,自动生成配置文件
mr_config.h。添加包含路径在编译器中添加
mr-library
的包含路径,以
keil
为例:工程目录4配置自动初始化(GCC环境),查找您工程下以
.ld
为后缀的连接脚本文件(通常为
link.ld),在脚本文件中添加代码:注:如果您的是在
keil
等,能够自动生成链接脚本的环境下,请跳过此步骤。/*
mr-library
auto
init
*/
.
=
ALIGN(4);
_mr_auto_init_start
=
.;
KEEP(*(SORT(.auto_init*)))
_mr_auto_init_end
=
.;示例:工程目录配置GNU语法。如果您使用的是非
GCC
编译器,请使能GNU语法。以
keil
为例:AC5:工程目录6AC6:工程目录7在您的工程中引入
#include"include/mr_lib.h"。在
main
函数中添加
mr_auto_init();
自动初始化函数。先来点个灯吧#include
"include/mr_lib.h"
/*
定义LED引脚(PC13)*/
#define
LED_PIN_NUMBER
45
int
main(void)
{
/*
自动初始化
*/
mr_auto_init();
/*
打开PIN设备
*/
int
ds
=
mr_dev_open("pin",
MR_OFLAG_RDWR);
/*
设置到LED引脚
*/
mr_dev_ioctl(ds,
MR_CTL_PIN_SET_NUMBER,
mr_make_local(int,
LED_PIN_NUMBER));
/*
设置LED引脚为推挽输出模式
*/
mr_dev_ioctl(ds,
MR_CTL_PIN_SET_MODE,
mr_make_local(int,
MR_PIN_MODE_OUTPUT));
while(1)
{
/*
点亮LED
*/
mr_dev_write(ds,
mr_make_local(uint8_t,
MR_PIN_HIGH_LEVEL),
sizeof(uint8_t));
mr_delay_ms(500);
mr_dev_write(ds,
mr_make_local(uint8_t,
MR_PIN_LOW_LEVEL),
sizeof(uint8_t));
mr_delay_ms(500);
}
}HelloWorld#include
"include/mr_lib.h"
int
main(void)
{
/*
自动初始化
*/
mr_auto_init();
/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《曲式与作品分析(2)》2021-2022学年第一学期期末试卷
- 淮阴师范学院《英国文学作品选读》2023-2024学年第一学期期末试卷
- 淮阴师范学院《小学生品德发展与道德养成》2021-2022学年第一学期期末试卷
- 淮阴师范学院《固体废物处理与处置》2023-2024学年第一学期期末试卷
- 淮阴工学院《书籍设计2》2022-2023学年第一学期期末试卷
- 淮阴师范学院《会计电算化实训》2021-2022学年期末试卷
- DB1402T36-2024农村居家养老服务规范
- 拓展创新思维的企业教育培训考核试卷
- 塑料制品在船舶制造上的应用考核试卷
- 煤矿通风安全监测监控培训考核试卷
- 苏教版五年级上册数学试题-第一、二单元 测试卷【含答案】
- 发挥产业工会作用的实施方案
- 科捷物流介绍(中文版)ppt课件
- 军事地形学地形图基本知识
- 2022版义务教育(生物学)课程标准(含2022年修订和新增部分)
- 六年级综合实践活动课件-珍爱生命远离毒品 全国通用(共24张PPT)
- 建设工程竣工消防验收记录表(DOC36页)
- 沉井专项施工方案DOC
- 切削力计算参考模板
- 一年级海洋教育教案
- 聚氨酯硬泡沫配方及计算
评论
0/150
提交评论