CN103488513B - 设备即插即用通用驱动方法 - Google Patents
设备即插即用通用驱动方法 Download PDFInfo
- Publication number
- CN103488513B CN103488513B CN201310462409.0A CN201310462409A CN103488513B CN 103488513 B CN103488513 B CN 103488513B CN 201310462409 A CN201310462409 A CN 201310462409A CN 103488513 B CN103488513 B CN 103488513B
- Authority
- CN
- China
- Prior art keywords
- equipment
- plug
- driver
- play
- function
- 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.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种设备即插即用通用驱动方法,包括建立驱动框架以及开发阶段和运行阶段的即插即用机制,开发阶段的即插即用机制用于集成各种不同设备的驱动程序,运行阶段的即插即用机制用于在系统程序已经运行的情况下,插上新设备就能匹配到对应的驱动程序,实现设备的自动加载,本发明在开发阶段仅需进行少量人工配置信息即可自动生成设备驱动及设备测试程序,在减少了开发人员的工作量的同时,也保证了设备驱动和设备硬件的健壮性;在使用阶段实现了零配置实现即插即用,用户插上设备就能在本地主机或者服务器上获取设备驱动,若没有相应驱动,仅需提供开发人员给的设备描述信息即可自动生成设备驱动。
Description
技术领域
本发明属于设备集成自动化技术领域,应用于设备具有多样性,异构性的场景,具体涉及一种设备即插即用通用驱动方法。
背景技术
在当今硬件设备不断发展的背景下,越来越多的不同种类的设备需要被集成到一台计算机上,尤其是诸多系统集成应用,通常要集成多种设备到一台主机,或各种外围设备变换的情况下都要求应用程序无需额外配置正常使用。
在开发阶段,开发过程中的即插即用机制,即集成开发这些新设备是非常耗时耗力的,主要原因在于,现存的开发方式要求开发者花费很多精力在解读设备协议,编码驱动,检测与调试设备驱动上。而完成了驱动程序之后,如何检测驱动与硬件本身对于开发人员也是一个问题,通常,开发人员需要自己编写测试程序区测试。
在运行阶段,使用过程中的即插即用机制,即设备的自动加载也是一个很重要的方面。主要原因在于,对于一台新的主机与新的设备,主机如何能自动识别新设备,并且能获取相应的驱动程序,使得设备能自动加载是一个问题。
目前对于设备的开发方面的不足可以归纳如下:
1)无法实现不同种类设备的即插即用的机制
2)驱动开发周期长,效率低
3)无法保证设备驱动与设备硬件的健壮性
针对以上问题,如何改进现有的驱动方法,实现各种设备在不同阶段的即插即用机制,使得开发人员在开发阶段能更加方便快捷的开发一个新设备,既能提高效率,又能保证驱动与设备硬件的健壮性,还能使用户在使用阶段随时使用插上的新设备,是一个亟待解决的问题。因此,提出一个设备即插即用通用驱动方法,用于实现设备的即插即用机制,在系统开发时集成设备,以及在设备运行维护时动态加载驱动是非常必要的。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种设备即插即用通用驱动方法,使其能够以低成本、高效率的方式去开发一个设备,弥补目前开发驱动过程中繁琐复杂的缺陷,解决目前设备使用过程中无法自动加载的问题,实现设备不同阶段的即插即用机制,达到降低开发成本、加快开发过程、方便使用的目的。
为了实现上述目的,本发明采用的技术方案是:
一种设备即插即用通用驱动方法,包括建立驱动框架以及开发阶段和运行阶段的即插即用机制,其中,
所述驱动框架包括驱动方法定义、驱动自动生成方法、驱动和设备测试方法以及设备加载方法;
所述开发阶段的即插即用机制建立过程如下:
a,根据驱动框架要求提交设备的描述信息;
b,驱动框架根据设备描述信息生成设备驱动以及相应的测试程序,并检测驱动以及设备硬件;
c,若设备及驱动通过测试,则接受该设备以及驱动,将设备驱动放入指定地点,使用动态映射机制实现设备的动态加载,完成开发阶段的集成开发,实现即插即用机制;
所述运行阶段的即插即用机制建立过程如下:
a,对于新主机与新设备,当设备被添加到主机上时,主机自动获取设备描述信息与本地已有的设备信息进行匹配;
b,若匹配成功,则表示主机已有该设备驱动,直接调用该驱动程序实现即插即用机制;
c,若匹配不上,则表示主机没有该设备驱动,需从服务器段获取设备驱动;
d,若服务器端有对应的设备驱动程序,则下载到本地;
f,若服务器端没有对应的设备驱动程序,服务器或者本地主机则根据设备描述信息和驱动框架自动产生相应的驱动程序,并在获取设备驱动之后,将其放入指定地点,使用所述动态映射机制去实现设备的动态加载,完成使用阶段的设备自动加载,实现即插即用机制。
上述开发阶段的即插即用机制用于集成各种不同设备的驱动程序,运行阶段的即插即用机制用于在系统程序已经运行的情况下,插上新设备就能匹配到对应的驱动程序,实现设备的自动加载,而驱动框架的提出是为了服务于即插即用机制的实施。
所述驱动方法定义中,将各个驱动程序进行模块化编写,将设备本身的每一项功能对应于驱动中的一个函数,同时驱动程序中还包含对收到数据进行解析的函数,通过调用驱动程序中的函数即可实现设备的相应功能。
所述驱动自动生成方法实现步骤如下:
a,根据设备描述信息判定设备所用设备通信协议;
b,根据设备通信协议确定设备与主机建立连接的具体方法;
c,根据设备描述信息中的每一个功能,对应与设备驱动中的一个函数,该函数发送相应指令给设备;
d,设备驱动中还应包括对收到数据进行解析的函数,解析方法从设备描述信息中获取;
e,根据设备通信协议断开连接,完成驱动函数。
在根据设备的描述信息生成驱动程序的同时,根据如下方法自动生成一个设备模拟器程序,便于测试中使用:
a,根据设备描述信息判定设备所用通信协议;
b,根据设备通信协议确定设备与主机建立连接的具体方法;
c,根据设备描述信息确定设备模拟器收到不同指令后应该返回的对应数据,这里应当考虑到数据边界;
d,根据设备通信协议断开连接,完成设备模拟程序。
所述设备的描述信息为两个配置文件,devSpec.xml和devAPI.xml,devSpec.xml包含设备的具体功能函数信息以及解析数据的方法,devAPI.xml包含设备设备驱动程序可被外部程序调用的所有接口,即devSpec.xml中描述的所有函数。
在开发阶段检测驱动以及设备硬件的方法是:驱动框架根据设备描述信息生成设备驱动以及相应的测试程序后,通过轮询方式得到端口号,然后对设备驱动进行单元测试,并对设备硬件进行可用性测试。在驱动程序根据设备描述信息生成的同时,一个设备模拟器程序也会同时自动生成,便于测试中使用。
为了实现即插即用功能,设备的端口号是必要的。设备即插即用通用驱动方法采用了自动搜寻端口号的方式去定位设备,方法如下:
1)获取当前主机的所有该设备类型的端口号
2)对所有该设备类型的端口号顺序的发出该设备的识别指令
3)匹配返回数据与devSpec.xml中描述的ACK(设备收到指令后应该返回的数据),若匹配上则确认该设备的端口号,否则转向下一端口。若所有端口都匹配不上,则该设备不存在与此主机上。
对于一些没有识别指令的设备,可以在该设备的所有指令中选择一个类似的指令,使用该指令为识别指令。
所述驱动和设备测试方法包括单元测试与可用性测试,所述单元测试为对设备的软件测试,即设备驱动的测试,利用一个遵从规范的设备驱动与设备模拟器程序,从devAPI.xml中读取所有需要被测试的接口,从devSpec.xml中读取相应的具体信息,通过与模拟器的交互检验设备驱动的正确性;对于通过单元测试的设备,需要进行可用性测试去检测设备的硬件,所述可用性测试为设备的硬件测试,即设备本身的测试,可用性测试分为功能测试与压力测试;功能测试用来检测设备能够提供驱动中实现的所有功能,压力测试检验设备硬件在长时间的运行状态下能否正常工作。
功能测试的程序与单元测试的程序是一样的,唯一的差别是用真实的设备去代替了设备模拟器程序。通过调用devAPI.xml中的所有接口去测试硬件设备功能。
压力测试与功能测试的程序也几乎是一样的,只不过增加了长时间运行的要求,故通过少量的源代码修改,使得功能测试程序循环运行即可实现在长时间运行状态下检测硬件是否正常工作。
所述设备加载方法为程序加载设备时使用动态映射机制去加载设备,获取端口号之后,把通过测试的驱动程序放入指定路径下即可实现设备的自动加载。
所述动态映射机制包括但不局限于java,c#的反射机制等,所述设备的描述信息包括设备ID以及设备描述文件。
与现有技术相比,本发明两种不同阶段的即插即用机制,在开发阶段仅需进行少量人工配置信息即可自动生成设备驱动及设备测试程序,在减少了开发人员的工作量的同时,也保证了设备驱动和设备硬件的健壮性;在使用阶段实现了零配置实现即插即用,用户插上设备就能在本地主机或者服务器上获取设备驱动,若没有相应驱动,仅需提供开发人员给的设备描述信息即可自动生成设备驱动。
附图说明
图1是本发明驱动规范的结构图。
图2是本发明的开发流程图。
图3是本发明的使用流程图。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
以串口设备血压计为例说明即插即用机制的实现过程。
开发阶段:
1、设备描述信息
血压计设备提供3项功能,显示如下:
功能名 | 指令(十六进制) | ACK(十六进制) | 波特率 |
开始测量 | 16160130300253540307 | 161601303006 | 9600 |
停止测量 | 16160130300253500303 | 161601303006 | 9600 |
要求发送血压值 | 16160130300252420310 | 161601303006 | 9600 |
根据说明书,血压计收到开始测量指令之后,首先返回一个ACK,即161601303006H,之后会返回测量所得的信息,该信息有64字节,其中收缩压数据在34字节到36字节处,舒张压数据在45字节到47字节处,脉压在50字节到52字节处。
血压计在收到停止测量请求后,会返回一个ACK。
血压计在收到发送血压值的请求后,发送数据同收到开始测量指令之后返回的数据。
根据说明书,模拟一个64字节数据,显示如下:
“161601303002544D323635351E323330393134313433371E52421E521E4530301E533130321E4D2036381E442035341E502035331E4931381E4C3131321E0326”,其中收缩压为102,舒张压为54,脉压为53.
根据以上信息,血压计的设备描述信息如下:
devSpec.xml内容如下:
devAPI.xml内容如下:
<BPvalue=”start_stop_getBP_result”/>
2、设备驱动
根据以上设备描述信息,设备驱动实现所有函数如下:
函数名 | 功能描述 |
initiate() | 初始化串口操作 |
receive() | 监听串口,接收串口数据 |
start() | 发送开始测量指令 |
stop() | 发送停止测量指令 |
getBP() | 发送要求得到血压值指令 |
result() | 解析得到的数据,得到其中的舒张压,收缩压和脉压信息 |
至此,设备驱动完成。
3、设备模拟器
设备模拟器根据devSpec.xml中的simulator项得到,首先模拟一个串口,建立串口连接,实现一个函数,该函数根据收到指令的不同返回不同的数据。
4、获取端口号
1)使用轮询方式获取端口号:
2)获取当前主机上所有串口类型端口号;
3)向所有串口发出顺序的发出血压计的识别指令;
4)匹配返回数据与ACK,匹配上则确认血压计的端口号,否则转向下一
端口。若所有端口都匹配不上,则血压计不存在与此主机上。对于血压计,因为没有单独的识别指令,可以使用开始测量指令代替识别指令。
5、设备驱动以及设备硬件测试
单元测试:
根据devAPI.xml中的接口,连接设备模拟器与驱动程序,调用所有接口,测试返回数据是否与ACK相同,特别的,解析数据函数getBP则测试解析出的结果是否同devSpec.xml中模拟器的预期一致。
功能测试:
同单元测试,只是把设备模拟器替换成真实的设备,验证设备功能的完备性。
压力测试:
在一段较长的时间内循环执行功能测试,验证设备在长时间的工作下的健壮性。
6、自动加载
将通过测试的设备驱动放入指定地点,通过动态映射机制去调用驱动,动态的加载设备,实现开发阶段的即插即用机制。
使用阶段:
1、用户得到一个新的血压计以及血压计的描述信息(同开发阶段的描述信息),主机根据描述信息,在本地根据描述信息匹配驱动程序。
2、若本地有血压计的驱动程序,则用动态映射机制加载设备,实现即插即用机制。
3、若本地没有设备驱动程序,则去服务器端根据设备描述信息搜寻驱动程序。
4、若服务器端有设备驱动程序,则下载到本地,用动态映射机制加载设备,实现即插即用机制。
5、若服务器端没有设备驱动程序,则在服务器端或者本地主机根据开发阶段的过程自动产生驱动,使用动态映射机制加载设备,实现即插即用机制。
Claims (7)
1.一种设备即插即用通用驱动方法,包括建立驱动框架以及开发阶段和运行阶段的即插即用机制,其特征在于,
所述驱动框架包括驱动方法定义、驱动自动生成方法、驱动和设备测试方法以及设备加载方法;
所述开发阶段的即插即用机制建立过程如下:
a,根据驱动框架要求提交设备的描述信息;
b,驱动框架根据设备描述信息生成设备驱动以及相应的测试程序,并检测驱动以及设备硬件;
c,若设备及驱动通过测试,则接受该设备以及驱动,将设备驱动放入指定地点,使用动态映射机制实现设备的动态加载,完成开发阶段的集成开发,实现即插即用机制;
所述运行阶段的即插即用机制建立过程如下:
a,对于新主机与新设备,当设备被添加到主机上时,主机自动获取设备描述信息与本地已有的设备信息进行匹配;
b,若匹配成功,则表示主机已有该设备驱动,直接调用该驱动程序实现即插即用机制;
c,若匹配不上,则表示主机没有该设备驱动,需从服务器端获取设备驱动;
d,若服务器端有对应的设备驱动程序,则下载到本地;
f,若服务器端没有对应的设备驱动程序,服务器或者本地主机则根据设备描述信息和驱动框架自动产生相应的驱动程序,并在获取设备驱动之后,将其放入指定地点,使用所述动态映射机制去实现设备的动态加载,完成使用阶段的设备自动加载,实现即插即用机制。
2.根据权利要求1所述的设备即插即用通用驱动方法,其特征在于,所述驱动方法定义中,将各个驱动程序进行模块化编写,将设备本身的每一项功能对应于驱动中的一个函数,同时驱动程序中还包含对收到数据进行解析的函数,通过调用驱动程序中的函数即可实现设备的相应功能。
3.根据权利要求1所述的设备即插即用通用驱动方法,其特征在于,所述驱动自动生成方法实现步骤如下:
a,根据设备描述信息判定设备所用设备通信协议;
b,根据设备通信协议确定设备与主机建立连接的具体方法;
c,根据设备描述信息中的每一个功能,对应与设备驱动中的一个函数,该函数发送相应指令给设备;
d,设备驱动中还应包括对收到数据进行解析的函数,解析方法从设备描述信息中获取;
e,根据设备通信协议断开连接,完成驱动函数。
4.根据权利要求3所述的设备即插即用通用驱动方法,其特征在于,在根据设备的描述信息生成驱动程序的同时,根据如下方法自动生成一个设备模拟器程序,便于测试中使用:
a,根据设备描述信息判定设备所用通信协议;
b,根据设备通信协议确定设备与主机建立连接的具体方法;
c,根据设备描述信息确定设备模拟器收到不同指令后应该返回的对应数据,这里应当考虑到数据边界;
d,根据设备通信协议断开连接,完成设备模拟程序。
5.根据权利要求3所述的设备即插即用通用驱动方法,其特征在于,所述设备的描述信息为两个配置文件,devSpec.xml和devAPI.xml,devSpec.xml包含设备的具体功能函数信息以及解析数据的方法,devAPI.xml包含设备驱动程序可被外部程序调用的所有接口,即devSpec.xml中描述的所有函数。
6.根据权利要求5所述的设备即插即用通用驱动方法,其特征在于,所述驱动和设备测试方法包括单元测试与可用性测试,所述单元测试为对设备的软件测试,即设备驱动的测试,利用一个遵从规范的设备驱动与设备模拟器程序,从devAPI.xml中读取所有需要被测试的接口,从devSpec.xml中读取相应的具体信息,通过与模拟器的交互检验设备驱动的正确性;对于通过单元测试的设备,需要进行可用性测试去检测设备的硬件,所述可用性测试为设备的硬件测试,即设备本身的测试,可用性测试分为功能测试与压力测试;功能测试用来检测设备能够提供驱动中实现的所有功能,压力测试检验设备硬件在长时间的运行状态下能否正常工作。
7.根据权利要求1所述的设备即插即用通用驱动方法,其特征在于,所述动态映射机制为java或者c#的反射机制,所述设备的描述信息包括设备ID以及设备描述文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310462409.0A CN103488513B (zh) | 2013-09-30 | 2013-09-30 | 设备即插即用通用驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310462409.0A CN103488513B (zh) | 2013-09-30 | 2013-09-30 | 设备即插即用通用驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488513A CN103488513A (zh) | 2014-01-01 |
CN103488513B true CN103488513B (zh) | 2016-04-13 |
Family
ID=49828770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310462409.0A Expired - Fee Related CN103488513B (zh) | 2013-09-30 | 2013-09-30 | 设备即插即用通用驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488513B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104898525A (zh) * | 2015-06-14 | 2015-09-09 | 上海北工光翔电气科技有限公司 | 一种数据采集装置、数据采集系统以及数据采集方法 |
CN105045616B (zh) * | 2015-07-03 | 2018-02-23 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105336034A (zh) * | 2015-10-15 | 2016-02-17 | 浪潮软件集团有限公司 | 一种办税服务厅多功能评价器优化方法 |
CN109144592B (zh) * | 2018-09-10 | 2022-03-22 | 郑州云海信息技术有限公司 | 一种基于port模式的驱动业务执行系统及方法 |
CN109634878A (zh) * | 2018-12-07 | 2019-04-16 | 用友网络科技股份有限公司 | 监控方法、监控装置、服务器、终端和可读存储介质 |
CN113254035A (zh) * | 2021-06-29 | 2021-08-13 | 武汉深之度科技有限公司 | 一种驱动程序安装方法、计算设备及存储介质 |
CN115202763B (zh) * | 2022-09-19 | 2022-12-09 | 大方智造(天津)科技有限公司 | 一种基于驱动的采集动态加载与调用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1764689A2 (en) * | 2005-09-01 | 2007-03-21 | Canon Kabushiki Kaisha | Program and method for managing device drivers |
CN101320333A (zh) * | 2008-07-11 | 2008-12-10 | 北京信城通数码科技有限公司 | 对多种通用串行总线设备驱动的方法 |
CN101382900A (zh) * | 2008-09-26 | 2009-03-11 | 浪潮电子信息产业股份有限公司 | 一种硬件设备与驱动自动匹配的方法 |
CN101520756A (zh) * | 2009-04-07 | 2009-09-02 | 深圳华为通信技术有限公司 | 设备驱动方法、装置及通信系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2902254B1 (fr) * | 2006-06-09 | 2008-09-26 | Dibcom Sa | Pilotage d'un dispositif multifonctions |
-
2013
- 2013-09-30 CN CN201310462409.0A patent/CN103488513B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1764689A2 (en) * | 2005-09-01 | 2007-03-21 | Canon Kabushiki Kaisha | Program and method for managing device drivers |
CN101320333A (zh) * | 2008-07-11 | 2008-12-10 | 北京信城通数码科技有限公司 | 对多种通用串行总线设备驱动的方法 |
CN101382900A (zh) * | 2008-09-26 | 2009-03-11 | 浪潮电子信息产业股份有限公司 | 一种硬件设备与驱动自动匹配的方法 |
CN101520756A (zh) * | 2009-04-07 | 2009-09-02 | 深圳华为通信技术有限公司 | 设备驱动方法、装置及通信系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103488513A (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488513B (zh) | 设备即插即用通用驱动方法 | |
US7657789B1 (en) | Multi-machine testing system and method for testing software | |
CN110865971A (zh) | Soc芯片的验证系统及其方法 | |
CN105117233A (zh) | Api调用方法及装置 | |
CN105338110A (zh) | 远程调试方法和平台、服务器 | |
WO2012022065A1 (zh) | 实现数字信号处理器自动测试的方法及系统 | |
CN109783340B (zh) | SoC的测试代码烧写方法、IP测试方法及装置 | |
CN113672441B (zh) | 对智能设备的测试方法及装置 | |
CN103544100A (zh) | 便携数据处理设备应用程序的测试方法、系统和客户端 | |
CN108111364B (zh) | 一种业务系统的测试方法及装置 | |
CN115952758B (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN104468260A (zh) | 一种移动终端设备的识别方法、装置及系统 | |
CN114444420A (zh) | 一种基于芯片验证的验证ip集成方法及系统 | |
CN102447732A (zh) | 一种在bmc开发中智能配置宿主机嵌入式环境的方法 | |
CN104503898A (zh) | 一种嵌入式软件调试参数实时查看的方法及系统 | |
CN110941520B (zh) | 基于二取二安全控制单元的硬件功能测试系统及方法 | |
CN112181822A (zh) | 一种测试方法和应用程序的启动耗时测试方法 | |
CN115712559A (zh) | 测试硬件管理软件的方法、装置及电子设备 | |
CN106293687A (zh) | 一种打包流程的控制方法,及装置 | |
US10866922B1 (en) | Firmware debug trace capture using serial peripheral interface | |
CN116560931A (zh) | 一种芯片验证平台和方法、电子设备、存储介质 | |
CN112256252A (zh) | 接口生成方法、装置、存储介质及电子设备 | |
CN109558324A (zh) | 一种检测方法及设备 | |
CN112000579B (zh) | 一种软件接口测试方法、系统、设备及介质 | |
CN112256554B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160413 Termination date: 20190930 |