CN104375866A - 一种单板的驱动更新方法及装置 - Google Patents
一种单板的驱动更新方法及装置 Download PDFInfo
- Publication number
- CN104375866A CN104375866A CN201410682564.8A CN201410682564A CN104375866A CN 104375866 A CN104375866 A CN 104375866A CN 201410682564 A CN201410682564 A CN 201410682564A CN 104375866 A CN104375866 A CN 104375866A
- Authority
- CN
- China
- Prior art keywords
- driving function
- veneer
- business software
- bag
- driving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种单板的驱动更新方法及装置。本发明实施例提供的技术方案中,通过在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;进而,依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。本发明实施例提供的技术方案用于解决现有技术存在着的单板更新的工作量大,更新效率较低的问题。
Description
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种单板的驱动更新方法及装置。
【背景技术】
在通信系统,如嵌入式系统中,单板的更新换代频繁。按照摩尔定律,平均每18个月,单板的处理速度或者容量将提升一倍,旧单板将逐渐退出市场;为保持产品竞争力和持续供应性,平均3年左右发布新单板。
新单板的发布需要同时进行驱动的更新,目前,将驱动包与业务软件包捆绑发布,是通信系统中驱动更新的最常用方法,其实现方法是:开发新单板后,开发与新单板匹配的驱动包,并将驱动包与新单板上原业务软件包进行联合编译,以获得新业务软件包;最后发布新业务软件包,旧业务软件包需要更新为新业务软件包后,才能使用新单板。
然而,上述驱动更新方法中,需要将新驱动包与业务软件包联合编译后进行绑定发布,使得单板更新的工作量较大,单板的更新效率较低。
【发明内容】
有鉴于此,本发明实施例提供了一种单板的驱动更新方法及装置,用于解决现有技术存在着的单板更新的工作量大,更新效率较低的问题。
第一方面,本发明实施例提供了一种单板的驱动更新方法,所述方法包括:
在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;
依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
在第一方面的第一种可能的实现方式中,所述依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数,包括:
所述单板的基本输入输出系统BIOS依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板相匹配,所述BIOS从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
在第一方面的第二种可能的实现方式中,所述依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数,包括:
所述单板中从远程加载的业务软件包中的业务软件运行以及通过操作系统调用第一驱动函数时,所述第二驱动包中的替换模块依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板不相匹配,所述替换模块依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;
所述替换模块利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
结合第一方面,或者第一方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,所述在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息,包括:
依据符号表的特征信息,从所述单板中从远程加载的业务软件包中,获得所述符号表;
从所述符号表中获得所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
结合第一方面,或者第一方面第一至第二种任意一种可能的实现方式,在第四种可能的实现方式中,所述在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息,包括:
利用预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数;
依据属于同一物理器件的驱动函数具有相邻关系特征,从所述至少一个候选驱动函数中选出所述第一驱动函数;
依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
结合第一方面第一种可能的实现方式以及第二种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述利用所述第二驱动函数替换所述第一驱动函数,包括:
依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息;
依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令;
在所述第一驱动函数的入口增加所述跳转指令。
第二方面,本发明实施例提供了一种单板的驱动更新装置,所述装置包括:
分析模块,用于在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;
替换模块,用于依据所述分析模块获得的所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
在第二方面的第一种可能的实现方式中,所述替换模块,具体用于:
依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板相匹配,从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
在第二方面的第二种可能的实现方式中,所述替换模块,具体用于:
所述单板中从远程加载的业务软件包中的业务软件运行以及通过操作系统调用第一驱动函数时,依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板不相匹配,依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;
利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
结合第二方面,或者第二方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,所述分析模块,具体用于:
依据符号表的特征信息,从所述单板中从远程加载的业务软件包中,获得所述符号表;
从所述符号表中获得所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
结合第二方面,或者第二方面第一至第二种任意一种可能的实现方式,在第四种可能的实现方式中,所述分析模块,具体用于:
利用预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数;
依据属于同一物理器件的驱动函数具有相邻关系特征,从所述至少一个候选驱动函数中选出所述第一驱动函数;
依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
结合第二方面第一种可能的实现方式以及第二种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述替换模块用于利用所述第二驱动函数替换所述第一驱动函数时,具体用于:
依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息;
依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令;
在所述第一驱动函数的入口增加所述跳转指令。
由以上技术方案可以看出,本发明实施例具有以下有益效果:
将第二驱动包预先板载于所述单板,且从远程加载业务软件包,因此可以实现驱动包与单板一起发布,与业务软件包分开发布,而且单板能够自动进行驱动函数的更新,不需要将第二驱动包与业务软件包绑定发布,实现单板更新与单板的业务软件包更新的分离,用于解决现有技术存在着的单板更新的工作量大,更新效率较低的问题,消除单板升级带来的业务软件包联合编译的高成本,降低单板更新的工作量,提高单板的更新效率。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例中驱动包板载于单板的架构示意图;
图2是本发明实施例中驱动函数的属性信息的数据结构示意图;
图3是本发明实施例所提供的单板的驱动更新方法的实施例一的流程示意图;
图4是本发明实施例所提供的单板的驱动更新方法的实施例二的流程示意图;
图5是本发明实施例所提供的单板的驱动更新方法的实施例三的流程示意图;
图6是本发明实施例所提供的单板的功能方块图;
图7是本发明实施例所提供的单板的结构示意图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
嵌入式系统可以包含机框设备以及至少一个单板,机框设备的背板上具有若干插槽,每个单板可以插在一个插槽上,以实现接入该嵌入式系统。
其中,每个单板都预先板载有该单板对应的驱动,该驱动可以用于驱动该单板上的所有硬件单元。
例如,所述单板可以包括但不限于网卡或者显卡等物理器件,这些物理器件属于该单板上的器件。该单板的驱动可以用于驱动网卡、显卡等物理器件。
本发明实施例中,可以利用单板替换嵌入式系统中的已有单板,实现单板的更新换代,单板相当于新单板,已有单板相当于旧单板。另外,需要同时对单板的驱动进行更新,预先板载于所述单板的第二驱动包相当于新驱动包,业务软件包中的第一驱动包相当于旧驱动。或者,在嵌入式系统中增加该单板,实现嵌入式系统中单板的补充;另外,需要同时增加该该单板的第二驱动包。
优选的,在所述嵌入式系统中增加的所述单板预先板载有第二驱动包,实现该第二驱动包与该单板捆绑发布,该单板中的业务软件包是从远程加载过来的,因此,实现该第二驱动包与单板的业务软件包的分开发布。
其中,第一驱动包中包含第一驱动函数和第一驱动函数的属性信息。第一驱动的属性信息相当于嵌入式系统的全局唯一标识,第一驱动的属性信息包括第一驱动函数的标识以及第一驱动函数的描述信息,该描述信息可以为该第一驱动函数能够支持的物理器件的类型信息。
例如,第一驱动包中可以包含一个驱动函数列表,该驱动函数列表存储有至少一个第一驱动函数,每个第一驱动函数都有一个对应的第一驱动函数的标识;其中,每个第一驱动函数都可以对应支持一种物理器件的类型,也可以支持至少两种物理器件的类型。
其中,驱动函数指的是单板中运行业务软件的物理器件实现业务功能时,业务软件需要调用的函数。
例如,嵌入式系统中接入一个新网卡后,该新网卡的驱动中包含的驱动函数用于实现这个新网卡在实现上网时的接收功能、发送功能和管理功能。
请参考图1,其为本发明实施例中驱动板载于单板的架构示意图,如图所示,业务软件包可以从远程加载到单板上,业务软件包中可以包括但不限于业务软件和第一驱动包。单板中包含软件和硬件,单板的软件可以包括但不限于第二驱动包、基本输入输出系统(Basic Input Output System,BIOS)和操作系统;单板的硬件可以包括中央处理单元(Central Processing Unit,CPU)、BIOS存储器、内存、硬盘等物理器件,BIOS存储器、内存、硬盘等物理器件可以通过总线与CPU连接。
如图1所示,第二驱动包需要预先板载于所述单板,也就是说,需要将新驱动包板载于新单板上,与新单板捆绑发布。其中,所述第二驱动包可以包括但不限于第二驱动函数和所述第二驱动的属性信息。所述第二驱动的属性信息包括所述第二驱动函数的标识和所述第二驱动函数的描述信息,该描述信息可以为该第二驱动函数所支持的物理器件的类型信息。其中,可以将第一驱动函数的标识同步到第二驱动的属性信息中,作为第二驱动函数的标识;同时,在第一驱动函数的属性信息中配置第二驱动函数支持的物理器件的类型信息。
请参考图2,其为本发明实施例中驱动函数的属性信息的数据结构示意图,如图所示,为了保证上述属性信息的通用性和全局唯一性,驱动函数(相当于上述第一驱动函数或者上述第二驱动函数)的属性信息分为两个字段,即驱动函数的标识和描述信息,该描述信息可以为驱动函数支持的物理器件的类型信息,支持的物理器件的类型信息可以包含两个字节,如图2所示的0X00和0X01,这两个字节可以表示65536种物理器件的类型;驱动函数的标识可以包括两个字节,如图2所示的0X02和0X03,这两个字节可以表示65536个驱动函数。优选的,物理器件的类型信息可以为该物理器件的识别码。
实施例一
基于上述描述,本发明实施例给出一种单板的驱动更新方法,请参考图3,其为本发明实施例所提供的单板的驱动更新方法的实施例一的流程示意图,如图所示,该方法包括以下步骤:
步骤301,在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息。
步骤302,依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
需要说明的是,本发明实施例中,所述单板中从远程加载的业务软件包中包括第一驱动包,所述第一驱动包中包含所述单板中至少一个物理器件中每个物理器件对应的驱动函数。
实施例二
基于实施例一,本发明实施例对实施例一中步骤301和步骤302的方法进行具体描述。请参见图4,其为本发明实施例所提供的单板的驱动更新方法的实施例二的流程示意图,如图所示,该步骤具体可以包括:
步骤401,单板的BIOS中的加载模块远程加载业务软件包。
步骤402,单板的BIOS中的分析模块在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息。
具体的,利用单板替换嵌入式系统的已有单板后或者在嵌入式系统中增加该单板后,单板进入嵌入式系统中并开始应用,单板启动过程中,单板的BIOS需要进行单板的驱动函数更新,因此,BIOS中的分析模块需要在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息。
举例说明,分析模块在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息的方法可以包括但不限于以下两种:
第一种:首先,分析模块依据预先设置的符号表的特征信息,从所述单板中从远程加载的业务软件包中,查找该符号表,该符号表用于保存第一驱动函数的名称以及第一驱动函数在业务软件包中的起始位置,这样,分析模块就可以从所述符号表中获得所述第一驱动函数的起始位置;最后,分析模块依据所述第一驱动函数在所述业务软件包中的起始位置,可以获得完整的第一驱动函数,进而依据第一驱动函数的结构特点,从所述第一驱动函数中查找到所述第一驱动函数的描述信息。
第二种:首先,驱动函数是具有一些特殊标识的,如该驱动函数能够支持的物理器件的识别码等,分析模块依据预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数。这里,由于业务软件包中包含二进制数据,因此,可以利用该特殊标识在该二进制数据中进行字符匹配,以获得至少一个候选驱动函数。然后,由于可能会存在多个第一驱动函数都能够支持相同的物理器件,因此,可能会匹配出至少一个候选驱动函数,因此分析模块可以依据属于同一物理器件的驱动函数具有相邻关系这一特点,从所述至少一个候选驱动函数中选出所述第一驱动函数。例如,已经找到了网卡的接收函数,现在需要找到网卡的发送函数,发送函数的位置与接收函数相邻,因此,可以依据接收函数的位置信息,在候选驱动函数找到与该接收函数相邻的候选驱动函数,将该候选驱动函数作为第二驱动函数。最后,分析模块可以依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数的起始位置;依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。例如,特殊标识在第一驱动函数的第10行,依据该特殊标识的位置信息,将该位置信息倒推10行,就可以获该第一驱动函数的起始位置。
优选的,第一驱动函数的描述信息可以为该第一驱动函数能够支持的物理器件的类型信息。
步骤403,所述单板的BIOS中的替换模块依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;如果是,执行步骤404,如果否,执行步骤405。
具体的,所述单板的BIOS中的替换模块依据所述第一驱动函数的描述信息,判断出所述第一驱动函数能够支持第一单板上的物理器件,则确定所述第一驱动函数与所述单板相匹配,然后执行步骤404。反之,若判断出所述第一驱动函数不能够支持第一单板上的物理器件,则确定所述第一驱动函数与所述单板不相匹配,然后执行步骤405。
步骤404,单板的BIOS中的替换模块从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
具体的,单板的BIOS中的替换模块依据单板上物理器件的标识码,从预先板载于所述单板的第二驱动包中,获得对应的所述第二驱动函数;然后,替换模块利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
举例说明,本发明实施例中,替换模块利用所述第二驱动函数替换所述第一驱动函数的方法可以包括但不限于:
首先,替换模块依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息。这里,替换模块可以通过单板的操作系统申请一个安全存储区域,该安全存储区域是不会被覆盖的区域,该安全存储区域可以存储第二驱动包。例如,可以将第二驱动函数在第二驱动包中的位置信息看做地址偏移量,将该地址偏移量与该安全存储区域的地址相加,得到第二驱动函数在安全存储区域的实际地址,该实际地址就作为第二驱动函数在安全存储区域的位置信息。
然后,替换模块依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令,这样,跳转指令就可以包含该位置信息。
最后,在所述第一驱动函数的入口增加所述跳转指令,这样,当业务软件包通过第一驱动函数的入口,调用该第一驱动函数时,就可以依据该跳转指令,跳转到替换该第一驱动函数的第二驱动函数,进而调用该第二驱动函数,实现单板上驱动函数的更新。
步骤405,单板的BIOS中的替换模块不利用第二驱动函数替换第一驱动函数,这样,单板中从远程加载的业务软件包中的业务软件运行时,仍然通过单板的操作系统,调动第一驱动函数。
步骤406,单板的操作系统运行。
步骤407,单板的操作系统运行后,单板上加载的业务软件包中的业务软件运行。
步骤408,运行的业务软件通过操作系统调用相应的驱动函数,如果进行了驱动函数的替换,则调用的是第二驱动函数,如果没有进行驱动函数的替换,则调用的是第一驱动函数。
其中,业务软件可以依据业务需求调用相应的驱动函数,如网口数据的接收函数、网口数据的发送函数或串口通信函数等。
本实施例中,在单板的启动阶段就已经进行驱动函数的重定位,一次性将业务软件需要调用的驱动函数进行重定位,将业务软件的驱动函数由第一驱动函数重定位到第二驱动函数,将第二驱动函数作为业务软件的驱动函数,这样,在业务软件的运行过程中,可以直接调用驱动函数,不需要在调用驱动函数时,才进行驱动函数的重定位,因此能够提高单板上业务软件的运行效率。
实施例三
基于实施例一,本发明实施例对实施例一中步骤301和步骤302的方法进行具体描述。请参见图5,其为本发明实施例所提供的单板的驱动更新方法的实施例三的流程示意图,如图所示,该步骤具体可以包括:
步骤501,单板的BIOS中的加载模块远程加载业务软件包。
步骤502,单板的操作系统运行。
步骤503,单板的操作系统运行后,单板上加载的业务软件包中的业务软件运行。
步骤504,单板上加载的业务软件包中的业务软件通过操作系统调用第一驱动函数。
步骤505,第二驱动包中的分析模块在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息。
具体的,利用单板替换嵌入式系统的已有单板后或者在嵌入式系统中增加该单板后,单板进入嵌入式系统中并开始应用,单板所在嵌入式系统启动后,业务软件通过操作系统调用第一驱动函数时,板载于单板的第二驱动包中新增加的分析模块,需要进行单板的驱动函数更新,因此,第二驱动包中的分析模块需要在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息。
举例说明,第二驱动包中的分析模块在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息的方法可以包括但不限于以下两种:
第一种:首先,分析模块依据预先设置的符号表的特征信息,从所述单板中从远程加载的业务软件包中,查找该符号表,该符号表用于保存第一驱动函数的名称以及第一驱动函数在业务软件包中的起始位置,这样,分析模块就可以从所述符号表中获得所述第一驱动函数的起始位置;最后,分析模块依据所述第一驱动函数在所述业务软件包中的起始位置,可以获得完整的第一驱动函数,进而依据第一驱动函数的结构特点,从所述第一驱动函数中查找到所述第一驱动函数的描述信息。
第二种:首先,驱动函数是具有一些特殊标识的,如该驱动函数能够支持的物理器件的识别码等,分析模块依据预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数。这里,由于业务软件包中包含二进制数据,因此,可以利用该特殊标识在该二进制数据中进行字符匹配,以获得至少一个候选驱动函数。然后,由于可能会存在多个第一驱动函数都能够支持相同的物理器件,因此,可能会匹配出至少一个候选驱动函数,因此分析模块可以依据属于同一物理器件的驱动函数具有相邻关系这一特点,从所述至少一个候选驱动函数中选出所述第一驱动函数。例如,已经找到了网卡的接收函数,现在需要找到网卡的发送函数,发送函数的位置与接收函数相邻,因此,可以依据接收函数的位置信息,在候选驱动函数找到与该接收函数相邻的候选驱动函数,将该候选驱动函数作为第二驱动函数。最后,分析模块可以依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数的起始位置;依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。例如,特殊标识在第一驱动函数的第10行,依据该特殊标识的位置信息,将该位置信息倒推10行,就可以获该第一驱动函数的起始位置。
优选的,第一驱动函数的描述信息可以为该第一驱动函数能够支持的物理器件的类型信息。
需要说明的是,上述第二驱动包中的分析模块可以通过在第二驱动包中新增的分析代码实现。
步骤506,第二驱动包中的替换模块依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配,如果否,执行步骤507,如果是,执行步骤508。
具体的,第二驱动包中新增加的替换模块依据所述分析模块获得的第一驱动函数的描述信息,判断出所述第一驱动函数能够支持第一单板上的物理器件,则确定所述第一驱动函数与所述单板相匹配,然后执行步骤508。反之,若判断出所述第一驱动函数不能够支持第一单板上的物理器件,则确定所述第一驱动函数与所述单板不相匹配,然后执行步骤507。
步骤507,所述替换模块依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
具体的,所述第二驱动包中新增加的替换模块依据单板上物理器件的标识码,从预先板载于所述单板的第二驱动包中,获得对应的所述第二驱动函数;然后,替换模块利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
举例说明,本发明实施例中,第二驱动包中的替换模块利用所述第二驱动函数替换所述第一驱动函数的方法可以包括但不限于:
首先,替换模块依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息。这里,替换模块可以通过单板的操作系统申请一个安全存储区域,该安全存储区域是不会被覆盖的区域,该安全存储区域可以存储第二驱动包。例如,可以将第二驱动函数在第二驱动包中的位置信息看做地址偏移量,将该地址偏移量与该安全存储区域的地址相加,得到第二驱动函数在安全存储区域的实际地址,该实际地址就作为第二驱动函数在安全存储区域的位置信息。
然后,替换模块依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令,这样,跳转指令就可以包含该位置信息。
最后,在所述第一驱动函数的入口增加所述跳转指令,这样,当业务软件包通过第一驱动函数的入口,调用该第一驱动函数时,就可以依据该跳转指令,跳转到替换该第一驱动函数的第二驱动函数,进而调用该第二驱动函数,实现单板上驱动函数的更新。
需要说明的是,上述第二驱动包中的替换模块可以通过在第二驱动包中新增的替换代码实现。
步骤508,所述业务软件直接运行所述第一驱动函数。
具体的,由于所述第一驱动函数与所述单板相匹配,则业务软件可以调用并运行该第一驱动函数,不需要进行驱动函数的更新。
本实施例中,在业务软件运行过程中,将单板中从远程加载的业务软件包中的业务软件运行时需要调用的驱动函数由第一驱动函数重定位到第二驱动包中的第二驱动函数,以实现单板的驱动函数更新,不需要将第二驱动包与业务软件包绑定发布,而是将第二驱动包在单板上板载后发布,实现单板的即插即用,单板上的业务软件包无需变更,从而可以消除业务软件包重新部署带来的成本和时间损耗,提高单板更新的效率。
另外,本实施例是在业务软件的运行过程中,实现热插拔场景下业务软件对新单板中驱动函数的正常访问,适用于业务软件的驱动程序频繁变化等场景。
实施例四
基于上述各实施例,本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。请参考图6,其为本发明实施例所提供的单板的驱动更新装置的功能方块图。如图所示,该装置包括:
分析模块601,用于在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;
替换模块602,用于依据所述分析模块601获得的所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
优选的,所述替换模块602,具体用于:
依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板相匹配,从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
优选的,所述替换模块602,具体用于:
所述单板中从远程加载的业务软件包中的业务软件运行以及通过操作系统调用第一驱动函数时,依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板不相匹配,依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;
利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
优选的,所述分析模块601,具体用于:
依据符号表的特征信息,从所述单板中从远程加载的业务软件包中,获得所述符号表;
从所述符号表中获得所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
优选的,所述分析模块61,具体用于:
利用预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数;
依据属于同一物理器件的驱动函数具有相邻关系特征,从所述至少一个候选驱动函数中选出所述第一驱动函数;
依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
优选的,所述替换模块602用于利用所述第二驱动函数替换所述第一驱动函数时,具体用于:
依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息;
依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令;
在所述第一驱动函数的入口增加所述跳转指令。
实施例五
基于上述各实施例,本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。请参考图7,其为本发明实施例所提供的单板的驱动更新装置的结构示意图。如图所示,该装置包括:
存储器701,用于存储一组或多组程序代码;
处理器702,与存储器701耦合,用于调用存储器701中存储的程序代码,以执行以下图3所示的方法,具体包括:在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
由于本实施例中的处理器能够执行图3所示的方法,本实施例未详细描述的部分,可参考对图3的相关说明。
本发明实施例的技术方案具有以下有益效果:
1、将第二驱动包预先板载于所述单板,且从远程加载业务软件包,因此,可以实现驱动包并与单板一起发布,与业务软件包分开发布,而且单板能够自动进行驱动函数的更新,不需要将第二驱动包与业务软件包绑定发布,更新过程没有业务软件包的参与,实现单板更新与单板的业务软件包更新的分离,用于解决现有技术存在着的单板更新的工作量大,更新效率较低的问题,消除单板升级带来的业务软件包联合编译的高成本,降低单板更新的工作量,提高单板的更新效率。另外,单板能够自动进行驱动的更新,实现单板的即插即用,避免由于业务软件包的部署带来的时间损耗。
2、利用第二驱动函数的标识,实现第二驱动函数与业务软件的链接式访问,可以消除对操作系统的依赖,使得本发明实施例的能够应用于各种嵌入式系统。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1.一种单板的驱动更新方法,其特征在于,所述方法包括:
在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;
依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
2.根据权利要求1所述的方法,其特征在于,所述依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数,包括:
所述单板的基本输入输出系统BIOS依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板相匹配,所述BIOS从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
3.根据权利要求1所述的方法,其特征在于,所述依据所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数,包括:
所述单板中从远程加载的业务软件包中的业务软件运行以及通过操作系统调用第一驱动函数时,所述第二驱动包中的替换模块依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板不相匹配,所述替换模块依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;
所述替换模块利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息,包括:
依据符号表的特征信息,从所述单板中从远程加载的业务软件包中,获得所述符号表;
从所述符号表中获得所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息,包括:
利用预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数;
依据属于同一物理器件的驱动函数具有相邻关系特征,从所述至少一个候选驱动函数中选出所述第一驱动函数;
依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
6.根据权利要求2或3所述的方法,其特征在于,所述利用所述第二驱动函数替换所述第一驱动函数,包括:
依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息;
依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令;
在所述第一驱动函数的入口增加所述跳转指令。
7.一种单板的驱动更新装置,其特征在于,所述装置包括:
分析模块,用于在单板中从远程加载的业务软件包中,获得第一驱动函数的描述信息;
替换模块,用于依据所述分析模块获得的所述第一驱动函数的描述信息,将所述单板中从远程加载的业务软件包中的业务软件运行时调用的驱动函数,由所述第一驱动函数更新为预先板载于所述单板的第二驱动包中包含的第二驱动函数。
8.根据权利要求7所述的装置,其特征在于,所述替换模块,具体用于:
依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板相匹配,从预先板载于所述单板的第二驱动包中,获得所述第二驱动函数,以及利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件运行时,通过所述单板的操作系统调用所述第二驱动函数。
9.根据权利要求7所述的装置,其特征在于,所述替换模块,具体用于:
所述单板中从远程加载的业务软件包中的业务软件运行以及通过操作系统调用第一驱动函数时,依据所述第一驱动函数的描述信息,判断所述第一驱动函数与所述单板是否相匹配;
若所述第一驱动函数与所述单板不相匹配,依据所述业务软件所在物理器件的标识码,从所述第二驱动包中获得对应的第二驱动函数;
利用所述第二驱动函数替换所述第一驱动函数,以使得所述单板中从远程加载的业务软件包中的业务软件通过所述单板的操作系统调用所述第二驱动函数。
10.根据权利要求7至9中任一项所述的装置,其特征在于,所述分析模块,具体用于:
依据符号表的特征信息,从所述单板中从远程加载的业务软件包中,获得所述符号表;
从所述符号表中获得所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
11.根据权利要求7至9中任一项所述的装置,其特征在于,所述分析模块,具体用于:
利用预设的所述第一驱动函数的特殊标识,在所述业务软件包中进行匹配,以获得至少一个候选驱动函数;
依据属于同一物理器件的驱动函数具有相邻关系特征,从所述至少一个候选驱动函数中选出所述第一驱动函数;
依据所述特殊标识在第一驱动函数中的位置,获得选出的所述第一驱动函数在所述业务软件包中的起始位置;
依据所述第一驱动函数在所述业务软件包中的起始位置,获得所述第一驱动函数的描述信息。
12.根据权利要求8或9所述的装置,其特征在于,所述替换模块用于利用所述第二驱动函数替换所述第一驱动函数时,具体用于:
依据所述第二驱动函数在所述第二驱动包中的位置信息和向操作系统申请的安全存储区域的位置信息,获得所述第二驱动函数在安全存储区域的位置信息;
依据所述第二驱动函数在安全存储区域的位置信息,生成跳转指令;
在所述第一驱动函数的入口增加所述跳转指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410682564.8A CN104375866B (zh) | 2014-11-24 | 2014-11-24 | 一种单板的驱动更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410682564.8A CN104375866B (zh) | 2014-11-24 | 2014-11-24 | 一种单板的驱动更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104375866A true CN104375866A (zh) | 2015-02-25 |
CN104375866B CN104375866B (zh) | 2018-01-23 |
Family
ID=52554806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410682564.8A Active CN104375866B (zh) | 2014-11-24 | 2014-11-24 | 一种单板的驱动更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375866B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278957A (zh) * | 2015-10-08 | 2016-01-27 | 南京南瑞继保电气有限公司 | 一种软件和驱动包的版本匹配识别方法 |
CN106095687A (zh) * | 2016-06-22 | 2016-11-09 | 西安电子科技大学 | 一种LinuxPCI网卡驱动检错方法及装置 |
CN106325899A (zh) * | 2015-06-23 | 2017-01-11 | 联想(北京)有限公司 | 一种应用程序的安装方法、安装系统及电子设备 |
CN107122180A (zh) * | 2017-04-01 | 2017-09-01 | 新华三技术有限公司 | 一种支持新增硬件的方法及装置 |
WO2018001142A1 (zh) * | 2016-06-30 | 2018-01-04 | 中兴通讯股份有限公司 | 一种单板更新、管理方法及装置、存储介质 |
CN108509227A (zh) * | 2018-03-30 | 2018-09-07 | 联想(北京)有限公司 | 一种信息处理方法、电子设备及信息处理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210683A1 (en) * | 2003-04-21 | 2004-10-21 | Connor Patrick L. | Embedding driver patches |
CN1933425A (zh) * | 2006-10-10 | 2007-03-21 | 华为技术有限公司 | 实现设备访问接口的模块和方法、设备访问系统和方法 |
CN101430647A (zh) * | 2008-12-02 | 2009-05-13 | 北京中星微电子有限公司 | 一种硬件设备及其驱动安装方法 |
CN102193804A (zh) * | 2010-03-03 | 2011-09-21 | 华为技术有限公司 | 一种单板驱动的加载方法和通信设备 |
CN102629209A (zh) * | 2012-03-14 | 2012-08-08 | 华为技术有限公司 | 实现单板即插即用的方法、单板及系统 |
-
2014
- 2014-11-24 CN CN201410682564.8A patent/CN104375866B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210683A1 (en) * | 2003-04-21 | 2004-10-21 | Connor Patrick L. | Embedding driver patches |
CN1933425A (zh) * | 2006-10-10 | 2007-03-21 | 华为技术有限公司 | 实现设备访问接口的模块和方法、设备访问系统和方法 |
CN101430647A (zh) * | 2008-12-02 | 2009-05-13 | 北京中星微电子有限公司 | 一种硬件设备及其驱动安装方法 |
CN102193804A (zh) * | 2010-03-03 | 2011-09-21 | 华为技术有限公司 | 一种单板驱动的加载方法和通信设备 |
CN102629209A (zh) * | 2012-03-14 | 2012-08-08 | 华为技术有限公司 | 实现单板即插即用的方法、单板及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325899A (zh) * | 2015-06-23 | 2017-01-11 | 联想(北京)有限公司 | 一种应用程序的安装方法、安装系统及电子设备 |
CN106325899B (zh) * | 2015-06-23 | 2019-11-26 | 联想(北京)有限公司 | 一种应用程序的安装方法、安装系统及电子设备 |
CN105278957A (zh) * | 2015-10-08 | 2016-01-27 | 南京南瑞继保电气有限公司 | 一种软件和驱动包的版本匹配识别方法 |
CN105278957B (zh) * | 2015-10-08 | 2018-05-22 | 南京南瑞继保电气有限公司 | 一种软件和驱动包的版本匹配识别方法 |
CN106095687A (zh) * | 2016-06-22 | 2016-11-09 | 西安电子科技大学 | 一种LinuxPCI网卡驱动检错方法及装置 |
CN106095687B (zh) * | 2016-06-22 | 2018-06-15 | 西安电子科技大学 | 一种Linux PCI网卡驱动检错方法及装置 |
WO2018001142A1 (zh) * | 2016-06-30 | 2018-01-04 | 中兴通讯股份有限公司 | 一种单板更新、管理方法及装置、存储介质 |
CN107122180A (zh) * | 2017-04-01 | 2017-09-01 | 新华三技术有限公司 | 一种支持新增硬件的方法及装置 |
CN108509227A (zh) * | 2018-03-30 | 2018-09-07 | 联想(北京)有限公司 | 一种信息处理方法、电子设备及信息处理系统 |
CN108509227B (zh) * | 2018-03-30 | 2021-07-16 | 联想(北京)有限公司 | 一种信息处理方法、电子设备及信息处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104375866B (zh) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104375866A (zh) | 一种单板的驱动更新方法及装置 | |
CN102541572B (zh) | 一种实现操作系统内核引导的方法、系统及装置 | |
CN105045611B (zh) | 一种升级方法及装置 | |
CN102650947B (zh) | 一种Android手持设备连续增量的空中升级方法 | |
CN102073512B (zh) | 一种java集群应用系统代码装载及升级装置和方法 | |
US20160117115A1 (en) | Disk partition stitching and rebalancing using a partition table | |
CN103186404B (zh) | 系统固件更新方法与使用该方法的服务器系统 | |
CN105912362B (zh) | 一种加载插件的方法、装置及电子设备 | |
CN103853586A (zh) | 一种在uefi层实现无线网卡驱动的方法 | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN103777981A (zh) | 一种适用于x86架构的多操作系统远程加载实现方法 | |
CN105391985A (zh) | 一种基于嵌入式Linux的视频监控系统与方法 | |
CN102609467A (zh) | 数据库连接管理方法和装置 | |
CN105824678A (zh) | 一种操作系统安装方法及装置 | |
CN102541595A (zh) | 智能设备的升级方法、装置及智能设备 | |
CN103559065A (zh) | 一种ota升级的方法和系统 | |
CN109947450B (zh) | 系统文件升级方法、装置、移动终端及可读存储介质 | |
CN102073519A (zh) | 一种软件更新方法 | |
CN108920934B (zh) | Mac系统中大容量存储设备的驱动方法、装置及设备 | |
CN107770299A (zh) | 一种mac地址刷写方法、系统、装置及存储介质 | |
CN103392174B (zh) | 基于闪存存储的系统、分区方法和装置 | |
CN109710297B (zh) | 一种设备整体或分模块进行升级和回退方法 | |
CN101650661A (zh) | 便携式终端、便携式终端控制方法和便携式终端控制程序 | |
CN103092648A (zh) | 一种镜像升级方法、系统及用户设备和个人计算机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200417 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310052, Binjiang District, Zhejiang, Hangzhou Patentee before: Huawei Technologies Co.,Ltd. |
|
TR01 | Transfer of patent right |