硬件驱动兼容方法及终端与流程

文档序号:14784981发布日期:2018-06-27 22:09阅读:270来源:国知局
硬件驱动兼容方法及终端与流程

本发明实施例涉及终端技术,尤其涉及一种硬件驱动兼容方法及终端。



背景技术:

通常情况下,硬件在出厂时通常配置有该硬件的原始驱动程序;由于Linux操作系统的特殊性(免费使用、自由传播、任意修改其源代码),硬件在出厂时所配置的原始驱动程序为兼容Linux的驱动程序。

当运行有vxWorks操作系统的终端需要添加某个硬件,若该硬件的原始驱动程序兼容Linux操作系统,但不兼容vxWorks操作系统时,现有技术通常会对该硬件的原始驱动程序进行修改(例如,需要修改原始驱动程序中用于调用Linux操作系统提供的API的相关部分),并将修改后的驱动程序移植入vxWorks操作系统,使得该终端可以通过修改后的驱动程序控制该硬件。但现有技术中,修改原始驱动程序的工作量较大,使得驱动程序的移植需要花费大量时间。



技术实现要素:

本发明实施例提供一种硬件驱动兼容方法及终端,减少了驱动程序的移植时间,提高了硬件驱动兼容效率。

第一方面,本发明实施例提供一种硬件驱动兼容方法,包括:

采用第一操作系统检测到目标硬件,所述目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且所述目标硬件的驱动程序的入口函数为所述第一操作系统可调用函数;

调用所述目标硬件的驱动程序;

采用所述驱动程序通过调用所述第一操作系统中的应用编程接口API驱动所述目标硬件;其中,所述API为兼容所述第二操作系统的API。

在一个可能的设计中,所述第一操作系统为vxWorks操作系统,所述第二操作系统为Linux操作系统。

在一个可能的设计中,所述方法还包括:

将所述第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,所述更新后的驱动程序的入口函数为所述第一操作系统可调用函数;

存储所述更新后的驱动程序,以及所述更新后的驱动程序与硬件之间的关联关系。

在一个可能的设计中,所述方法还包括:

在所述第一操作系统中添加所述API。

在一个可能的设计中,所述在所述第一操作系统中添加所述API,包括:

若所述第一操作系统中包括第一API、所述第二操作系统中包括第二API,且所述第一API与所述第二API的功能满足预设条件,根据所述第二操作系统中的第二API对所述第一操作系统中的第一API进行调整,得到兼容所述第二操作系统的API;或者,

若所述第二操作系统中包括第三API,且所述第一操作系统中未包括所述第三API,根据所述第二操作系统中的第三API在所述第一操作系统中添加第四API;其中,所述第四API的功能包括:所述第三API的全部功能或部分功能;或者,

若所述第二操作系统中包括第五API、所述第一操作系统中未包括所述第五API且所述第五API的功能不是用于驱动硬件,根据所述第二操作系统中的第五API在所述第一操作系统中添加第六API;其中,所述第六API不具备所述第五API的功能。

通过第一方面提供的硬件驱动兼容方法,通过采用第一操作系统检测到目标硬件,其中,目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且目标硬件的驱动程序的入口函数为第一操作系统可调用函数;进一步地,调用目标硬件的驱动程序;进一步地,采用驱动程序通过目标硬件对应的API驱动目标硬件。可见,本申请中,由于目标硬件的驱动程序的入口函数为第一操作系统可调用函数以及终端中设置有目标硬件对应的API,从而终端可以直接调用目标硬件的驱动程序并通过目标硬件对应的API直接驱动目标硬件,相比与现有技术无需大量修改硬件的原始驱动程序,减少了驱动程序的移植时间,提高了硬件驱动兼容效率。

第二方面,本发明实施例提供一种终端,包括:

检测模块,用于采用第一操作系统检测到目标硬件,所述目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且所述目标硬件的驱动程序的入口函数为所述第一操作系统可调用函数;

