推荐一个轻量级的嵌入式系统框架
0赞mr-library简介
mr-library 是一个面向嵌入式系统的轻量级框架,提供统一的底层驱动设备模型以及基础服务功能,具有模块化设计、可配置性和扩展性的特点, 可帮助开发者快速构建嵌入式应用程序。
mr-library 框架支持互斥锁、对象管理等基础内核功能。集成异步事件驱动框架(event)、多时基软件定时器(soft-timer) 等服务。提供串口、SPI、I2C、ADC/DAC等常见外设的驱动设备模型,通过统一的驱动接口(open、close、ioctl、read、write)访问底层硬件设备,解耦底层驱动和应用。
应用场景
MCU开发的低层驱动程序。
RTOS实时操作系统的外挂框架(作为驱动设备框架使用)。
各类IoT和智能硬件产品的快速开发。
驱动设备框架
开发者能以面向对象的方式访问外设,简化驱动逻辑的开发流程。框架实现了常用外设的通用驱动模板,开发者可以快速移植到不同的硬件平台。
驱动设备框架支持普通设备的通用接口、总线设备自动总线控制、多种设备的中断接管。
驱动设备接口
设备驱动框架提供统一的操作接口,设备的所有操作都需要通过以下接口实现:
SPI设备使用示例:
服务框架
mr-library 框架集成了轻量级的服务框架,用于构建嵌入式开发中的应用服务,支持异步事件监听,多时基软件定时器等。通过服务框架完成对应用层不同应用间的解耦,实现应用程序的模块化,可裁剪,业务逻辑清晰,开发快速,代码高度复用。
事件服务
事件服务是一种异步事件处理机制,它通过事件分发和回调的方式,可以有效地提高系统的异步处理能力、解耦性和可扩展性。
事件服务包含两个部分:事件服务器和事件。
事件服务器用于接收和分发事件,其内部维护一个事件队列用于存储待处理事件和一个事件列表用于存储已创建事件。
事件需要创建到事件服务器并提供一个回调函数。
当事件发生时,事件服务器会将事件插入到事件队列中进行缓存。事件服务器会周期性地从事件队列中取出事件进行分发,找到对应的事件回调进行事件处理。
事件服务操作接口
事件服务使用示例:
软件定时器服务
软件定时器是一种在软件层面实现计时功能的机制,通过软件定时器,可以在特定时间点或时间间隔触发特定的事件。软件定时器常用于实现周期性任务、超时处理、定时器中断等功能。
软件定时器包含两个主要组件:定时服务器和定时器。
定时服务器用于时间管理和定时器处理。
定时器用于处理特定的超时处理,它需要注册到定时服务器并提供一个回调函数。
软件定时器服务操作接口
软件定时器服务使用示例:
代码目录
mr-library 的代码目录结构如下表所示:
内核层: mr-library 的核心部分,实现对象管理,设备控制,服务接口等。
设备层: 提供统一的设备接口,将设备接入到内核中。
驱动层: 为设备提供底层硬件驱动,当硬件更换时仅需修改驱动层。
组件层: 通过框架提供的API实现不同的功能。包括但不限于虚拟文件系统、通用传感器模块、网络框架等。
软件包: 可独立使用,无依赖的软件包。
来源:https://gitee.com/MacRsh/mr-library
转自公众号:嵌入式大杂烩
版权声明:本文来源网络,版权归原作者所有。版权问题,请联系删除。
原文链接:https://mp.weixin.qq.com/s/v9BtXTWkiuWWZL-IAD8-Cg
电子技术应用专栏作家 嵌入式与Linux那些事