一种基于微内核的硬件设备驱动系统及其驱动方法技术方案

技术编号:29702684 阅读:14 留言:0更新日期:2021-08-17 14:30
本发明专利技术公开了一种基于微内核的硬件设备驱动系统及其驱动方法,其系统包括底层驱动层、设备抽象层、一致性API层、远程过程调用层和设备管理器;底层驱动层用于实现对设备的各种操作;设备抽象层用于提供封装接口;一致性API层用于对封装接口进行二次封装;远程过程调用层用于进行封装接口和用户接口之间的远程过程调用通信;设备管理器用于管理设备信息、管理设备运行信息和管理设备驱动。本发明专利技术的硬件设备驱动方法大大降低了驱动程序编码的复杂度,提高了驱动代码的可读性,减少了驱动开发人员的驱动开发时间,最终达到了降低研发成本的效果。

【技术实现步骤摘要】
一种基于微内核的硬件设备驱动系统及其驱动方法
本专利技术属于设备驱动
,具体涉及一种基于微内核的硬件设备驱动系统及其驱动方法。
技术介绍
Linux中,针对不同种类的设备设计了不同的驱动实现,这样的驱动实现是把不同厂家的同类硬件驱动中相同的部分抽出来自己实现,再把不同的部分留出接口给具体的驱动开发工程师来实现,从而实现驱动的标准化。内核中也设计了一些统一管理系统资源的体系,这些体系让内核能够对各个驱动之间使用的资源进行统一协调和分配,从而保证系统的稳定健康运行。通过以上描述可以看出,内核的驱动框架就是它提供的一些特定的接口函数和一些特定的数据结构。Linux的驱动集成在内核中,由内核统一管理。Linux内核使用platform平台总线机制来进行驱动的管理与注册,platform平台总线是一条虚拟的总线,并不是一个物理的总线。platform平台总线最重要的两个结构体是platform_device和platform_driver。这两个结构体分别管理驱动设备和驱动总线,platform_device结构体中包括设备名称、设备ID、资源结构个数、设备资源等信息,其中的resource结构体存入了最为重要的设备资源信息,包括资源起始地址、资源结束地址、资源类型等;platform_driver结构体中包括注册平台设备时被调用的设备探测函数、注销平台设备时被调用的删除函数、设备驱动结构体、该设备驱动支持的设备的列表等。Linux的bus-driver-device框架是目前普遍使用的驱动框架。Linux的bus-driver-device框架的物理依据是外部设备通过总线与cpu进行通讯。内核负责实现该框架中的总线规范以及设备管理(包括设备检测、驱动绑定等)的部分,驱动程序负责注册自己的驱动,实现对设备的读写控制。以bus-driver-device的方式工作的驱动通常分为两个层次:总线子系统、驱动模块。bus-driver-device这一驱动框架并没有定义Linux各个具体的驱动具体的实现方式,即代码设计与组织的方式。Linux驱动框架的driver部分,即驱动部分的框架,在Linux内核代码的driver/base目录下做出了定义,Linux的驱动都有各自的架构方式,它们的各类架构被称为“子系统”,这些子系统的代码位于内核的driver/base目录下。现有的Linux内核的bus-driver-device驱动框架的缺点如下:第一,与内核代码组织在一起,可移植性较低,安全性较低,若驱动模块崩溃,会对内核造成影响;第二,各类驱动代码以不同方式组织在内核中,代码复杂度较高,增大了开发和移植的难度与成本。
技术实现思路
本专利技术的目的是为了解决现有驱动框架复杂且安全性较低的问题,提出了一种基于微内核的硬件设备驱动系统及其驱动方法。本专利技术的技术方案是:一种基于微内核的硬件设备驱动系统,包括底层驱动层、设备抽象层、一致性API层、远程过程调用层和设备管理器;底层驱动层用于实现对设备的各种操作;设备抽象层用于提供底层驱动操作的封装接口;一致性API层用于对设备抽象层的封装接口进行二次封装,提供用户接口;远程过程调用层用于进行设备抽象层的封装接口和一致性API层的用户接口之间的远程过程调用通信,且通过客户端和服务端之间的远程过程调用通信实现用户对设备驱动的调用;设备管理器用于管理设备信息、管理设备运行信息和管理设备驱动。进一步地,设备抽象层的封装接口包括驱动初始化接口、设备驱动绑定接口、设备驱动解绑接口、打开设备接口、关闭设备接口、读写传输接口、写接口、读接口和控制接口;一致性API层的用户接口包括设备绑定驱动接口、设备解绑驱动接口、打开设备接口、关闭设备接口、读写设备接口、写设备接口、读设备接口和设备控制接口。进一步地,设备管理器中,设备信息用于对硬件设备驱动系统管理设备进行描述;设备运行信息用于通过设备管理器管理设备的预初始化、生命周期和设备维护;设备驱动包括驱动加载、驱动注册、驱动注销和驱动卸载;驱动加载用于加载设备的驱动ELF文件;驱动注册用于关联驱动和设备;驱动注销用于取消驱动和设备的关联;驱动卸载用于从内存中移除ELF进程;驱动加载包括静态加载和动态加载;静态加载用于在硬件设备驱动系统启动过程中调用驱动入口函数加载驱动运行;动态加载用于在硬件设备驱动系统启动后具体到devmgr进程启动完成后,进行驱动加载。本专利技术的有益效果是:本专利技术的硬件设备驱动系统简化驱动抽象层,使得硬件驱动具有较低的资源消耗,较好的可维护性、简洁性、可复用性以及可扩展性;减少驱动移植与开发工作所需的代码量,从而降低驱动移植与开发工作的研发成本;完成驱动与内核的解耦,使得驱动模块有更强的灵活性和可移植性,保证内核的稳定性,在驱动层出现意外崩溃等问题时,确保系统的正常运行。基于以上系统,本专利技术还提出一种基于微内核的硬件设备驱动方法,包括以下步骤:S1:调用并初始化设备驱动;S2:将设备分类,并利用设备管理器启动设备驱动和设备;S3:基于启动后的设备驱动和设备,进行设备注册和设备驱动注册;S4:调用不同驱动进程中的设备驱动;S5:在调用过程中,判断是否存在设备和设备驱动断开连接,若是则进行驱动注销,否则继续不同驱动进程间的设备驱动调用。进一步地,步骤S1中,调用设备驱动的具体方法为:从设备驱动中获取对应设备的设备实例,并对设备实例进行读写操作,完成调用;初始化设备驱动包括初始化总线类设备驱动和初始化具体设备驱动;其中,初始化总线类设备驱动的具体方法为:启动总线类设备驱动并向设备管理器发起驱动注册,将适配的设备和总线类设备驱动关联,并利用设备管理器通知总线类设备驱动进行初始化;初始化具体设备驱动的具体方法为:启动具体设备驱动并向设备管理器发起驱动注册,将适配的设备和具体设备驱动关联,并利用设备管理器通知具体设备驱动进行初始化。进一步地,步骤S2中,设备分为四类,分别为:系统关键性设备、总线类设备、静态设备和动态设备;其中,启动静态设备的具体方法为:利用设备管理器发起绑定操作,并利用设备驱动判断当前驱动是否支持该设备,若是则将设备身份标识和设备驱动标识绑定,完成静态设备启动,否则继续遍历驱动列表;若遍历的驱动列表中存在支持该设备的驱动,则进行绑定操作,否则等待下一次触发绑定操作;启动动态设备的具体方法为:利用设备管理器调用设备监听接口监听是否存在新设备接入设备驱动,若是则利用设备管理器调用控制接口接收新设备的设备信息,自行匹配适配的设备驱动,并启动设备。进一步地,步骤S3中的设备注册包括静态设备注册和动态设备注册,静态设备的注册方法为:利用设备驱动解析设备树,得到静态设备的设备信息,并发起静态设备注册申请,若注册成功则返回静态设备身份标识,否则再次发起静态设备注册申请,直至静态设备注册成功;步骤S3中,动态设备的注册方法包括以下子步骤:A31本文档来自技高网
...