调用模块,用于调用所述目标硬件的驱动程序;

驱动模块,用于采用所述驱动程序通过调用所述第一操作系统中的应用程序编程接口API驱动所述目标硬件;其中,所述API为兼容所述第二操作系统的API。

在一个可能的设计中,所述第一操作系统为vxWorks操作系统,所述第二操作系统为Linux操作系统。

在一个可能的设计中,所述终端还包括:

更新模块,用于将所述第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,所述更新后的驱动程序的入口函数为所述第一操作系统可调用函数;

存储模块,用于存储所述更新后的驱动程序,以及所述更新后的驱动程序与硬件之间的关联关系。

在一个可能的设计中,所述终端还包括:

添加模块,用于在所述第一操作系统中添加所述API。

在一个可能的设计中,所述添加模块,具体用于:

若所述第一操作系统中包括第一API、所述第二操作系统中包括第二API,且所述第一API与所述第二API的功能满足预设条件,根据所述第二操作系统中的第二API对所述第一操作系统中的第一API进行调整,得到兼容所述第二操作系统的API;或者,

若所述第二操作系统中包括第三API,且所述第一操作系统中未包括所述第三API,根据所述第二操作系统中的第三API在所述第一操作系统中添加第四API;其中,所述第四API的功能包括:所述第三API的全部功能或部分功能;或者,

若所述第二操作系统中包括第五API、所述第一操作系统中未包括所述第五API且所述第五API的功能不是用于驱动硬件,根据所述第二操作系统中的第五API在所述第一操作系统中添加第六API;其中,所述第六API不具备所述第五API的功能。

上述第二方面以及上述第二方面的各可能的实施方式所提供的终端,其有益效果可以参见上述第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请硬件驱动兼容方法实施例一的流程示意图;

图2为本申请硬件驱动兼容方法的应用场景示意图;

图3为本申请硬件驱动兼容方法实施例二的流程示意图;

图4为本申请终端实施例一的结构示意图;

图5为本申请终端实施例二的结构示意图;

图6为本申请终端实施例三的结构示意图;

图7为本申请终端实施例四的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本申请硬件驱动兼容方法实施例一的流程示意图,图2为本申请硬件驱动兼容方法的应用场景示意图。如图2所示,终端中安装有第一操作系统、所述第一操作系统中设置有目标硬件的驱动程序所需调用的应用程序编程接口API(为兼容第二操作系统的API)、以及移植有目标硬件的驱动程序(为第二操作系统所兼容的驱动程序、且目标硬件的驱动程序的入口函数为第一操作系统可调用函数)。可选地,第一操作系统可以为vxWorks操作系统,或者为vxWorks操作系统兼容的其它操作系统,例如道操作系统(Delta OS)、锐华操作系统(reworks)等。可选地,第二操作系统可以为Linux操作系统。如图1所示,本实施例的方法可以包括:

S101、采用第一操作系统检测到目标硬件。

本步骤中,终端中运行有第一操作系统,终端通过第一操作系统检测终端中是否添加有新的目标硬件,可选地,终端在第一操作系统启动过程中检测终端中是否添加有新的目标硬件。可选地,终端在第一操作系统启动过程中检测终端中是否添加有新的目标硬件的方式可参见现有技术中的检测方式,本申请实施例中对此并不作限制。可选地,目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且目标硬件的驱动程序的入口函数为第一操作系统可调用函数,以便终端在检测到目标硬件时,直接调用目标硬件的驱动程序。可选地,目标硬件包括但不限于:音频设备、显卡设备。

S102、调用目标硬件的驱动程序。

本步骤中,终端在检测到目标硬件时,由于目标硬件的驱动程序的入口函数为第一操作系统可调用函数,因此,终端可直接调用目标硬件的驱动程序。

S103、采用驱动程序通过调用第一操作系统中的应用程序编程接口API驱动目标硬件;其中,API为兼容第二操作系统的API。

