CN103019975A - 通用串行总线传输控制方法及主机设备 - Google Patents
通用串行总线传输控制方法及主机设备 Download PDFInfo
- Publication number
- CN103019975A CN103019975A CN2012104723547A CN201210472354A CN103019975A CN 103019975 A CN103019975 A CN 103019975A CN 2012104723547 A CN2012104723547 A CN 2012104723547A CN 201210472354 A CN201210472354 A CN 201210472354A CN 103019975 A CN103019975 A CN 103019975A
- Authority
- CN
- China
- Prior art keywords
- urb
- module
- hardware
- usb
- under
- 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
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明提供一种通用串行总线传输控制方法及主机设备。方法包括:CPU根据预设的查询周期,周期性的查询USB传输端点下的URB对应的硬件FIFO存储器;其中,周期性查询USB传输端点下的URB对应的硬件FIFO存储器的优先级高于以软件中断方式查询USB传输端点下的URB对应的硬件FIFO存储器的优先级;当查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,CPU将USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给应用层处理模块,以供应用层处理模块对至少一个第一数据进行处理。采用本发明技术方案可以提高基于USB的数据的处理效率。
Description
技术领域
本发明涉及通信技术,尤其涉及一种通用串行总线传输控制方法及主机设备。
背景技术
通用串行总线(Universal Serial Bus,简称为USB)是一个外部总线标准,USB接口技术直接即插即用和热插拔功能。目前,USB数据传输类型主要包括:批量传输(Bulk Transfer)、控制传输(Control Transfer)、中断传输(InterruptTransfer)和同步传输(Isochronous Transfer)。其中,批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。
USB主机设备(以下简称主机设备)与USB设备相互配合完成USB数据的传输。主机设备主要包括主机控制驱动、USB内核以及客户端软件,USB内核被中央处理器(Central Processing Unit,简称为CPU)调度执行。主机控制驱动包括主机控制器(Host Controller,简称为HC)和主机控制器驱动程序(Host Control Driver,简称为HCD)。主机控制器主要包括硬件收发单元、微处理器以及寄存器单元。USB内核主要负责完成基本的USB协议层功能,会因为操作系统的不同而不同。主机控制驱动主要在USB内核的控制下与USB设备进行数据收发处理。
具体的,主机控制器的硬件收发单元查询USB设备,当发现USB设备有数据需要发送时,从USB总线上接收USB设备发送的数据;主机控制器的微处理器通过对交易该数据的端点对应的传输类型进行判断,将属于不同传输类型下的数据分别送往主机控制器的不同的硬件先进先出(First In FirstOut,简称为FIFO)缓存器中;当主机控制器的微处理器处理完从USB总线上收到的数据后,根据主机控制器中的寄存器的设置,如果使能了中断寄存器,则置位中断寄存器产生软件中断,触发CPU根据软件中断对接收到的数据进行处理;否则,仅置位对应的状态寄存器,表明接收到数据;CPU收到软件中断后,调用挂接给该软件中断的中断服务程序,例如HCD->IRQ;在中断服务程序中,获取挂接给对应端点的USB请求块(USB Request Block,简称为URB),再调用该URB上的回调(callback)函数,将相应FIFO存储器中的数据送至数据平面进行处理,同时重新使能对应的URB,以供下次数据传输使用。
在上述接收数据过程中,主机设备以软件中断方式调用中断服务程序将数据传输至数据平面,如果软件中断不能被及时响应,例如在多任务操作系统环境下,同时存在多个任务并发的现象,CPU可能会被其他任务抢占导致软件中断不能及时响应,使得接收到的数据得不到及时处理,影响对数据的处理效率。
发明内容
本发明提供一种通用串行总线传输控制方法及主机设备,用以提高基于USB的数据的处理效率。
第一方面提供一种通用串行总线USB传输控制方法,包括:
主机设备的中央处理器CPU根据预设的查询周期,周期性的查询USB传输端点下的USB请求块URB对应的硬件先进先出FIFO存储器;其中,所述CPU周期性查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级高于所述CPU以软件中断方式查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级;
当查询到所述USB传输端点下的URB对应的硬件FIFO存储器中有数据时,所述CPU将所述USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给所述主机设备的应用层处理模块,以供所述应用层处理模块对所述至少一个第一数据进行处理。
第二方面提供一种主机设备,包括:查询模块、传输模块和应用层处理模块;
所述查询模块,用于根据预设的查询周期,周期性的查询通用串行总线USB传输端点下的USB请求块URB对应的硬件先进先出FIFO存储器;其中,所述查询模块周期性查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级高于所述查询模块以软件中断方式查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级;
所述传输模块,用于在所述查询模块查询到所述USB传输端点下的URB对应的硬件FIFO存储器中有数据时,将所述USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给所述主机设备的应用层处理模块,以供所述应用层处理模块对所述至少一个第一数据进行处理。
本发明提供的通用串行总线USB传输控制方法及主机设备,通过设置优先级高于软件中断的周期性查询方式,CPU周期性的去查询USB传输端点下的URB对应的硬件FIFO存储器,将USB传输端点下的URB对应的硬件FIFO存储器中的数据发送给主机设备的应用层处理模块,由应用层处理模块对数据进行处理,这种传输控制方式将USB传输端点从中断传输方式中剥离出来,改用优先级较高的周期性查询方式,克服了因软件中断方式优先级较低导致CPU被其他任务抢占,无法及时对接收到的数据进行处理的问题,提高了对数据进行处理的效率;另外,由于采用了周期性查询方式,CPU不用像现有软件中断处理方式那样一次仅处理一个数据,CPU可以在一次查询过程中将USB传输端点下至少一个数据一次性处理完,有利于降低CPU的占用率,进一步提高对数据的处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种USB传输控制方法的流程图;
图2为本发明实施例提供的另一种USB传输控制方法的流程图;
图3为本发明实施例提供的又一种USB传输控制方法的流程图;
图4为本发明实施例提供的一种主机设备的结构示意图;
图5为本发明实施例提供的另一种主机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种USB传输控制方法的流程图。如图1所示,本实施例的方法包括:
步骤101、主机设备的CPU根据预设的查询周期,周期性的查询USB传输端点下的USB请求块(USB Request Block,简称为URB)对应的硬件FIFO存储器,其中,CPU周期性查询USB传输端点下的URB对应的硬件FIFO存储器的优先级高于CPU以软件中断方式查询该USB传输端点下的URB对应的硬件FIFO存储器的优先级。
步骤102、当查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,CPU将USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给主机设备的应用层处理模块,以供应用层处理模块对第一数据进行处理。
在本实施例中,USB传输端点主要是指同一类型的传输端点,例如可以是支持批量传输的传输端点,USB传输端点实际上是一个传输单元。一个USB传输端点下有多个URB,每个URB对应至少一个硬件FIFO存储器。则一个USB传输端点可以有多个硬件FIFO存储器,每个硬件FIFO存储器用于存储主机设备的硬件收发单元从USB总线上接收到的来自于USB设备的数据。
可选的,一个硬件FIFO存储器最大可以为一页内存。考虑到效率的影响,优选的,每个USB传输端点下可以有16个硬件FIFO存储器,但不限于此。
在本实施例中,为了克服现有技术中因软件中断处理方式的优先级较低导致软件中断服务程序不能被及时响应,例如在多任务操作系统环境下,同时存在多个任务并发的现象,CPU可能会被其他任务抢占而导致软件中断服务程序不能被及时响应,使得接收到的数据得不到及时处理,影响对数据的处理效率的问题,通过预先设置优先级较高的周期性查询方式,该周期性查询方式的优先级至少高于软件中断处理方式的优先级,CPU周期性的去查询USB传输端点下的URB对应的硬件FIFO存储器,当查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,CPU将该USB传输端点下的URB对应的硬件FIFO存储器中的至少一个数据传输至主机设备的应用层处理模块,由应用层处理模块对所述至少一个数据进行处理。为便于区分,将URB对应的硬件FIFO存储器中的数据称为第一数据。
其中,主机设备可以定义一个高精度的定时器,使用该定时器对查询周期进行计时,当该定时器计时到达查询周期对应的定时时长时,定时器重新对该定时时长进行计时,而CPU查询USB传输端点下的URB对应的硬件FIFO存储器。
在本实施例中,将CPU对USB传输端点下的URB对应的硬件FIFO存储器的查询从中断传输中剥离出来,改用优先级较高的周期性查询的方式,,克服了因软件中断处理方式优先级较低导致CPU被其他任务抢占,无法及时对接收到的数据进行处理的问题,提高了对数据进行处理的效率。
进一步,由于本实施例CPU采用的是周期性查询方式,而不是软件中断处理方式,因此CPU可以不再受软件中断处理方式的限制一次仅处理一个数据,可以同时对USB传输端点下的URB对应的硬件FIFO存储器中的一个或多个数据进行处理,即CPU一次可以将一个或多个第一数据传输至应用层处理模块,由于CPU一次可以将多个第一数据传输至主机设备的应用层处理模块,减少了CPU参与处理USB传输端点下的URB对应的硬件FIFO存储器中数据的次数,有利于降低CPU的占用率,进一步提高对数据的处理效率。
在此说明,CPU对USB传输端点下的URB对应的硬件FIFO存储器中数据进行处理的过程主要是CPU将USB传输端点下的URB对应的硬件FIFO存储器中数据从硬件FIFO存储器中拷贝到主机设备的其他内存中的过程,是一个搬运过程,实质上并不对对这些数据做具体的处理。所述其他内存主要是指主机设备内部供应用层处理模块使用的内存,是一种软件内存。对这些数据的具体处理是由应用层处理模块负责完成的,应用层处理模块对数据的处理会因为具体应用的不同而不同,本实施例对该处理过程不做限定。其中,硬件FIFO存储器在应用层处理模块对该硬件FIFO存储器中的数据进行处理的过程中不能被重新使用,只有在应用层处理模块对该硬件FIFO存储器中的数据处理完成之后,该硬件FIFO存储器才可以重新使用。其中,在主机设备上有另外的寄存器用于表示该FIFO存储器中的数据是否被应用层处理模块进行处理。
进一步,在现有软件中断处理方式中,对于传输数据较频繁的情况,例如USB2.0和USB3.0协议,其交易周期为125微秒(us),软件中断的调度频率达不到这一要求,这样就会出现硬件收上来的数据全部屯在硬件FIFO存储器中,甚至出现硬件FIFO存储器溢出导致数据丢失的现象。而在本实施例中,CPU周期性的查询FIFO存储器,其优先级较高,且CPU在查询到FIFO存储器有数据时,可以一次性将所有数据传输至应用层处理模块,其处理速度和效率都有提高,在很大程度上降低了FIFO存储器溢出的概率,降低了数据丢失的概率。
图2为本发明实施例提供的另一种USB传输控制方法的流程图。如图2所示,本实施例的方法包括:
步骤201、主机设备的CPU配置USB传输端点对应的查询方式指示,该查询方式指示用于指示对该USB传输端点下的URB对应的硬件FIFO存储器的查询方式为周期性查询,并设置CPU周期性查询USB传输端点下的URB对应的硬件FIFO存储器的优先级高于CPU以软件中断方式查询该USB传输端点下的URB对应的硬件FIFO存储器的优先级。
步骤202、主机设备的CPU根据预设的查询周期,周期性的查询USB传输端点下的USB请求块URB对应的硬件FIFO存储器。
步骤202可参见上述步骤101,在此不再赘述。
步骤203、当查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,CPU将该USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给主机设备的应用层处理模块,以供该应用层处理模块对至少一个第一数据进行处理。
步骤203可参见上述步骤102,在此不再赘述。
通常,USB设备会有多个同一类型的USB传输端点。主机设备的CPU完成初始化后,为从USB设备端扫描到得USB传输端点分配硬件FIFO存储器,并将对应的硬件FIFO存储器的地址写入硬件寄存器,这些USB传输端点串成一个单向链表。之后,主机设备的硬件收发单元周期性的从该单向链表的表头开始扫描一直到该单向链表的链表尾,以发现有数据需要处理的USB传输端点,然后触发软件中断,由主机设备的CPU执行软件中断服务程序对有数据需要处理的USB传输端点下的数据进行处理。在这种处理机制里面,所有的USB传输端点的优先级都是一样的,无法优先处理其中一个USB传输端点的数据。
针对上述问题,本实施例通过设置周期性查询方式的优先级高于软件中断方式查询的优先级,并通过配置需要优先处理的USB传输端点的查询方式指示,将需要优先处理的USB传输端点下的URB对应的硬件FIFO存储器的查询方式设置为周期性查询,然后针对该USB传输端点,CPU采用周期性的查询方式对其下的URB对应的硬件FIFO存储器进行查询,这样可以有针对性的提高某些USB传输端点的查询效率,可以实现对USB传输端点之间的优先级的区分。
对于没有设置为周期性查询的USB传输端点,CPU仍采用现有技术中的软件中断方式进行处理,只是硬件收发单元在周期性扫描单向链表的过程中,会跳过设置为周期性查询方式的USB传输端点,而只对哪些没有设置为周期性查询方式的USB传输端点进行扫描。其中,对于设置为周期性查询方式的USB传输端点,CPU会根据预设查询周期,周期性的查询这些USB传输端点下的URB对应的硬件FIFO存储器。在此说明,从硬件角度来看,仍然是由全部USB传输端点构成单向链表;从对USB传输端点的处理过程来看,在硬件收发单元扫描该单向链表的过程中,将跳过预先设置为周期性查询的USB传输端点,不对其进行扫描。
在本实施例中,通过将需要进行优先处理的USB传输端点的查询方式设置为周期性查询,而将哪些不需要优先处理的USB传输端点仍然采用软件中断方式,可以实现对USB传输端点优先级的划分,实现对重要USB传输端点和普通USB传输端点的隔离,达到提高重要USB传输端点的优先级的目的。
图3为本发明实施例提供的又一种USB传输控制方法的流程图。如图3所示,本实施例的方法包括:
步骤301、主机设备的CPU根据预设的查询周期,周期性的查询USB传输端点下的URB对应的硬件FIFO存储器,其中,CPU周期性查询USB传输端点下的URB对应的硬件FIFO存储器的优先级高于CPU以软件中断方式查询该USB传输端点下的URB对应的硬件FIFO存储器的优先级。
步骤301可参见步骤101,在此不再赘述。
步骤302、当查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,CPU将USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给主机设备的应用层处理模块,以供应用层处理模块对第一数据进行处理。
步骤302可参见步骤102,在此不再赘述。
步骤303、CPU接收应用层处理模块发送的请求从上述USB传输端点发送数据的端点查询请求。
步骤304、CPU根据该端点查询请求,判断该USB传输端点下的URB对应的硬件FIFO存储器是否挂接在主机设备的硬件收发单元上;如果判断结果为是,执行步骤305;如果判断结果为否,则执行步骤306。
步骤305、CPU直接通过该USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到主机设备的硬件收发单元上。
步骤306、CPU将该USB传输端点下的URB对应的硬件FIFO存储器挂接到主机设备的硬件收发单元上,并通过该USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到所述硬件收发单元。
在此说明,上述步骤301和步骤302描述的是对接收到的USB设备发送的数据进行传输处理的过程,而步骤303-步骤306描述的是向USB设备发送数据的处理过程。这两个过程的先后顺序不做限定。
根据USB协议的特性,USB总线是总线轮询机制,只要有USB传输端点下的URB对应的硬件FIFO存储器挂接在硬件收发单元上,硬件收发单元就会去处理,向对端的USB设备发送请求(TAKON)包,而USB设备也会相应的回应握手包以响应主机设备,这是需要占用硬件收发单元的处理时间和总线的。但是,在实际的应用中,并不是所有USB传输端点都要不停的传输数据,相反,大部分USB传输端点通常是偶然才会有数据传输,还有一些USB传输端点是用来管理设备的,这类USB传输端点一般也不会主动发起数据传输。由此可见,现有USB传输端点管理方式会浪费硬件收发单元的资源以及总线资源。其中,USB传输端点下的URB对应的硬件FIFO存储器挂接在硬件收发单元上可以简单描述为USB传输端点下的URB挂接在硬件收发单元上。
为了解决该问题,本实施例给出一种动态管理USB传输端点的方法,即只有在USB传输端点有传输需求时,才将USB传输端点下的URB挂接到主机设备的硬件收发单元上。
其中,主机设备的应用层处理模块在需要通过USB传输端点发送数据时,一般会向CPU发送请求通过USB传输端点发送数据的端点查询请求,基于此,CPU可以根据应用层处理模块发送的端点查询请求,获知哪个USB传输端点有传输需求。CPU根据该应用层处理模块发送的端点查询请求,获知USB传输端点有传输需求后,可以判断USB传输端点下的URB是否挂接在主机设备的硬件收发单元上;如果判断出USB传输端点下的URB挂接在主机设备的硬件收发单元上,则直接通过该USB传输端点下的URB发送第二数据到硬件收发单元;如果判断出USB传输端点下的URB没有挂接在主机设备的硬件收发单元上,则先将USB传输端点下的URB挂接在主机设备的硬件收发单元上,然后通过USB传输端点下的URB发送第二数据到硬件收发单元上。之后,硬件收发单元通过USB总线将第二数据发送给对端的USB设备。
基于上述,本实施例的方法还包括:CPU判断应用层处理模块的本次发送操作是否结束,如果判断结果为是,则将USB传输端点下的URB对应的硬件FIFO存储器从硬件收发单元上摘除,以减轻硬件收发单元的处理负担,减少对总线资源的占用。其中,将USB传输端点下的URB对应的硬件FIFO存储器从硬件收发单元上摘除可以简单描述为将USB传输端点下的URB从硬件收发单元上摘除。
在此说明,在本实施例中,对于USB传输端点下的URB的挂接和摘除,要做到完全隔离,摘除动作要干净,在硬件收发单元上不能有残留,否则会影响后续的动作。
在本实施例中,通过动态挂接和摘除USB传输端点下的URB,有利于结余USB传输端点在没有传输需求时消耗的硬件收发单元的资源和占用的总线资源,有利于减轻硬件收发单元的处理负担,从整体上提高基于USB的传输性能。
图4为本发明实施例提供的一种主机设备的结构示意图。如图4所示,本实施例的主机设备包括:查询模块41、传输模块42和应用层处理模块43。
查询模块41,用于根据预设的查询周期,周期性的查询USB传输端点下的URB对应的硬件FIFO存储器;其中,查询模块41周期性查询USB传输端点下的URB对应的硬件FIFO存储器的优先级高于查询模块41以软件中断方式查询USB传输端点下的URB对应的硬件FIFO存储器的优先级。
传输模块42,与查询模块41连接,用于在查询模块41查询到USB传输端点下的URB对应的硬件FIFO存储器中有数据时,将USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给主机设备的应用层处理模块43,以供应用层处理模块43对至少一个第一数据进行处理。
应用层处理模块43,与传输模块42连接,用于对传输模块42发送的至少一个第一数据进行处理。
在一可选实施方式中,查询模块41和传输模块42可以集成在主机设备的CPU中实现。
在一可选实施方式中,如图5所示,本实施例的主机设备还包括:配置模块44。配置模块44,与查询模块41连接,用于在查询模块41查询USB传输端点下的URB对应的硬件FIFO存储器之前,配置该USB传输端点对应的查询方式指示,该查询方式指示用于指示对该USB传输端点下的URB对应的硬件FIFO存储器的查询方式为周期性查询。
在一可选实施方式中,如图5所示,本实施例的主机设备还包括:接收模块45、第一判断模块46和发送处理模块47。
接收模块45,与应用层处理模块43连接,用于接收应用层处理模块43发送的请求从USB传输端点发送数据的端点查询请求。
第一判断模块46,与接收模块45连接,用于根据接收模块45接收的端点查询请求,判断USB传输端点下的URB对应的硬件FIFO存储器是否挂接在主机设备的硬件收发单元48上。本实施例的主机设备还包括硬件收发单元48,用于通过USB总线与USB设备进行数据收发。
发送处理模块47,与第一判断模块46连接,用于在第一判断模块46的判断结果为否时,将USB传输端点下的URB对应的硬件FIFO存储器挂接到主机设备的硬件收发单元48上,并通过USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到该硬件收发单元48,或者在第一判断模块46的判断结果为是时,直接通过USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到该硬件收发单元48。发送处理模块47与硬件收发单元48连接。
在一可选实施方式中,如图5所示,本实施例的主机设备还包括:第二判断模块49和摘除模块50。
第二判断模块49,与应用层处理模块43连接,用于判断应用层处理模块43的本次发送操作是否结束。
摘除模块50,与第二判断模块49连接,用于在第二判断模块49的判断结果为是时,将USB传输端点下的URB对应的硬件FIFO存储器从硬件收发单元48上摘除。摘除模块50与硬件收发单元48连接。
可选的,除了查询模块41和传输模块42可以集成在主机设备的CPU中实现之外,上述配置模块44、接收模块45、第一判断模块46、发送处理模块47、第二判断模块49和摘除模块50也可以集成在主机设备的CPU中实现。即,查询模块41、传输模块42、配置模块44、接收模块45、第一判断模块46、发送处理模块47、第二判断模块49和摘除模块50可以集成在主机设备的CPU中实现。
本实施例提供的主机设备的各功能模块可用于执行上述图1-图3所示USB传输控制方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的主机设备,通过设置优先级高于软件中断的周期性查询方式,周期性的去查询USB传输端点下的URB对应的硬件FIFO存储器,将USB传输端点下的URB对应的硬件FIFO存储器中的数据发送给主机设备的应用层处理模块,由应用层处理模块对数据进行处理,这种传输控制方式将USB传输端点从中断传输方式中剥离出来,改用优先级较高的周期性查询方式,克服了因软件中断方式优先级较低导致CPU被其他任务抢占,无法及时对接收到的数据进行处理的问题,提高了对数据进行处理的效率;另外,由于采用了周期性查询方式,不用像现有软件中断处理方式那样一次仅处理一个数据,可以在一次查询过程中将USB传输端点下至少一个数据一次性处理完,有利于降低对主机设备的CPU的占用率,进一步提高对数据的处理效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种通用串行总线USB传输控制方法,其特征在于,包括:
主机设备的中央处理器CPU根据预设的查询周期,周期性的查询USB传输端点下的USB请求块URB对应的硬件先进先出FIFO存储器;其中,所述CPU周期性查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级高于所述CPU以软件中断方式查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级;
当查询到所述USB传输端点下的URB对应的硬件FIFO存储器中有数据时,所述CPU将所述USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给所述主机设备的应用层处理模块,以供所述应用层处理模块对所述至少一个第一数据进行处理。
2.根据权利要求1所述的USB传输控制方法,其特征在于,所述主机设备的中央处理器CPU根据预设的查询周期,周期性的查询USB传输端点下的USB请求块URB对应的硬件先进先出FIFO存储器之前,包括:
所述CPU配置所述USB传输端点对应的查询方式指示,所述查询方式指示用于指示对所述USB传输端点下的URB对应的硬件FIFO存储器的查询方式为周期性查询。
3.根据权利要求1或2所述的USB传输控制方法,其特征在于,还包括:
所述CPU接收所述应用层处理模块发送的请求从所述USB传输端点发送数据的端点查询请求;
所述CPU根据所述端点查询请求,判断所述USB传输端点下的URB对应的硬件FIFO存储器是否挂接在所述主机设备的硬件收发单元上;
如果判断结果为否,所述CPU将所述USB传输端点下的URB对应的硬件FIFO存储器挂接到所述硬件收发单元上,并通过所述USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到所述硬件收发单元;
如果判断结果为是,所述CPU直接通过所述USB传输端点下的URB对应的硬件FIFO存储器发送所述第二数据到所述硬件收发单元。
4.根据权利要求3所述的USB传输控制方法,其特征在于,还包括:
所述CPU判断所述应用层处理模块的本次发送操作是否结束;
如果判断结果为是,所述CPU将所述USB传输端点下的URB对应的硬件FIFO存储器从所述硬件收发单元上摘除。
5.一种主机设备,其特征在于,包括:查询模块、传输模块和应用层处理模块;
所述查询模块,用于根据预设的查询周期,周期性的查询通用串行总线USB传输端点下的USB请求块URB对应的硬件先进先出FIFO存储器;其中,所述查询模块周期性查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级高于所述查询模块以软件中断方式查询所述USB传输端点下的URB对应的硬件FIFO存储器的优先级;
所述传输模块,用于在所述查询模块查询到所述USB传输端点下的URB对应的硬件FIFO存储器中有数据时,将所述USB传输端点下的URB对应的硬件FIFO存储器中的至少一个第一数据一次性传输给所述主机设备的应用层处理模块,以供所述应用层处理模块对所述至少一个第一数据进行处理。
6.根据权利要求5所述的主机设备,其特征在于,还包括:
配置模块,用于在所述查询模块查询所述USB传输端点下的URB对应的硬件FIFO存储器之前,配置所述USB传输端点对应的查询方式指示,所述查询方式指示用于指示对所述USB传输端点下的URB对应的硬件FIFO存储器的查询方式为周期性查询。
7.根据权利要求6所述的主机设备,其特征在于,还包括:
接收模块,用于接收所述应用层处理模块发送的请求从所述USB传输端点发送数据的端点查询请求;
第一判断模块,用于根据所述端点查询请求,判断所述USB传输端点下的URB对应的硬件FIFO存储器是否挂接在所述主机设备的硬件收发单元上;
发送处理模块,用于在所述第一判断模块的判断结果为否时,将所述USB传输端点下的URB对应的硬件FIFO存储器挂接到所述硬件收发单元上,并通过所述USB传输端点下的URB对应的硬件FIFO存储器发送第二数据到所述硬件收发单元,或者在所述第一判断模块的判断结果为是时,直接通过所述USB传输端点下的URB对应的硬件FIFO存储器发送所述第二数据到所述硬件收发单元。
8.根据权利要求7所述的主机设备,其特征在于,还包括:
第二判断模块,用于判断所述应用层处理模块的本次发送操作是否结束;
摘除模块,用于在所述第二判断模块的判断结果为是时,将所述USB传输端点下的URB对应的硬件FIFO存储器从所述硬件收发单元上摘除。
9.根据权利要求5-8任一项所述的主机设备,其特征在于,所述查询模块和所述传输模块集成在所述主机设备的中央处理器CPU中实现。
10.根据权利要求8所述的主机设备,其特征在于,所述查询模块、所述传输模块、所述配置模块、所述接收模块、所述第一判断模块、所述发送处理模块、所述第二判断模块和所述拆除模块集成在所述主机设备的CPU中实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210472354.7A CN103019975B (zh) | 2012-11-20 | 2012-11-20 | 通用串行总线传输控制方法及主机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210472354.7A CN103019975B (zh) | 2012-11-20 | 2012-11-20 | 通用串行总线传输控制方法及主机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019975A true CN103019975A (zh) | 2013-04-03 |
CN103019975B CN103019975B (zh) | 2016-01-27 |
Family
ID=47968599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210472354.7A Active CN103019975B (zh) | 2012-11-20 | 2012-11-20 | 通用串行总线传输控制方法及主机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019975B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704404A (zh) * | 2017-09-29 | 2018-02-16 | 湖南国科微电子股份有限公司 | 一种提高usb从设备读取速度的方法 |
CN107783727A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN111639043A (zh) * | 2020-06-05 | 2020-09-08 | 展讯通信(上海)有限公司 | 一种通信装置 |
CN112188025A (zh) * | 2020-09-22 | 2021-01-05 | 北京中房智宝科技有限公司 | 一种usb传输图像稳定解决方案 |
CN113157433A (zh) * | 2021-02-24 | 2021-07-23 | 合肥宏晶微电子科技股份有限公司 | 资源分配方法、电子设备、计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266584A (zh) * | 2008-05-13 | 2008-09-17 | 威盛电子股份有限公司 | 通用串行总线主机控制器及其控制方法 |
US7505331B1 (en) * | 2005-11-23 | 2009-03-17 | Altera Corporation | Programmable logic device with differential communications support |
CN101808011A (zh) * | 2010-03-31 | 2010-08-18 | 许继集团有限公司 | 远动通道自动切换方法 |
-
2012
- 2012-11-20 CN CN201210472354.7A patent/CN103019975B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7505331B1 (en) * | 2005-11-23 | 2009-03-17 | Altera Corporation | Programmable logic device with differential communications support |
CN101266584A (zh) * | 2008-05-13 | 2008-09-17 | 威盛电子股份有限公司 | 通用串行总线主机控制器及其控制方法 |
CN101808011A (zh) * | 2010-03-31 | 2010-08-18 | 许继集团有限公司 | 远动通道自动切换方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783727A (zh) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN107704404A (zh) * | 2017-09-29 | 2018-02-16 | 湖南国科微电子股份有限公司 | 一种提高usb从设备读取速度的方法 |
CN111639043A (zh) * | 2020-06-05 | 2020-09-08 | 展讯通信(上海)有限公司 | 一种通信装置 |
CN112188025A (zh) * | 2020-09-22 | 2021-01-05 | 北京中房智宝科技有限公司 | 一种usb传输图像稳定解决方案 |
CN113157433A (zh) * | 2021-02-24 | 2021-07-23 | 合肥宏晶微电子科技股份有限公司 | 资源分配方法、电子设备、计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103019975B (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392635B2 (en) | Selectively enabling a host transfer interrupt | |
CN106874128B (zh) | 数据传输方法及装置 | |
US10901638B2 (en) | Cascading board and SSD shared remote access system and method | |
CN103019975A (zh) | 通用串行总线传输控制方法及主机设备 | |
CN101707565B (zh) | 零拷贝网络报文发送、接收方法和装置 | |
CN114553635B (zh) | Dpu网络设备中的数据处理方法、数据交互方法及产品 | |
CN109408243B (zh) | 一种基于rdma的数据处理方法、装置和介质 | |
JP6498844B2 (ja) | コンピュータデバイス及びコンピュータデバイスによりデータを読み取る/書き込むための方法 | |
TWI712951B (zh) | 電子存放裝置的任務管理方法、主機和存儲裝置 | |
US7853748B2 (en) | Method and apparatus to obtain code data for USB device | |
US10671141B2 (en) | Storage device and method of controlling link state thereof | |
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN102662910A (zh) | 基于嵌入式系统的网络交互体系及网络交互方法 | |
JP2008500656A (ja) | 2台のデュアルロールデバイスでジョブを処理する方法及びシステム | |
US20230152978A1 (en) | Data Access Method and Related Device | |
US20160077986A1 (en) | Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts | |
JP2017520052A (ja) | ユニバーサルシリアルバス(usb)通信システムおよび方法 | |
CN103853676A (zh) | 基于PCIe总线的信道分配、释放、数据传输方法和系统 | |
CN1559039A (zh) | 总线系统和用于连接到总线的总线接口 | |
WO2023030178A1 (zh) | 一种基于用户态协议栈的通信方法及相应装置 | |
KR20040043198A (ko) | 버스 시스템 및 버스 인터페이스 | |
CN110837482B (zh) | 分布式块存储低延迟控制方法、系统及设备 | |
CN103744816B (zh) | 通用串行总线设备以及其数据传输方法 | |
JPWO2004068356A1 (ja) | データ通信システムおよびデータ通信方法、データ通信プログラム | |
US20030145133A1 (en) | SCSI - handling of I/O scans to multiple LUNs during write/read command disconnects |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS CO., LTD. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Fujian Xingwangruijie Network Co., Ltd. |