一种设备驱动管理方法与流程

文档序号:11620387阅读:247来源:国知局

本发明属于操作系统软件技术领域,特别是涉及一种设备驱动管理方法。



背景技术:

智能设备系统中,软件和硬件缺一不可。每种硬件在其整个生命周期内只能运行预先设定好的操作系统和应用程序,如果预先设定的操作系统和应用程序无法维护后,那么该硬件的功能就无法很好的适应新业务的扩展,随之寿命也会终止。例如,智能手机会定时进行操作系统更新或者功能升级,操作系统包括内核和驱动,操作系统更新或者功能升级时,内核和驱动程序会同步更新和升级,但是,如果更新和升级后的驱动程序版本较高,硬件设备达不到驱动程序的要求,驱动程序与硬件设备不匹配,则会导致智能手机无法正常升级使用,造成了智能机淘汰速度的加快,产生大量的电子垃圾,严重影响环境,并造成无端的人力和财力的浪费。



技术实现要素:

本发明的目的在于提供一种设备驱动管理方法,解决了现有内核和驱动同时更新和升级造成驱动程序与硬件设备不匹配,导致智能设备无法正常工作的技术问题。

为解决上述技术问题,本发明采用以下技术方案予以实现:

一种设备驱动管理方法,操作系统的内核与驱动分离,所述方法为:

系统启动程序运行时,进行芯片和硬件设备的扫描和识别,并将识别的硬件信息形成硬件描述列表;

系统启动程序运行后,加载运行内核,所述系统启动程序将硬件描述列表传递给所述内核,所述内核根据所述硬件描述列表自动配置加载硬件的驱动。

与现有技术相比,本发明的优点和积极效果是:本发明操作系统的内核与驱动分离,在系统启动程序运行时,对硬件进行识别,并将识别的硬件形成硬件描述列表,系统刚启动程序运行后,加载运行内核,系统启动程序将硬件描述列表传递给内核,内核根据硬件描述列表自动配置加载硬件的驱动。本发明可以根据硬件种类和规格进行自动配置和管理驱动,可以根据不同的硬件规格配置和管理板级设备,保证系统在不同的硬件平台上稳定运行。本发明内核只配置加载针对当前硬件的驱动管理程序,精简大量无用的板级总线和设备驱动管理,提高系统工作效率,可以实现系统的快速升级和部署。本发明还可提高硬件的可重用性,避免由于驱动软件升级与硬件不匹配造成无法使用的问题,提高硬件的生命周期,减少无端的浪费和电子污染。

结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。

附图说明

图1是本发明具体实施例的流程图。

具体实施方式

本发明所说的硬件包括关键设备和外围设备,其中,关键设备是指组成智能设备的各种芯片,例如控制类芯片、存储类芯片、电源管理类芯片和通信类芯片等;外围设备是指与智能设备可插拔的输入设备、输出设备等。输出设备可以是显示屏、打印机、音箱等;输入设备可以是鼠标、键盘、摄像头等。

本实施例提出了一种设备驱动管理方法,将操作系统的内核与驱动分离,采用硬件描述列表对硬件驱动进行管理。

内核与驱动分离的作用是:系统更新时,可分别或同时进行内核与驱动的更新。由于内核与驱动彻底分离,因而,内核的更新不依赖与驱动的更新,内核的更新不会出现问题,驱动则根据硬件信息进行更新。驱动更新时,若驱动程序的版本高于硬件现有驱动程序的版本,则对硬件的驱动程序进行更新,若更新成功即可,若更新失败,则硬件仍然配置加载现有的驱动程序的版本,以保证硬件与驱动程序的匹配,提高硬件的使用寿命。

采用硬件描述列表对硬件驱动进行管理的方法是:系统启动程序运行时,进行硬件的扫描和识别,并将识别的硬件信息形成硬件描述列表;

系统启动程序运行后,加载运行内核,系统启动程序将硬件描述列表传递给内核,内核根据硬件描述列表自动配置加载硬件的驱动。