本步骤中,终端采用目标硬件的驱动程序,通过调用第一操作系统中设置的兼容第二操作系统的应用程序编程接口(Application Programming Interface,简称API)驱动目标硬件,以实现控制目标硬件的目的。可选地,第一操作系统中设置的目标硬件的驱动程序所需调用的API为兼容第二操作系统的API(即实现与第二操作系统中所提供的该目标硬件对应的API的功能相同或类似)。第一操作系统中的能够兼容第二操作系统的API包括下述一个或多个:计时器接口、内存管理接口、原子锁接口、自旋锁接口、固件接口;当然,API还可以包括其它接口,例如,读者/写者锁接口、等待/工作队列接口、外围组件互连(Peripheral Component Interconnect,简称PCI)总线接口、内部集成电路(Inter-Integrated Circuit,简称I2C)总线接口等,本申请实施例中对此并不作限制。

本申请实施例中,通过采用第一操作系统检测到目标硬件,其中,目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且目标硬件的驱动程序的入口函数为第一操作系统可调用函数;进一步地,调用目标硬件的驱动程序;进一步地,采用驱动程序通过调用第一操作系统中的兼容第二操作系统的API驱动目标硬件。可见,本申请中,由于目标硬件的驱动程序的入口函数为第一操作系统可调用函数以及终端中设置有兼容第二操作系统的API,从而终端可以直接调用目标硬件的驱动程序直接驱动目标硬件,相比与现有技术无需大量修改硬件的原始驱动程序,减少了驱动程序的移植时间,提高了硬件驱动兼容效率;同时还可避免现有技术中原始驱动程序在移植过程中的过度裁剪而导致性能损失的问题。

图3为本申请硬件驱动兼容方法实施例二的流程示意图。在上述实施例的基础上,如图3所示,该方法还包括:

S301、将第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,更新后的驱动程序的入口函数为第一操作系统可调用函数。

本步骤中,可选地,预先获取至少一个硬件的原始驱动程序,可选地,至少一个硬件包括:目标硬件;其中,每个硬件的原始驱动程序为第二操作系统所兼容的驱动程序;进一步地,为了运行有第一操作系统的终端可以控制硬件,将至少一个硬件的原始驱动程序(即第二操作系统所兼容的驱动程序)进行更新,使得每个更新后的驱动程序的入口函数为第一操作系统可调用函数。

S302、存储更新后的驱动程序,以及更新后的驱动程序与硬件之间的关联关系。

为了便于后续终端在检测到目标硬件时可以直接调用目标硬件的驱动程序,可选地,本步骤中,存储每个更新后的驱动程序,以及每个更新后的驱动程序与对应硬件之间的关联关系,例如,更新后的驱动程序1与硬件1之间的对应关系、更新后的驱动程序2与硬件2之间的对应关系等。

例如:在步骤S101中,终端采用第一操作系统检测到目标硬件(如硬件1),进一步根据已存储的每个更新后的驱动程序与对应硬件之间的关联关系,确定目标硬件对应的驱动程序(如更新后的驱动程序2);在步骤S102中,由于更新后的驱动程序2的入口函数为第一操作系统可调用函数,因此,终端可以直接调用目标硬件的驱动程序。

本实施例中,通过将第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,更新后的驱动程序的入口函数为第一操作系统可调用函数;进一步地,存储更新后的驱动程序,以及更新后的驱动程序与硬件之间的关联关系,以便后续终端在检测到目标硬件时,根据更新后的驱动程序与硬件之间的关联关系确定出目标硬件对应的驱动程序,从而可以直接调用目标硬件的驱动程序。可见,本实施例中,通过对硬件的原始驱动程序的入口函数进行更新,使得更新后的驱动程序的入口函数为第一操作系统可调用函数,无需大量修改硬件的原始驱动程序,减少了驱动程序的移植时间。

可选地,在上述各实施例的基础上,该方法还包括:

在第一操作系统中添加API。

