通用串口总线主机控制器驱动通用适配层实现方法及装置的制作方法

文档序号:6608688阅读:261来源:国知局
专利名称:通用串口总线主机控制器驱动通用适配层实现方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其指一种USB(Universal Serial Bus,通用串口总线)HCD(Host Controller Driver,主机控制器驱动)的通用适配层实现方法及装置。
背景技术
USB作为一种计算机外围串行通讯接口标准,具有即插即用、数据传输可靠、扩展方便、低成本等优点,目前已成为计算机的必备接口之一。近年,随着USB技术也逐渐应用到嵌入式领域,诸如路由器、交换机等数通设备也开始通过USB接口实现外接USB设备的应用。
图1为现有技术中的USB通信模型层次结构图,如图所示系统之间的通信由USB驱动软件维持,包括USB主机端驱动软件及USB设备驱动软件。从软件的功能角度,USB系统属于一种主从结构,由USB主机策动系统的所有动作,并协调不同设备的工作,而USB设备驱动软件在系统中只需对主机发出的命令做出解释及响应,因此USB主机端驱动软件的功能尤为重要,其实现也比设备驱动更加复杂。参照图1所示,USB主机端驱动软件由HCD、USBD(USB driver,USB主机驱动程序)及客户端驱动程序组成,其中HCD主要完成对USB主机控制器硬件的驱动,直接面向硬件层并与上层软件结合实现数据及命令的传输。目前在通用USB1.1主机控制器规范中,微软提出的OHCI(Open Host Controller Interface Specification,微软开放USB1.1主机控制器接口规范)从寄存器级对USB主机控制器进行详细描述,为主机控制器的软件和硬件提供了统一的开放式接口标准,且软件驱动较为简单,从而在嵌入式领域得到广泛的应用。除OHCI及Intel(英特尔)公司提出的UHCI(Universal Host Controller Interface Specification,Intel通用USB1.1主机控制器接口规范)之外,嵌入式领域也存在大量非标准的USB主机控制器,由于不同厂家开发的USB主机控制器硬件完成的功能不尽相同,因而HCD的实现也需要对应进行调整。
现有技术中对于采用非标准USB主机控制器的嵌入式USB应用,通常是基于对应USB协议栈的预留接口及具体非标准USB主机控制器的功能进行完整HCD的单独开发,其存在设计复杂、开发工作量大及可重用性差等缺陷;或者是基于对应USB协议栈的标准HCD,如OHCD(Open Host ControllerDriver,开放主机控制器驱动)或UHCD(Universal Host Controller Driver,通用主机控制器驱动),进行软件适配层的开发,从而在该适配层下仅实现对非标准USB主机控制器的基本控制操作,至于与USB规范相关的实现及与USB协议栈的接口则由对应的标准HCD完成,其与前述方案相比可简化设计、降低工作量,但开发的软件适配层不能实现在不同类型的非标准USB主机控制器中的通用,存在耦合性强及重用性差的缺陷。