【技术保护点】
1.一种基于微内核的硬件设备驱动系统,其特征在于,包括底层驱动层、设备抽象层、一致性API层、远程过程调用层和设备管理器;/n所述底层驱动层用于实现对设备的各种操作;/n所述设备抽象层用于提供底层驱动操作的封装接口;/n所述一致性API层用于对设备抽象层的封装接口进行二次封装,提供用户接口;/n所述远程过程调用层用于进行设备抽象层的封装接口和一致性API层的用户接口之间的远程过程调用通信,且通过客户端和服务端之间的远程过程调用通信实现用户对设备驱动的调用;/n所述设备管理器用于管理设备信息、管理设备运行信息和管理设备驱动。/n

【技术特征摘要】
1.一种基于微内核的硬件设备驱动系统,其特征在于,包括底层驱动层、设备抽象层、一致性API层、远程过程调用层和设备管理器;
所述底层驱动层用于实现对设备的各种操作;
所述设备抽象层用于提供底层驱动操作的封装接口;
所述一致性API层用于对设备抽象层的封装接口进行二次封装,提供用户接口;
所述远程过程调用层用于进行设备抽象层的封装接口和一致性API层的用户接口之间的远程过程调用通信,且通过客户端和服务端之间的远程过程调用通信实现用户对设备驱动的调用;
所述设备管理器用于管理设备信息、管理设备运行信息和管理设备驱动。