本实施例中,为了尽量减少对目标硬件的原始驱动程序的修改,通过在第一操作系统中添加目标硬件的驱动程序所需调用的API(可选地,驱动程序所需调用的API为兼容第二操作系统的API,即与第二操作系统中所提供的该目标硬件的驱动程序所需调用的API的功能相同或类似),使得第二操作所兼容的目标硬件的驱动程序(该驱动程序的入口函数为第一操作系统可调用函数),可以直接调用第一操作系统中的目标硬件的驱动程序所需调用的API,从而实现控制目标硬件的目的。其中,第一操作系统中添加的目标硬件的API与第二操作系统中所提供的该目标硬件对应的API的功能相同或类似是指:假设第一操作系统中的目标硬件的API和第二操作系统中的目标硬件的API的输入相同,则第一操作系统中的目标硬件的API和第二操作系统中的目标硬件的API的输出也相同。

可选地,在第一操作系统中添加API包括如下几种可实现方式:

第一种可实现方式:若第一操作系统中包括第一API、第二操作系统中包括第二API,且第一API与第二API的功能满足预设条件,根据第二操作系统中的第二API对第一操作系统中的第一API进行调整,得到兼容第二操作系统的API。

本实现方式中,若第一操作系统中包括第一API、第二操作系统中包括第二API,且第一API与第二API的功能满足预设条件(例如,功能相同或相似),则根据第二操作系统中的第二API的函数和数据结构,分别对第一操作系统中的第一API的函数和数据结构进行调整,得到兼容第二操作系统的API。例如源代码参见下述结构:

以实现原子操作的接口实例为例进行说明:

第二种可实现方式:若第二操作系统中包括第三API,且第一操作系统中未包括第三API,根据第二操作系统中的第三API在第一操作系统中添加第四API;其中,第四API的功能包括:第三API的全部功能或部分功能。

本实现方式中,若第二操作系统中包括第三API,且第一操作系统中未包括第三API(或第一操作系统中不包括与第三API具有相同功能或相似功能的API),则根据第二操作系统中的第三API的功能以及应用场景,在第一操作系统中添加第四API,其中,第四API的功能包括:第三API的全部功能或者部分功能(可选地,部分功能为第三API的核心功能)。其中,第三API的核心功能是指用于驱动硬件的功能。

例如,若第四API的功能包括第三API的全部功能,源代码参见下述结构:

以实现按页分配内存的接口实例为例进行说明:

例如,若第四API的功能包括第三API的核心功能,源代码参见下述结构:

第三种可实现方式:若第二操作系统中包括第五API、第一操作系统中未包括第五API且第五API的功能不是用于驱动硬件,根据第二操作系统中的第五API在第一操作系统中添加第六API;其中,第六API不具备第五API的功能。

本实现方式中,若第二操作系统中包括第五API、第一操作系统中未包括第五API(或第一操作系统中不包括与第五API具有相同功能或相似功能的API)且第五API的功能不是用于驱动硬件(即第五API的功能并非核心功能),则根据第二操作系统中的第五API在第一操作系统中添加第六API;其中,第六API不具备第五API的功能(即保留函数接口,但不保留第五API的功能)。例如源代码参见下述结构:

当然,“第一操作系统中添加API”还可通过其它可实现方式,本申请实施例中对此并不作限制。

可选地,本申请上述实施例中,以第一操作系统为vxWorks操作系统和第二操作系统为Linux操作系统为例进行说明;当然,第二操作系统也可以为硬件出厂时配置的原始驱动程序所兼容的其它操作系统,第一操作系统也可以为该硬件的初始驱动程序所不兼容的其它操作系统,本申请实施例中对此并不作限制。

图4为本申请终端实施例一的结构示意图。如图4所示,本实施例提供的终端40包括:

检测模块401,用于采用第一操作系统检测到目标硬件,所述目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且所述目标硬件的驱动程序的入口函数为所述第一操作系统可调用函数;