发明内容
本发明的目的是提供一种USB HCD通用适配层实现方法及装置,以解决现有技术中非标准USB主机控制器的驱动设计及开发困难或重用性差的缺陷。
为达到上述目的,本发明提出一种USB主机装置,包括标准HCD单元、简化HCD单元及HC单元,还包括通用适配层单元,所述简化HCD单元,为所述HC单元提供驱动;所述通用适配层单元,与所述标准HCD单元连接,并为所述简化HCD单元提供虚拟标准接口以实现所述HC单元与所述标准HCD单元的交互。
所述通用适配层单元进一步包括虚拟硬件寄存器、虚拟寄存器访问接口、数据结构访问接口及虚拟中断子单元,所述虚拟硬件寄存器,与所述简化HCD单元连接并根据所述标准HCD单元对标准定义的硬件寄存器进行模拟;所述虚拟寄存器访问接口,与所述虚拟硬件寄存器连接并为所述简化HCD单元提供对所述虚拟硬件寄存器进行读写的访问接口;所述数据结构访问接口,用于实现所述简化HCD单元根据所述标准HCD单元对标准定义的数据结构进行访问;所述虚拟中断子单元,与所述标准HCD单元连接,用于根据所述标准HCD单元对标准定义的硬件中断进行模拟。
所述通用适配层单元还包括虚拟根集线器接口,根据所述标准HCD单元对标准定义的根集线器进行模拟,并由所述简化HCD单元根据所述HC单元的根集线器功能进行选择调用。
所述通用适配层单元还包括传输通知接口,与所述简化HCD单元连接,用于向所述简化HCD单元通知数据传输的启动或停止。
所述通用适配层单元还包括初始化接口,与所述简化HCD单元连接,用于对所述虚拟硬件寄存器、简化HCD单元及HC单元进行初始化。
本发明还提出一种USB HCD通用适配层实现方法,包括根据标准HCD设置通用适配层,为简化HCD提供虚拟的标准接口;HC利用所述简化HCD的驱动,通过所述通用适配层与所述标准HCD进行交互。
所述根据标准HCD设置通用适配层进一步包括根据所述标准HCD对标准定义的硬件寄存器进行模拟,设置虚拟硬件寄存器;为所述简化HCD设置对所述虚拟硬件寄存器进行读写的虚拟寄存器访问接口;设置数据结构访问接口以实现所述简化HCD根据所述标准HCD对标准定义的数据结构进行访问;根据所述标准HCD对标准定义的硬件中断进行模拟,设置虚拟中断。
所述根据标准HCD设置通用适配层还包括设置虚拟根集线器接口,根据所述标准HCD对标准定义的根集线器进行模拟,并由所述简化HCD根据所述HC的根集线器功能进行选择调用。
所述根据标准HCD设置通用适配层还包括设置数据传输通知接口,用于所述标准HCD向所述简化HCD通知数据传输的启动或停止。
所述根据标准HCD设置通用适配层还包括设置初始化接口,用于在所述标准HCD进行初始化前对所述虚拟硬件寄存器、简化HCD及HC进行初始化。
所述标准HCD为OHCD或UHCD。
与现有技术相比,本发明的装置及方法实施例,通过对标准HCD定义的寄存器、接口及中断等进行模拟实现通用适配层,结合简化HCD可实现非标准HC的完整驱动,简化了非标准HC的驱动设计及开发的工作量,并具有可重用性好的特点,适合于同时支持多种非标准HC的驱动,从而有效节省开发及维护成本。