2.根据权利要求1所述的基于微内核的硬件设备驱动系统,其特征在于,所述设备抽象层的封装接口包括驱动初始化接口、设备驱动绑定接口、设备驱动解绑接口、打开设备接口、关闭设备接口、读写传输接口、写接口、读接口和控制接口;
所述一致性API层的用户接口包括设备绑定驱动接口、设备解绑驱动接口、打开设备接口、关闭设备接口、读写设备接口、写设备接口、读设备接口和设备控制接口。


3.根据权利要求1所述的基于微内核的硬件设备驱动系统,其特征在于,所述设备管理器中,所述设备信息用于对硬件设备驱动系统管理设备进行描述;所述设备运行信息用于管理设备的预初始化、生命周期和设备维护;所述设备驱动包括驱动加载、驱动注册、驱动注销和驱动卸载;
所述驱动加载用于加载设备的驱动ELF文件;所述驱动注册用于关联驱动和设备;所述驱动注销用于取消驱动和设备的关联;所述驱动卸载用于从内存中移除ELF进程;
所述驱动加载包括静态加载和动态加载;所述静态加载用于在硬件设备驱动系统启动过程中调用驱动入口函数加载驱动运行;所述动态加载用于在硬件设备驱动系统启动后进行驱动加载。


4.一种基于微内核的硬件设备驱动方法,其特征在于,所述基于微内核的硬件设备驱动方法应用于如权利要求1-3任一所述的基于微内核的硬件设备驱动系统,包括以下步骤:
S1:调用并初始化设备驱动;
S2:将设备分类,并利用设备管理器启动设备驱动和设备;
S3:基于启动后的设备驱动和设备,进行设备注册和设备驱动注册;
S4:调用不同驱动进程中的设备驱动;
S5:在调用过程中,判断是否存在设备和设备驱动断开连接,若是则进行驱动注销,否则继续不同驱动进程间的设备驱动调用。


5.根据权利要求4所述的基于微内核的硬件设备驱动方法,其特征在于,所述步骤S1中,调用设备驱动的具体方法为:从设备驱动中获取对应设备的设备实例,并对设备实例进行读写操作,完成调用;
初始化设备驱动包括初始化总线类设备驱动和初始化具体设备驱动;其中,初始化总线类设备驱动的具体方法为:启动总线类设备驱动并向设备管理器发起驱动注册,将适配的设备和总线类设备驱动关联,并利用设备管理器通知总线类设备驱动进行初始化;
初始化具体设备驱动的具体方法为:启动具体设备驱动并向设备管理器发起驱动注册,将适配的设备和具体设备驱动关联,并利用设备管理器通知具体设备驱动进行初始化。

...

【专利技术属性】
技术研发人员:张昆廖元垲王大维
申请(专利权)人:成都菁蓉联创科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1