调用模块402,用于调用所述目标硬件的驱动程序;

驱动模块403,用于采用所述驱动程序通过调用所述第一操作系统中的应用程序编程接口API驱动所述目标硬件;其中,所述API为兼容所述第二操作系统的API。

可选地,所述第一操作系统为vxWorks操作系统,所述第二操作系统为Linux操作系统。

在上述图4所示的实施例的基础上,图5为本申请终端实施例二的结构示意图。参照图5,所述终端还包括:

更新模块404,用于将所述第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,所述更新后的驱动程序的入口函数为所述第一操作系统可调用函数;

存储模块405,用于存储所述更新后的驱动程序,以及所述更新后的驱动程序与硬件之间的关联关系。

在上述图4所示的实施例的基础上,图6为本申请终端实施例三的结构示意图。参照图6,所述终端还包括:

添加模块406,用于在所述第一操作系统中添加所述API。

可选地,添加模块406,具体用于:

若所述第一操作系统中包括第一API、所述第二操作系统中包括第二API,且所述第一API与所述第二API的功能满足预设条件,根据所述第二操作系统中的第二API对所述第一操作系统中的第一API进行调整,得到兼容所述第二操作系统的API;或者,

若所述第二操作系统中包括第三API,且所述第一操作系统中未包括所述第三API,根据所述第二操作系统中的第三API在所述第一操作系统中添加第四API;其中,所述第四API的功能包括:所述第三API的全部功能或部分功能;或者,

若所述第二操作系统中包括第五API、所述第一操作系统中未包括所述第五API且所述第五API的功能不是用于驱动硬件,根据所述第二操作系统中的第五API在所述第一操作系统中添加第六API;其中,所述第六API不具备所述第五API的功能。

上述任一个实施例提供的终端可以用于执行本发明上述硬件驱动兼容方法任意实施例中的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本申请终端实施例四的结构示意图。如图7所示,本实施例提供的终端70可以包括处理器701和存储器702。其中,存储器702用于存储执行指令,处理器701用于执行存储器702中的执行指令使得所述终端执行以下操作:

采用第一操作系统检测到目标硬件,所述目标硬件的驱动程序为第二操作系统所兼容的驱动程序、且所述目标硬件的驱动程序的入口函数为所述第一操作系统可调用函数;

调用所述目标硬件的驱动程序;

采用所述驱动程序通过调用所述第一操作系统中的应用编程接口API驱动所述目标硬件;其中,所述API为兼容所述第二操作系统的API。

可选地,所述第一操作系统为vxWorks操作系统,所述第二操作系统为Linux操作系统。

可选地,所述终端还用于执行以下操作:

将所述第二操作系统兼容的原始驱动程序进行更新,获取更新后的驱动程序,其中,所述更新后的驱动程序的入口函数为所述第一操作系统可调用函数;

存储所述更新后的驱动程序,以及所述更新后的驱动程序与硬件之间的关联关系。

可选地,所述终端还用于执行以下操作:

在所述第一操作系统中添加所述API。

可选地,所述在所述第一操作系统中添加所述API,包括:

若所述第一操作系统中包括第一API、所述第二操作系统中包括第二API,且所述第一API与所述第二API的功能满足预设条件,根据所述第二操作系统中的第二API对所述第一操作系统中的第一API进行调整,得到兼容所述第二操作系统的API;或者,

若所述第二操作系统中包括第三API,且所述第一操作系统中未包括所述第三API,根据所述第二操作系统中的第三API在所述第一操作系统中添加第四API;其中,所述第四API的功能包括:所述第三API的全部功能或部分功能;或者,

若所述第二操作系统中包括第五API、所述第一操作系统中未包括所述第五API且所述第五API的功能不是用于驱动硬件,根据所述第二操作系统中的第五API在所述第一操作系统中添加第六API;其中,所述第六API不具备所述第五API的功能。

本实施例的终端,可以用于执行本发明上述硬件驱动兼容方法任意实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

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

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