图1为现有技术中的USB通信模型层次结构图;图2为本发明USB主机装置的实施例一示意图;图3为本发明USB主机装置的实施例二示意图;图4为本发明USB HCD通用适配层实现方法的实施例流程图。
具体实施例方式
下面以具体实施例结合附图对本发明进一步加以阐述。
本发明公开一种可实现USB HCD通用适配层的USB主机装置,其实施例一如图2所示,包括标准HCD单元210、简化HCD单元220及HC单元230,还包括通用适配层单元240。其中,简化HCD单元220用于根据非标准HC单元230的具体功能为其提供简易驱动;而通用适配层单元240,则设于标准HCD单元210与简化HCD单元220之间,并为简化HCD单元220提供虚拟标准接口以实现HC单元230与标准HCD单元210的交互。
上述实施例中,通用适配层单元240进一步包括虚拟硬件寄存器241、虚拟寄存器访问接口242、数据结构访问接口243及虚拟中断子单元244。其中,虚拟硬件寄存器241,根据标准HCD单元210对标准定义的硬件寄存器进行软件模拟;虚拟寄存器访问接口242,与虚拟硬件寄存器241连接,并为简化HCD单元220提供对虚拟硬件寄存器241进行读写的访问接口;数据结构访问接口243则提供给简化HCD单元220以实现其对标准HCD单元210所维护的标准数据结构进行访问;虚拟中断子单元244,与标准HCD单元210连接,并用于根据标准HCD单元210对标准定义的硬件中断进行模拟。
上述本发明USB主机装置的实施例,通过在标准HCD与为非标准HC提供简易驱动的简化HCD之间设置软件通用适配层,对标准定义的硬件寄存器、数据结构及访问接口、硬件中断进行模拟实现,可结合简化HCD实现HC与标准HCD之间的交互,从而实现非标准HC的完整驱动,可简化非标准HC驱动设计与开发的工作量。
图3为本发明USB主机装置的实施例二示意图,其在实施例一的基础上增加了对根集线器功能及初始化等接口的支持,如图所示,本实施例中USB主机装置仍包括标准HCD单元210、简化HCD单元220及HC单元230,还包括通用适配层单元240。通用适配层单元240则进一步包括虚拟硬件寄存器241、虚拟寄存器访问接口242、数据结构访问接口243及虚拟中断子单元244。上述单元及下属子单元的功能及连接与实施例一所述相同,此处不加以赘述。
本实施例中,通用适配层单元240还包括虚拟根集线器接口245、传输通知接口246及初始化接口247。其中,虚拟根集线器接口245,根据标准HCD单元210对标准定义的根集线器进行模拟,并由简化HCD单元220根据HC单元230具体的根集线器功能进行选择调用;传输通知接口246则与简化HCD单元220连接,用于向其通知数据传输的启动或停止;初始化接口247与简化HCD单元220连接,用于对虚拟硬件寄存器241、简化HCD单元220及HC单元230进行初始化。
上述实施例中,在标准HCD及非标准HCD之间设置的通用适配层模拟实现了标准定义的硬件寄存器、数据结构及访问接口、硬件中断、根集线器功能、初始化接口及数据传输通知接口,从而完善了标准HCD通过适配层及非标准HCD与非标准HC之间的交互,实现了非标准HC的完整驱动。上述通用适配层在USB主机装置中的实现可简化非标准HC驱动设计与开发的工作量,与USB协议栈的配合由标准HCD完成,与标准HCD间交互的实现则由通用适配层完成,从而针对不同HC提供的简化HCD的设计与开发则仅需考虑非标准HC具体的功能实现;同时本发明实施例提供的通用适配层其可重用性好,适合于同时支持多中非标准HC的实现,从而有效节省开发及维护成本。
本发明还公开一种USB HCD通用适配层实现方法,其一实施例如图4所示,包括以下步骤S401、根据标准HCD对标准定义的硬件寄存器进行模拟,设置虚拟硬件寄存器。
由于非标准HC定义的硬件寄存器可能与标准HCD定义的硬件寄存器全部或有部分不同,因此作为通用适配层必须实现全部标准HCD定义硬件寄存器的软件模拟。通用适配层结合其下层的简化HCD,通过设置的虚拟硬件寄存器,可按照现有规范与标准HCD进行交互。利用通用适配层结合简化HCD的驱动,标准HCD则按照标准USB HC对非标准HC进行处理,从而不需要做任何修改。
另外,需要说明的是,目前市面上通用的标准HCD包括OHCD及UHCD,针对嵌入式USB应用的特点,本发明方法实施例的后续描述中,采用OHCD对通用适配层的实现进行描述,至于基于UHCD的通用适配层的设计也可根据本实施例提供的步骤进行,但实现细节较OHCD通用适配层较为复杂,其应涵盖与本发明的保护范围内,此处不加以赘述。
S402、为简化HCD设置对虚拟硬件寄存器进行读写的虚拟寄存器访问接口。
OHCI规范按照小端模式定义OHCI硬件寄存器的bit位,而非标准HC的硬件寄存器则可能是按照大端或小端模式进行读写,因此通用适配层需要封装一套虚拟OHCI硬件寄存器的读写接口,并提供给非标准HC的简化HCD,以屏蔽大端模式和小端模式的区别,从而保证简化HCD可以对步骤S401所设置的虚拟硬件寄存器进行正确访问,同时实现通用适配层针对不同非标准HC的可重用性。
S403、设置数据结构访问接口以实现简化HCD对标准HCD所维护的数据结构进行访问。
OHCI规范按照小端模式定义标准的ED(Endpoint Descriptor,端点描述字)+TD(Transfer Descriptor,传输描述字)数据结构中的bit位,为实现OHCD对标准ED+TD的正常访问,通用适配层需要封装一套ED+TD数据结构的读写接口,并屏蔽大端模式和小端模式的区别,保证通用适配层的可重用性。为非标准HC提供简易驱动的简化HCD,结合其上提供标准数据结构访问接口的通用适配层,可进一步通过虚拟硬件寄存器及标准的ED+TD数据结构,实现非标准HC按照OHCI规范的规定与OHCD进行交互。
S404、设置数据传输通知接口,由标准HCD在启动或停止数据传输时通过该数据传输通知接口向简化HCD通知。
OHCI规范定义的USB数据传输实现,是通过OHCD和OHCI HC配合完成,OHCD通过设置相应寄存器和ED+TD结构将数据的传输向OHCI HC通知,OHCI HC通过轮询检测到有数据要传输,则搜索ED+TD数据结构,获知需要传输的TD,进一步组成USB数据包进行传输。
至于非标准HC数据传输的实现,一部分类似于OHCI HC通过轮询方式获知数据的传输,从而可以通过简化HCD轮询访问虚拟硬件寄存器和OHCD数据结构来实现。但另外一部分则无法实现轮询,需要简化HCD直接设置特定寄存器来启动传输。因此,通用适配层需要提供数据传输启动/停止通知接口,并由简化HCD根据非标准HC的具体功能来选择是否使用该接口。
S405、设置初始化接口,用于在标准HCD进行初始化前对虚拟硬件寄存器、简化HCD及HC进行初始化。
OHCD通用适配层需要在OHCD初始化部分中,添加三个给简化HCD的初始化接口。分别用于在OHCD初始化前,初始化步骤S401中设置的虚拟硬件寄存器,通用适配层下简化HCD的初始化,以及非标准HC硬件的初始化。
S406、根据标准HCD对标准定义的硬件中断进行模拟,设置虚拟中断。
OHCI定义了完整的硬件中断,OHCI HC通过该些硬件中断通知OHCDUSB设备的插拔及USB数据传输完成等事件。非标准HC各自定义的硬件中断,可能与OHCI定义的硬件中断部分或全部不同,因此OHCD通用软件适配层需要对标准定义的硬件中断触发程序进行模拟。由不同的非标准HC在处理各自硬件中断时,按照OHCI的规范选择触发相应的OHCI软件中断。
S407、设置虚拟根集线器接口,根据标准HCD对标准定义的根集线器进行模拟,并由简化HCD根据HC的根集线器功能进行选择调用。
OHCI规范规定HC集成部分根集线器功能,OHCD则定义了一系列根集线器相关寄存器,便于管理根集线器功能的管理。非标准HC集成的根集线器功能与OHCI规范规定的不尽相同,OHCD通用适配层需要提供完整的OHCI集成根集线器的模拟,由不同的简化HCD根据具体非标准HC集成的根集线器的功能选择调用。另外需要说明的是,一些非标准的USB控制器需要外接USB PHY(Physical Layer,物理层)芯片来实现根集线器的功能,而通用适配层则可以将此类非标准HC+USB PHY芯片的组合视为内部集成的根集线器,从而按本步骤进行处理。
S408、HC利用简化HCD的驱动,通过通用适配层与标准HCD进行交互。
通过步骤S401~S407对标准HCD定义的硬件寄存器、接口及中断等进行虚拟设置后,即在标准HCD与简化HCD之间完成通用适配层的实现,进一步结合其下的简化HCD即可完成非标准HC按照现有规范与标准HCD之间的交互,标准HCD也可以将非标准HC视为标准OHCI USB HC对其进行处理。
上述本发明USB HCD通用适配层实现方法的实施例,通过对标准定义的硬件寄存器、数据结构及访问接口、硬件中断及根集线器功能进行模拟,在标准HCD及简化HCD之间实现通用适配层,可进一步结合简化HCD实现HC与标准HCD之间的交互,从而实现非标准HC的完整驱动,而简化非标准HC的驱动设计与开发的工作量;该通用适配层并具有可重用性好的优点,适合于同时支持多种非标准HC的实现,从而有效节省开发及维护成本。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种USB主机装置,包括标准HCD单元、简化HCD单元及HC单元,其特征在于,还包括通用适配层单元,所述简化HCD单元,为所述HC单元提供驱动;所述通用适配层单元,与所述标准HCD单元连接,并为所述简化HCD单元提供虚拟标准接口以实现所述HC单元与所述标准HCD单元的交互。
2.如权利要求1所述USB主机装置,其特征在于,所述通用适配层单元进一步包括虚拟硬件寄存器、虚拟寄存器访问接口、数据结构访问接口及虚拟中断子单元,所述虚拟硬件寄存器,与所述简化HCD单元连接并根据所述标准HCD单元对标准定义的硬件寄存器进行模拟;所述虚拟寄存器访问接口,与所述虚拟硬件寄存器连接并为所述简化HCD单元提供对所述虚拟硬件寄存器进行读写的访问接口;所述数据结构访问接口,用于实现所述简化HCD单元根据所述标准HCD单元对标准定义的数据结构进行访问;所述虚拟中断子单元,与所述标准HCD单元连接,用于根据所述标准HCD单元对标准定义的硬件中断进行模拟。
3.如权利要求2所述USB主机装置,其特征在于,所述通用适配层单元还包括虚拟根集线器接口,根据所述标准HCD单元对标准定义的根集线器进行模拟,并由所述简化HCD单元根据所述HC单元的根集线器功能进行选择调用。
4.如权利要求2所述USB主机装置,其特征在于,所述通用适配层单元还包括传输通知接口,与所述简化HCD单元连接,用于向所述简化HCD单元通知数据传输的启动或停止。
5.如权利要求2所述USB主机装置,其特征在于,所述通用适配层单元还包括初始化接口,与所述简化HCD单元连接,用于对所述虚拟硬件寄存器、简化HCD单元及HC单元进行初始化。
6.一种USB HCD通用适配层实现方法,其特征在于,包括根据标准HCD设置通用适配层,为简化HCD提供虚拟的标准接口;HC利用所述简化HCD的驱动,通过所述通用适配层与所述标准HCD进行交互。
7.如权利要求6所述USB HCD通用适配层实现方法,其特征在于,所述根据标准HCD设置通用适配层进一步包括根据所述标准HCD对标准定义的硬件寄存器进行模拟,设置虚拟硬件寄存器;为所述简化HCD设置对所述虚拟硬件寄存器进行读写的虚拟寄存器访问接口;设置数据结构访问接口以实现所述简化HCD根据所述标准HCD对标准定义的数据结构进行访问;根据所述标准HCD对标准定义的硬件中断进行模拟,设置虚拟中断。
8.如权利要求7所述USB HCD通用适配层实现方法,其特征在于,所述根据标准HCD设置通用适配层还包括设置虚拟根集线器接口,根据所述标准HCD对标准定义的根集线器进行模拟,并由所述简化HCD根据所述HC的根集线器功能进行选择调用。
9.如权利要求7所述USB HCD通用适配层实现方法,其特征在于,所述根据标准HCD设置通用适配层还包括设置数据传输通知接口,用于所述标准HCD向所述简化HCD通知数据传输的启动或停止。
10.如权利要求7所述USB HCD通用适配层实现方法,其特征在于,所述根据标准HCD设置通用适配层还包括设置初始化接口,用于在所述标准HCD进行初始化前对所述虚拟硬件寄存器、简化HCD及HC进行初始化。
11.如权利要求6至10任一项所述USB HCD通用适配层实现方法,其特征在于,所述标准HCD为OHCD或UHCD。
全文摘要
本发明提出了一种通用串口总线USB主机装置,包括标准USB主机控制器驱动HCD单元、简化HCD单元及主机控制器HC单元,还包括通用适配层单元。其中简化HCD单元用于为HC单元提供简易驱动;而通用适配层单元则为该简化HCD单元提供虚拟标准接口以实现HC单元与标准HCD单元的交互。本发明还提出一种USB HCD通用适配层实现方法。应用本发明USBHCD通用适配层实现方法及装置,可简化非标准HC的驱动设计及开发的工作量,同时具有可重用性好的特点,从而有效节省开发和维护成本。
文档编号G06F13/42GK101038576SQ200710098009
公开日2007年9月19日 申请日期2007年4月24日 优先权日2007年4月24日
发明者赵志宇 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1