CN102385557B - 驱动处理方法及装置 - Google Patents

驱动处理方法及装置 Download PDF

Info

Publication number
CN102385557B
CN102385557B CN201110234870.1A CN201110234870A CN102385557B CN 102385557 B CN102385557 B CN 102385557B CN 201110234870 A CN201110234870 A CN 201110234870A CN 102385557 B CN102385557 B CN 102385557B
Authority
CN
China
Prior art keywords
message
network
interface
driven
process module
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.)
Active
Application number
CN201110234870.1A
Other languages
English (en)
Other versions
CN102385557A (zh
Inventor
李焰峰
范锁平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201110234870.1A priority Critical patent/CN102385557B/zh
Priority to PCT/CN2011/082364 priority patent/WO2012151908A1/zh
Publication of CN102385557A publication Critical patent/CN102385557A/zh
Application granted granted Critical
Publication of CN102385557B publication Critical patent/CN102385557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport

Abstract

本发明公开了一种驱动处理方法及装置,该方法包括:接收消息,并判断消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,网络驱动用于提供对设备的直接驱动;在判断结果为否的情况下,将消息发送给预先在网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将消息发送给原有的协议处理模块进行处理。通过本发明可以使在某种操作系统上的特定的协议比较容易移植到其他系统上来,使操作系统有了较大的扩展性。

Description

驱动处理方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种驱动处理方法及装置。
背景技术
基于全球无线芯片的格局,高通和微软主推的网络驱动接口规范(networkdriver interface spec,简称为NDIS)+高通MSM接口(Qualcomm MSM Interface,简称为QMI)的移动宽带设备高速接入方案成为当下移动宽带设备的主流接入方式之一;但NDIS+QMI的方式目前只在windows系统上得到了应用,这种接入方式并没有扩展到更多操作系统上。对于其他的接入方式也可能存在两样的问题,即只能在某种操作系统使用。
对于其他操作系统而言(例如,安卓Android移动操作系统),应用也在不断的推广,因此在这些系统上适配各种移动宽带设备成为目前的主要工作之一;而目前对只能在某种特定系统上应用的驱动而言,很难照搬到其他操作系统上来,例如,应用于Windows系统上的NDIS驱动是Windows定义的一套规范,很难照搬或者移植到Android操作系统上,因此在Android系统上无法支持NDIS设备接入的驱动。
在现有技术中存在对于在某种操作系统上特定的协议无法移植到其他操作系统上的问题,目前还没有解决方案。
发明内容
本发明的主要目的在于提供一种驱动处理方法及装置,以至少解决上述问题。
根据本发明的一方面,提供了一种驱动处理方法,包括以下步骤:接收消息,并判断所述消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,所述网络驱动用于提供对设备的直接驱动;在判断结果为否的情况下,将所述消息发送给预先在所述网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将所述消息发送给所述原有的协议处理模块进行处理。
优选地,所述增加的协议处理模块提供以下接口的至少之一用于支持所述网络驱动:初始化接口、读接口、写接口、输入/输出控制接口。
优选地,所述增加的协议处理模块通过所述读接口进行的读操作包括:检测到读操作的消息后,将所述读操作的消息放入读队列中;在接收到唤醒消息之后,调用所述读接口进行所述读操作。
优选地,所述增加的协议处理模块通过所述写接口进行的写操作包括:所述增加的协议处理模块的所述写接口将所述消息以所述网络驱动所支持的格式发送给所述设备。
优选地,所述网络驱动包括:USB设备类通讯-以太网控制模式CDC-ECM。
优选地,所述增加的协议处理模块所处理的协议包括:NDIS和/或QMI。
根据本发明的另一方面,提供了一种驱动处理装置,包括:判断模块,用于接收消息,并判断所述消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,所述网络驱动用于提供对设备的直接驱动;处理模块,用于在判断结果为否的情况下,将所述消息发送给预先在所述网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将所述消息发送给所述原有的协议处理模块进行处理。
优选地,所述增加的协议处理模块提供以下接口的至少之一用于支持所述网络驱动:初始化接口、读接口、写接口、输入/输出控制接口。
优选地,所述网络驱动包括:USB CDC-ECM。
优选地,所述增加的协议处理模块所处理的协议包括:NDIS和/或QMI。
通过本发明,采用接收消息,并判断所述消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,所述网络驱动用于提供对设备的直接驱动;在判断结果为否的情况下,将所述消息发送给预先在所述网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将所述消息发送给所述原有的协议处理模块进行处理,解决了现有技术中存在对于在某种操作系统上特定的协议无法移植到其他操作系统上问题,可以使在某种操作系统上的特定的协议比较容易移植到其他系统上来,使操作系统有了较大的扩展性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的驱动处理方法的流程图;
图2是根据本发明实施例的驱动处理装置的结构框图;
图3是与本发明实施例相关的Android系统的USB以太网驱动的示意图;
图4是根据本发明优选实施例的Android系统NDIS驱动方法的示意图;
图5是根据本发明实施例的写操作的流程图;
图6是根据本发明实施例的读操作的流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种驱动处理方法,图1是根据本发明实施例的驱动处理方法的流程图,如图1所示,该方法包括以下步骤:
步骤S102,接收消息,并判断该消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,该网络驱动用于提供对设备的直接驱动;
步骤S104,在判断结果为否的情况下,将该消息发送给预先在该网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将该消息发送给原有的协议处理模块进行处理。
通过上述步骤,基于操作系统中原有的网络驱动,仅仅添加了对其他协议支持的模块,而是开发者仅仅关注与协议模块的开发即可,对于网络驱动的处理,则交由该操作系统的原有的网络驱动来进行,对于原有的网络驱动仅仅添加判断的功能皆可,不需要进行大量的改动,对该网络驱动的原有功能并没有带来任何影响,即实现了兼容,又可以是对其他协议的支持很方便的进行移植,从而是本实施例中的驱动处理方式有很好的扩展性。
优选地,可以根据增加的协议处理模块的需要选择提供以下接口的至少之一以支持网络驱动:初始化接口、读接口、写接口、输入/输出控制接口。
在一个优选实施方式中,对于读操作提供了一种较优的处理方式:检测到读操作的消息后,将读操作的消息放入读队列中;在接收到唤醒消息之后,调用读接口进行读操作。
在另一个较优的处理方式,对于写操作也提供了一种较优的处理方式:增加的协议处理模块的写接口将消息以网络驱动所支持的格式发送给设备。
在本实施例中还提供了一种驱动处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图2是根据本发明实施例的驱动处理装置的结构框图,如图2所示,该装置包括判断模块22和处理模块24,下面对该装置涉及的模块进行说明。
判断模块22,用于接收消息,并判断该消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,该网络驱动用于提供对设备的直接驱动;处理模块24,用于在判断结果为否的情况下,将该消息发送给预先在网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将该消息发送给原有的协议处理模块进行处理。
对于网络驱动而言可以使用USB CDC-ECM(Class Definitions forCommunication Devices-Ethernet Control Model),例如在安卓系统中就采用的这种方式,在本实施例中,可以移植的协议包括:NDIS和/或QMI,但并不限于此,以下以此为例结合一个优选实施方式进行说明。
图3是与本发明实施例相关的Android系统的USB以太网驱动的示意图,如图3所示,USB CDC ECM驱动模型现有驱动方式通过在Android系统上枚举出以USB以太网口,使用USB CDC ECM驱动模型所定义的控制协议作为请求,这种方式是无法支持现有的NDIS设备的,更无法在此驱动方式上实现对QMI协议的支持。USB CDC ECM驱动模型是USB CDC协议的一部分,属于标准的USB协议,而目前的NDIS设备并不完全遵守标准的USB协议,它使用了windows系统的NDIS规范,并使用高通自定义的QMI协议做为主机与设备通讯的控制协议,而非USB CDC ECM驱动模型所定义的控制协议。
本优选实施例中提供了一种Android系统上的驱动方法,用于实现Android系统上高速移动宽带设备的驱动和数据接入。
现有的Android系统上已经提供了USB CDC-ECM的驱动,本优选实施例在此驱动的基础上,实现NDIS设备的驱动支持,则既解决了目前Android系统无法支持NDIS设备的接入难题,又为后续Android系统支持NDIS设备打下了坚实的基础。
图4是根据本发明优选实施例的Android系统NDIS驱动方法的示意图,如图4所示,使用了在现有的USB CDC ECM驱动的基础上增加了CDC_ENCAP模块,并修改了CDC_ECM模块,其中,增加了CDC_ENCAP模块,用于对自有协议的支持,提供自定义的读,写、输入/输出(input/output,简称为I/O)控制等接口;修改了CDC_ECM模块,用于对设备接入的探测、状态检测、CDC_ENCAP模块初始化等。下面对CDC_ECM模块和CDC_ENCAP模块进行说明。
CDC_ECM模块201:修改了CDC_ECM模块,用于对设备的直接驱动;在本模块中,扩展了现有的驱动中对USB CDC ECM协议的支持,增添了CDC状态检测中对通知消息RESPONSE_AVAILABLE的支持(参考《usb cdc1.2》之3.8.2节,在此不再赘述),使得来自移动宽带设备侧的自定义协议(如QMI协议)消息都可以得到处理;其次在设备探测阶段(probe),通过调用cdc_encap_init接口,实现对自定义协议处理函数,互斥量、消息队列的初始化,从而使得对自定义协议处理的流程可以转动CDC_ENCAP模块进行处理。
CDC_ENCAP模块202:增加了CDC_ENCAP模块,用于封装对自有协议的支持;在本模块中,通过定义了cdc_encap_init,cdc_encap_read,cdc_encap_write,cdc_encap_ioctl这样的文件接口,提供对CDC_ECM模块的支持;其中cdc_encap_init接口实现对自定义协议处理函数,互斥量、消息队列的初始化,并通过对linux系统文件接口结构体file_operations的初始化完成了本驱动接口函数的注册;cdc_encap_read接口通过对USB控制消息的形式读取移动终端侧自定义协议的响应消息;cdc_encap_write接口通过USB控制消息的形式将封装好的自定义协议消息发送到移动宽带设备侧;cdc_encap_ioctl接口提供了其他I/O类操作的支持。
USB NET模块203和USB CORE模块204与现有的模块的功能相似,在此不再赘述。下面结合上述模块,对读写操作进行说明。
图5是根据本发明实施例的写操作的流程图,如图5所示,该流程包括如下步骤:
步骤S501,用户态程序调用写操作。
步骤S502,驱动根据不同的消息类型,调用不同的处理流程;如果是是USB CDCECM消息,转往步骤S503;否则,转往步骤S504;
步骤S503,如果是是USB CDC ECM消息、安装现有驱动的处理流程处理,转往步骤S506;
步骤S504,如果不是USB CDC ECM消息,进入本报发明驱动的写操作处理流程,转往步骤S505;
步骤S505,将上层的写数据,通过调用USB CORE的接口进行处理;
步骤S506,负责具体的USB数据写操作;
步骤S507,判断数据是否写成功,成功则转往步骤S508,否则转往步骤S509;
步骤S508,数据写成功,返回成功;
步骤S509,数据写失败,进入异常处理;
图6是根据本发明实施例的读操作的流程图,如图6所示,该流程包括如下步骤:
步骤S601,驱动初始化,初始化读队列,启动消息检测机制;
步骤S602,检测CDC的状态消息,判断消息类型,如果是CONNECTION消息,进入步骤S607,SPEED CHANGE消息进入步骤S608,RESPONSE消息进入步骤S609;
步骤S603,用户态程序调用读操作。
步骤S604,进行用户态到和核心态的转换后,进入CDC_ENCAP模块;
步骤S605,CDC_ENCAP模块搜到读操作的消息后,将该消息放进读队列中;
步骤S606,读队列中的消息等待被唤醒;
步骤S607,解析收到的CONNECTION消息,检测有效性后,按照原有的处理流程,转往步骤S615;
步骤S608,解析收到的SPEED CHANGE消息,检测有效性后,按照原有的处理流程,转往步骤S615;
步骤S609,解析收到的SPEED CHANGE消息,检测有效性后,唤醒CDC_ENCAP模块中的读消息队列;
步骤S610,判断读队列中的消息是否被唤醒,唤醒转往步骤S611,否则转往步骤S606;
步骤S611,读队列被唤醒后,判断队列中是否有消息,有的转往步骤S612,否则转往步骤S616,进行异常处理;
步骤S612,通过接口CDC_ENCAP_READ进行读处理;
步骤S613,判断读处理是否成功,成功则转往步骤S613处理,否则转往步骤S616,进行异常处理;
步骤S614,返回读操作获取到的数据;
步骤S615,现有驱动已实现的消息处理流程;
步骤S616,异常处理。
通过上述实施例实现了如下效果,需要说明的是,以下的效果并不是每个实施均能达到的,有些效果是有些优选实施例才具有的。
1.扩展了现有的CDC ECM驱动,使得现有CDC ECM驱动既能支持原有的USB CDCECM设备,又能支持新的NDIS设备,既兼容了原有的设备驱动,又使得一些操作系统(例如,Android系统)增加了对NDIS设备的支持、现有的NDIS设备不需要做任何的修改即可适配到Android系统使用,解决了某些操作系统无法支持NDIS设备和现有驱动无法有效提高与移动宽带设备之间传输速度的问题。
2.通用性:NDIS设备无疑会是后续移动宽带设备主流的接入方式之一,因此在不支持该协议的操作系统上设计和实现对NDIS设备的支持,极大了符合了后续多制式设备的接入方式和技术的发展趋势,扩展了操作系统的功能和接入方式的通用性。
3.扩展性:上述优选实施例的方案是将NDIS设备的接入方式融入到操作系统现有的驱动中,兼容了原有的设备驱动,没有修改操作系统框架层的架构,增加了操作系统对移动宽带设备的接入方式,增加了操作系统的扩展性;同时增添了对自定义协议(如高通的QMI协议)的支持,使得上述优选实施例中的驱动方法有更大的扩展性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种驱动处理方法,其特征在于,包括以下步骤:
接收消息,并判断所述消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,所述网络驱动用于提供对设备的直接驱动;
在判断结果为否的情况下,将所述消息发送给预先在所述网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将所述消息发送给所述原有的协议处理模块进行处理。
2.根据权利要求1所述的方法,其特征在于,所述增加的协议处理模块提供以下接口的至少之一用于支持所述网络驱动:
初始化接口、读接口、写接口、输入/输出控制接口。
3.根据权利要求2所述的方法,其特征在于,所述增加的协议处理模块通过所述读接口进行的读操作包括:
检测到读操作的消息后,将所述读操作的消息放入读队列中;
在接收到唤醒消息之后,调用所述读接口进行所述读操作。
4.根据权利要求2所述的方法,其特征在于,所述增加的协议处理模块通过所述写接口进行的写操作包括:
所述增加的协议处理模块的所述写接口将所述消息以所述网络驱动所支持的格式发送给所述设备。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述网络驱动包括:USB通讯设备类-以太网控制模式CDC-ECM。
6.根据权利要求5所述的方法,其特征在于,所述增加的协议处理模块所处理的协议包括:NDIS和/或QMI。
7.一种驱动处理装置,其特征在于,包括:
判断模块,用于接收消息,并判断所述消息所采用的协议是否为网络驱动的原有的协议处理模块所支持的协议,其中,所述网络驱动用于提供对设备的直接驱动;
处理模块,用于在判断结果为否的情况下,将所述消息发送给预先在所述网络驱动中增加的协议处理模块进行处理;在判断结果为是的情况下,将所述消息发送给所述原有的协议处理模块进行处理。
8.根据权利要求7所述的装置,其特征在于,所述增加的协议处理模块提供以下接口的至少之一用于支持所述网络驱动:
初始化接口、读接口、写接口、输入/输出控制接口。
9.根据权利要求7或8所述的装置,其特征在于,所述网络驱动包括:USB通讯设备类-以太网控制模式CDC-ECM。
10.根据权利要求7或8所述的装置,其特征在于,所述增加的协议处理模块所处理的协议包括:网络驱动接口规范NDIS和/或高通MSM接口QMI。
CN201110234870.1A 2011-08-16 2011-08-16 驱动处理方法及装置 Active CN102385557B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110234870.1A CN102385557B (zh) 2011-08-16 2011-08-16 驱动处理方法及装置
PCT/CN2011/082364 WO2012151908A1 (zh) 2011-08-16 2011-11-17 驱动处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110234870.1A CN102385557B (zh) 2011-08-16 2011-08-16 驱动处理方法及装置

Publications (2)

Publication Number Publication Date
CN102385557A CN102385557A (zh) 2012-03-21
CN102385557B true CN102385557B (zh) 2018-01-30

Family

ID=45824986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110234870.1A Active CN102385557B (zh) 2011-08-16 2011-08-16 驱动处理方法及装置

Country Status (2)

Country Link
CN (1) CN102385557B (zh)
WO (1) WO2012151908A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707997B (zh) * 2012-06-12 2014-06-11 中兴通讯股份有限公司 一种移动宽带设备多pdp数据通讯的驱动装置和方法
CN103634944B (zh) * 2012-08-20 2018-10-26 南京中兴新软件有限责任公司 数据卡类终端的工作模式确定方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722688A (zh) * 2004-02-13 2006-01-18 微软公司 可扩展的无线架构
CN1912832A (zh) * 2005-08-11 2007-02-14 技嘉科技股份有限公司 一种通讯装置及其启动方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4785579B2 (ja) * 2006-03-17 2011-10-05 キヤノン株式会社 情報処理装置および情報処理装置における印刷設定反映方法とプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722688A (zh) * 2004-02-13 2006-01-18 微软公司 可扩展的无线架构
CN1912832A (zh) * 2005-08-11 2007-02-14 技嘉科技股份有限公司 一种通讯装置及其启动方法

Also Published As

Publication number Publication date
CN102385557A (zh) 2012-03-21
WO2012151908A1 (zh) 2012-11-15

Similar Documents

Publication Publication Date Title
US8396992B2 (en) System and method for virtualizing the peripherals in a terminal device to enable remote management via removable portable media with processing capability
CN108255776B (zh) 一种兼容apb总线的i3c主设备、主从系统及通信方法
CN104965700A (zh) VxWorks操作系统下实现驱动SPI设备的方法和系统
CN113505007A (zh) 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质
CN107908589B (zh) I3c验证从设备、主从设备的通信验证系统及方法
WO2017032112A1 (zh) 一种与无中央处理器单板通讯的方法及通讯设备
US20140215012A1 (en) Method and apparatus for executing application of mobile device
CN104102490B (zh) 一种基于Windows服务实现CEN/XFS SP的方法
CN102385557B (zh) 驱动处理方法及装置
CN114817115A (zh) 串口通信方法及相关装置
US20070155422A1 (en) Method for controlling mobile data connection through USB Ethernet management of mobile station
WO2021135283A1 (zh) 一种异构计算系统及其计算方法
CN103019968B (zh) 输入设备在输入处理实例中注册的控制方法及装置
US20080126472A1 (en) Computer communication
CN107992297A (zh) 一种针对s3c2440的spi控制器驱动实现方法
CN111371799B (zh) Mctp控制器收发数据的控制方法、装置及设备
CN112084099B (zh) 基于主机获取报警状态值的方法、装置、设备及存储介质
CN103338134A (zh) 分布式网络交换机调试系统
CN109800202B (zh) 一种基于pcie的数据传输系统、方法及装置
WO2010086731A1 (en) System and method for virtualizing the peripherals in a terminal device to enable remote management via removable portable media with processing capability
KR101812145B1 (ko) 디바이스와 장착하여 가상 머신을 제어하기 위한 가상화 장치 및 방법
CN101867510A (zh) 板级双系统互联方法
EP2759944A1 (en) System and method for supporting both bulk storage and ethernet communications
CN104331281B (zh) 一种为lxi模块提供远程控制功能的代理服务系统及方法
CN103246618A (zh) 基于嵌入式系统的usb功能的实现方法及装置

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