如果内核无法正常加载硬件的驱动,则将未能正常加载驱动的硬件告知用户,提示用户通过网络或手动或者其他的方式来管理驱动。

具体的,智能设备在启动过程中,也即系统启动程序运行时,系统启动程序通过总线扫描硬件,并对扫描的硬件进行识别,得到硬件信息,然后将识别的硬件信息形成硬件描述列表。其中,硬件信息存储在硬件的存储区域中。系统启动程序运行后,加载运行内核,此时,系统启动程序将硬件描述列表传递给操作系统的内核,内核根据硬件描述列表自动配置加载硬件的驱动。其中,硬件信息根据硬件类型分为关键设备信息和外围设备信息,关键设备信息主要包括芯片规格的参数,外围设备信息主要包括外围设备规格的参数。内核根据硬件描述列表自动配置加载硬件的驱动包括加载关键设备和外围设备的驱动。

硬件描述列表包括硬件的类型、型号、设备id信息、总线类别等信息。例如:

设备类型1{

设备描述="设备的主要功能描述";

设备厂商描述符="厂商id";

设备产品描述符="产品id";

设备总线类型="pcii2cusb";

设备驱动状态="sucessorfailure";

设备占用系统中断资源="";

设备占用系统gpio资源="";

设备工作频率="";

子设备1{

}

子设备2{

}

};

设备类型2{

};

智能设备每次启动时,也即系统启动程序每次运行时都会进行硬件的识别。为了加快启动过程,智能设备每次启动完毕后,也即内核启动完毕后,将硬件描述列表存储至存储设备,系统启动程序每次运行时都会进行硬件的识别,并将识别的硬件信息形成新的硬件描述列表,内核将新的硬件描述列表与存储设备中存储的硬件描述列表进行比较,如果相同,内核按照前一次加载模式快速加载,如果不相同,根据新添加的硬件或新的硬件描述列表重新自动配置加载硬件的驱动。

系统启动程序运行后,加载存储于存储设备的内核时,如果因为存储设备在系统启动程序里面的驱动无法正常工作,会造成内核加载失败,此时,开启加载外置系统模式,即,加载存储于兼容性好的外围存储设备的内核。由于usb设备为标准通用设备、兼容性好,一般通过外围usb设备进行内核的存储,加载存储于外围usb设备中的内核均会成功。加载存储于兼容性好的外围存储设备(usb设备)的内核成功后,再搜寻和安装存储内核的存储设备的驱动。

内核启动完毕,配置加载硬件的驱动完毕后,启动设备动态监测进程以实时管理硬件,例如,硬件的创建、加载、卸载,以及新加入设备的动态识别和管理,以及驱动的加载和更新。启动设备动态监测进程实时将硬件变动信息同步至存储设备中的硬件描述列表,以使硬件描述列表能够反映最新的硬件状态。如果动态监测进程发现有硬件移除,则将移除硬件的硬件信息从硬件描述列表中移除;如果动态监测进程发现有硬件插入,则将插入硬件的硬件信息增加至硬件描述列表,同时加载插入硬件的驱动,如果设备动态监测进程无法正常加载硬件的驱动,则将未能正常加载驱动的硬件告知用户,提示用户通过手动或者其他的方式来管理驱动。

设备动态监测进程还用于监控驱动的运行状态是否稳定。

设备动态监测进程主要用于管理外围设备的驱动,而关键设备的驱动的管理主要由内核负责完成。

在系统初次安装时,系统启动程序把扫描和识别的关键设备和外围设备信息保存并传递给内核。由于关键设备都是智能设备内的固定硬件,系统启动程序可以准确地扫描和识别关键设备。但是,由于外围设备大多是用户自己添加的热插拔设备,因而,系统启动程序扫描和识别外围设备时,会有外围设备信息识别不到或识别不全的情况,此时,系统启动程序生成不能识别的外围设备信息,例如:外围设备挂载总线和接口(外围设备信息识别不到的情形)、外围设备的厂商和产品信息(外围设备信息识别不全的情形),并将不能识别的外围设备信息保存在硬件描述列表中。等系统安装完成后,根据不能识别的外围设备信息对不能识别的外围设备驱动进行处理。若外围设备信息识别不全,首先会根据外围设备的厂商和产品信息,尝试联网搜索设备更新数据库,在网络不通或者没有搜索到外围设备或者外围设备信息识别不到的情况下,将不能识别的外围设备信息发送给用户态,用户可以自行咨询设备厂商安装驱动。安装完成后,每次外围设备变动后,如果是即插即用设备,启动设备动态监测进程会识别外围设备信息,将识别的外围设备信息更新到硬件描述列表并自动搜索加载外围设备驱动,等下次重新启动时,内核会根据更新的硬件描述列表加载和管理驱动。如果是其他非即插即用设备,需要断电重启进入系统后,再搜索安装驱动。一般外围设备驱动的管理采用网络自动搜查的方式。

驱动采用用户空间运行的服务方式,并且能够跟内核实现快速的交互以及隔离与其他系统模块的耦合。设备动态监测进程,为驱动运行提供了隔离环境,如果驱动程序出错,不会导致内核崩溃,提高系统的健壮性;并且可以随着不同硬件设备的出现和更新,提供灵活性和扩展性。

设备动态监测进程采用专有内存池来管理外围设备驱动,并且为每个外围设备驱动提供相互隔离的内存空间。

硬件变动时,动态监测进程形成变更标识,并将变更标识发送至系统启动程序。系统启动程序再次运行时,获取变更标识并重新扫描识别硬件。

为了保证智能设备系统能够正常启动,系统启动程序运行之前,首先运行启动固件,启动固件具有统一的规范和标准,启动固件存储有系统启动程序存储的起始地址。启动固件是在板级主芯片内置或外置的一块统一启动rom固件,板级芯片上电后,首先运行位于板级主芯片内置或者外置的统一启动rom固件(简称startrom),startrom中存储有统一启动程序。startrom引导代码进行芯片时钟和系统的初始化操作,完成最小系统环境创建完成后,再加载外置存储设备起始地址处的系统启动程序,系统启动程序例如是uboot或者bios、uefi等,外置存储设备起始地址开始的一小段区域划分为统一存储区域,即,startrom可以统一识别并加载此地址处的系统启动程序。

如图1所示,以智能设备的启动过程为例进行说明:

s1、系统上电。

s2、运行启动固件中的统一引导代码。

s3、startrom统一引导代码进行芯片时钟和系统的初始化操作,完成最小系统环境创建。

s4、统一引导代码加载外置存储设备起始地址处的系统启动程序。

s5、系统启动程序扫描和识别硬件,并将识别的硬件信息形成硬件描述列表。

s6、加载运行存储设备中的内核,并判断是否成功,若失败,则进入步骤s7,否则,进入步骤s8。

s7、加载存储于外围usb设备中的内核,再搜寻和安装存储内核的存储设备的驱动,进入步骤s8。

s8、内核读取系统启动程序形成的硬件描述列表。

s9、根据硬件描述列表自动配置加载硬件的驱动,并判断是否成功,若失败,进入步骤s10,否则,进入步骤s11。

s10、将更新失败的硬件标识出来,并发行通知给用户态,用户态通过网络或者手动更新驱动。进入步骤s12。

s11、将硬件描述列表存储至存储设备。

s12、设备动态监测进程实时管理硬件,实时更新硬件描述列表。

s13、如果设备动态监测进程无法正常加载硬件的驱动。

s14、将未能正常加载驱动的硬件告知用户,提示用户通过手动或者其他的方式来管理驱动。

本实施例设备驱动管理方法,可以有效的提高硬件设备的系统移植难度,提高硬件的使用寿命和可重用度,在硬件物理期限的周期内,可以最大发挥其使用价值。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1