CN103744816A - 通用串行总线设备以及其数据传输方法 - Google Patents
通用串行总线设备以及其数据传输方法 Download PDFInfo
- Publication number
- CN103744816A CN103744816A CN201410053829.8A CN201410053829A CN103744816A CN 103744816 A CN103744816 A CN 103744816A CN 201410053829 A CN201410053829 A CN 201410053829A CN 103744816 A CN103744816 A CN 103744816A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- end points
- serial bus
- universal serial
- interrupt request
- 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
- Small-Scale Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
一种通用串行总线设备以及其数据传输方法。该通用串行总线设备,耦接至一通用串行总线主机,包括一控制器、一缓冲器、多个端点以及一处理器。控制器用以自通用串行总线主机接收一输入/输出令牌,并根据输入/输出令牌发出一中断请求。处理器用以判断缓冲器是否为一闲置状态,当缓冲器为闲置状态时,则处理器响应中断请求以根据输入/输出令牌的一地址讯息,将上述缓冲器配置给多个端点中的对应于地址讯息的一端点以进行数据传输。
Description
技术领域
本发明涉及一种通用串行总线设备以及其数据传输方法,特别涉及一种将单一缓冲器动态地配置给多个端点以进行数据传输的方法。
背景技术
由于信息的发展迅速,现今许多信息的交流皆使用通用串行总线设备作为传输的媒介。然而为了达到高速数据传输以及多功能的目的,大多数的通用串行总线设备的硬件架构皆支持多个端点或者为复合式设备,但在上述的情况下,由通用串行总线主机所发起的数据传输可能无法轻易地判断将与哪个端点进行分组的交换。为了解决上述的问题,大多数的通用串行总线设备通常会将每个端点皆配置一个缓冲器,使通用串行总线主机于发出数据传输请求时通用串行总线设备能迅速地响应并进行分组的交换,但相对而言,硬件的成本也将大幅增加。因此如何在不影响传输效率的条件下,达到节省硬件成本的目的为现今所需解决的问题。
发明内容
为解决上述问题,本发明一实施例提供一种通用串行总线设备数据传输方法,适用于耦接至一通用串行总线主机的一通用串行总线设备,其中通用串行总线设备具有单一缓冲器以及多个端点,包括:自通用串行总线主机接收一输入/输出令牌;根据输入/输出令牌向通用串行总线设备的一处理器发出一中断请求;以及判断缓冲器是否为一闲置状态,当缓冲器为闲置状态时,则处理器响应中断请求以根据输入/输出令牌的一地址讯息,将缓冲器配置给多个端点中对应于地址讯息的一端点以传输一数据。
本发明另一实施例提供一种通用串行总线设备,耦接至一通用串行总线主机,包括一控制器、一缓冲器、多个端点以及一处理器。控制器用以自通用串行总线主机接收一输入/输出令牌,并根据输入/输出令牌发出一中断请求。处理器用以判断缓冲器是否为一闲置状态,当缓冲器为闲置状态时,则处理器响应中断请求以根据输入/输出令牌的一地址讯息,将上述缓冲器配置给多个端点中的对应于地址讯息的一端点以进行数据传输。
根据本发明的上述通用串行总线设备以及其数据传输方法,开发者可根据本发明所提出的多个端点共享单一缓冲器的调度策略,达到硬件成本节省的目的,并以最大限度缩小传输的延迟,维持通用串行总线设备的最佳性能。
附图说明
图1是显示根据本发明一实施例所述的通用串行总线设备的示意图。
图2是显示根据本发明一实施例所述的通用串行总线设备数据传输方法的流程图。
图3是显示根据本发明一实施例所述的处理器响应中断请求的流程图。
【符号说明】
100~通用串行总线设备
110~控制器
120~缓冲器
130~处理器
140~端点
200~总线
300~通用串行总线主机
S201、S202、S203、S204、S205、S206、S207~步骤流程
S301、S303、S305、S307、S309、S310~步骤流程
具体实施方式
有关本发明的系统以及方法适用的其他范围将在接下来所提供的详述中清楚易见。必须了解的是下列的详述以及具体的实施例,当提出有关通用串行总线设备以及其数据传输方法的示范实施例时,仅作为描述的目的以及并非用以限制本发明的范围。
图1是显示根据本发明一实施例所述的通用串行总线(Universal SerialBus,以下以USB简称)设备的示意图。如图1所示,USB设备100可包括一控制器110、一缓冲器120、一处理器150以及多个端点160。其中,USB设备100通过一总线200耦接至USB主机300。USB主机300用以通过总线200传送一输入/输出令牌(In/Out Token)至USB设备100以请求数据的接收或发送。控制器110用以接收上述输入/输出令牌并根据接收到的输入/输出令牌发出一中断请求至处理器130。在一实施例中,控制器110分析接收到的输入/输出令牌的地址讯息,以取得对应端点的地址及其编号,以发出该插断要求。一般而言,在输入/输出令牌的格式如表1所示,该输入/输出令牌以分组(packet)的形式,由PID字段、ADDR及ENDP字段以及CRC字段组成。其中PID字段标识该输入/输出令牌的类型,包括输入(IN)、输出(OUT)以及建立(SETUP);ADDR及ENDP字段标识出接下来发送/接收数据分组的端点140的地址及其编号;CRC字段包括对ADDR及ENDP字段的冗余校验内容。在本发明一实施例中,控制器110分析接收到的输入/输出令牌的ADDR及ENDP字段以得到对应端点的地址及其编号。
Fields | PID | ADDR | ENDP | CRC |
Bits | 8 | 7 | 4 | 5 |
表1
处理器130用以接收上述中断请求,并判断缓冲器120是否为闲置状态。当缓冲器120为一闲置状态时(即为未进行数据的接收或发送),则处理器130响应该中断请求以根据地址讯息(例如,包括端点地址以及编号)将缓冲器120配置给该端点140中的对应于前述地址讯息的端点(例如端点140b)。举例而言,若该USB设备100为一智能手机等便携式处理设备,则处理器130为该智能手机的中央处理器(CPU);若该USB设备100为一复合USB设备,则处理器130为该复合USB设备的微处理器(MCU)。
在一实施例中,控制器110在发出中断请求的同时还回复USB主机300一否定认可回报(NAK),告知USB设备100尚未准备好接收数据的传输,并且当将缓冲器120配置给对应于上述地址讯息的端点140b后,回复USB主机300一认可回报(ACK)。在另一实施例中,处理器130在将缓冲器120配置给端点140b后发出一配置完成信号至控制器110以告知控制器110目前缓冲器120可接受数据的接收或发送,接着,当控制器110再次接收到USB主机200所发出的输入/输出令牌时,控制器110根据上述配置完成信号回复USB主机200认可回报(ACK),并开始分组的传输。
根据本发明另一实施例,当缓冲器120不为闲置状态时(例如正在进行端点140a的数据的接收或发送),则控制器110持续回复USB主机300否定认可回报(NAK)直到完成数据的接收或发送为止。值得注意的是,由于缓冲器120持续进行分组的交换,故处理器130并不会响应控制器110所发出的中断请求。然而,当端点140a完成数据的传输后,处理器130将依一调度策略将缓冲器120配置给端点140b。以下阐释本发明的调度策略,由于USB主机300发出输入/输出令牌的速度很快(ns级),但处理器130需待缓冲器120为闲置状态时才能响应中断。处理器130响应一次中断以配置缓冲器120给一个端点140,完成数据传输后返回,此时控制器110还可能接收了对应其它多个端点140的输入/输出令牌,因此本发明另一实施例中,在控制器110中设置一请求标志寄存器1101来记录接收到的输入/输出令牌。如表2所示,请求标志寄存器1101包括对应多个端点140的多个位(bit),控制器110根据输入/输出令牌的地址讯息将对应端点140的相应位置位(例如,置1),请求标志寄存器1101一旦有任何一个位被置位则向处理器130发出中断请求。实作上,可将请求标志寄存器1101不同的位经由一或逻辑后的信号作为中断请求信号。例如,当处理器130响应中断请求并将缓冲器120配置给端点140a传输数据返回后,根据请求标志寄存器1101其它被置位的位则又立即响应中断。此时控制器110可能已经收到其它对应其它多个端点140的输入/输出令牌,因此本发明一实施例需要一调度策略来判断将缓冲器120分配给哪个端点140。具体而言,处理器130从对应到所述中断请求的端点140中选择一第一优先级端点,并查找一请求队列(未绘示)以判断是否有数据待传输,如果有数据待传输,则将缓冲器120配置给该第一优先级端点,如果没有数据待传输,则从对应到中断请求的端点140中选择一第二优先级端点。
Endpoint1OUT |
Endpoint1IN |
Endpoint2OUT |
Endpoint2IN |
Endpoint3OUT |
Endpoint3IN |
Endpoint4OUT |
Endpoint4IN |
Endpoint5OUT |
Endpoint5IN |
Endpoint6OUT |
Endpoint6IN |
表2
其中,上述调度策略是指处理器130即对不同的端点140进行优先等级高低的排序。举例来说,处理器130将缓冲器120随机配置给所有端点140(即每个端点140配置到缓冲器120的机率皆相等),以避免某个端点占用缓冲器120时间过长而降低其他端点的数据传输效率。
根据本发明另一实施例,处理器130更可根据不同端点140的优先等级以配置缓冲器120,如表3所示。表3为根据本发明一实施例所述的优先等级管理表。举例来说,端点140包括6个端点Endpoint1~6,假设此时「Endpoint1Bulkout」以及「Endpoint6Bulkout」皆在等待数据的发送,而由于「Endpoint1Bulkout」的优先等级高于「Endpoint6Bulkout」,因此当缓冲器120空闲时,处理器130会优先将缓冲器120配置给「Endpoint1Bulkout」以进行数据的发送。
Endpoint1Bulkout |
Endpoint2Bulkout |
Endpoint3Bulkout |
Endpoint6Bulkout |
Endpoint4Bulkout |
Endpoint5Bulkout |
Endpoint1Bulkin |
Endpoint2Bulkin |
Endpoint3Bulkin |
Endpoint6Bulkin |
Endpoint4Bulkin |
Endpoint5Bulkin |
表3
根据本发明另一实施例,开发者也可将上述调度策略设定为根据端点140的使用频率来配置缓冲器120。举例来说,用于上网的端点140a使用频率高于播放音乐的端点140b,此时若两者同时等待进行数据的传输,处理器130会优先将缓冲器120配置给用于上网的端点140a使用。
接着请配合图1参阅图2。图2是显示根据本发明一实施例所述的通用串行总线设备数据传输方法的流程图。其中,USB设备100通过一总线200耦接至一USB主机300。值得注意的是,在此实施例中,USB设备100具有单一缓冲器120以及多个端点140。
首先,当USB主机300欲进行数据的发送或接收时,发出一输入/输出令牌至USB设备100的控制器110。控制器110接收上述输入/输出令牌(步骤S201)。接着,根据上述输入/输出令牌向USB设备100的处理器130发出一中断请求,在一实施例中还同时回复USB主机300一否定认可回报(NAK),以告知USB主机300目前USB设备100尚未准备好进行数据的发送或接收(步骤S202)。处理器130将判断缓冲器是否为一闲置状态(步骤S203)。当缓冲器120为一闲置状态时(即为未进行数据的接收或发送),进入步骤S204,处理器130响应该中断请求以根据地址讯息(如端点地址以及端点编号)将缓冲器120配置给该端点140。在一实施例中,接着,在配置完成后发出一配置完成信号至控制器110以告知控制器110目前缓冲器120可接受数据的接收或发送(步骤S206)。
根据本发明另一实施例,当缓冲器120不为闲置状态时(如正在进行端点140a的数据的接收或发送),则进入步骤S205,当端点140完成数据的传输后,处理器130将依一调度策略将缓冲器120配置给对应于上述地址讯息的上述端点(如端点140b)。其中,在尚未完成数据传输期间,控制器110将持续回复USB主机300否定认可回报(NAK)直到完成数据的接收或发送为止。值得注意的是,由于缓冲器120持续进行分组的交换,故处理器130并不会响应控制器110所发出的中断请求。在一实施例中,接着,在配置完成后发出一配置完成信号至控制器110以告知控制器110目前缓冲器120可接受数据的接收或发送(步骤S206)。最后,在步骤S207,当控制器110重新接收到输入/输出令牌时,将回复一认可回报(ACK)给USB主机300,以进行数据的传输。值得注意的是,步骤S206和207并非必要步骤。
图3是显示根据本发明一实施例所述的处理器响应上述中断请求的流程图。其中,在步骤S301,处理器130响应中断请求(如图2的步骤S204或S205)。接着在步骤S303,处理器130从多个端点140中的对应到中断请求的端点中选择一第一优先级端点,例如处理器可查找如表2的请求标志寄存器1101,其中被置位的位对应的端点即为可对应到中断请求的端点。步骤S305,处理器130查找一请求队列以判断是否有数据待传输,该请求队列为USB设备100中软件层一应用请求队列。步骤S307,如果有数据待传输,则将缓冲器120配置给第一优先级端点;步骤S309,如果没有数据待传输,则从多个端点140中的对应到所述中断请求的端点中选择一第二优先级端点。之后中断返回(步骤S310)。
综上所述,根据本发明一实施例所提出的通用串行总线设备以及其数据传输方法,开发者可根据本发明所提出的多个端点共享单一缓冲器的调度策略,达到硬件成本节省的目的,并以最大限度缩小传输的延迟,维持通用串行总线设备的最佳性能。
上述的实施例以足够的细节叙述使本领域技术人员能藉由上述的描述实施本发明所公开的系统以及方法,以及必须了解的是,在不脱离本发明的精神以及范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附权利要求书界定范围为准。
Claims (12)
1.一种通用串行总线设备数据传输方法,适用于耦接至一通用串行总线主机的一通用串行总线设备,其中上述通用串行总线设备具有单一缓冲器以及多个端点,包括:
自上述通用串行总线主机接收一输入/输出令牌;
根据上述输入/输出令牌向上述通用串行总线设备的一处理器发出一中断请求;以及
判断上述缓冲器是否为一闲置状态,当上述缓冲器为上述闲置状态时,则上述处理器响应上述中断请求以根据上述输入/输出令牌的一地址讯息,将上述缓冲器配置给上述多个端点中对应于上述地址讯息的一端点以传输一数据。
2.如权利要求1所述的通用串行总线设备数据传输方法,其中在发出该中断请求的同时,回复上述通用串行总线主机一否定认可回报;以及
当上述缓冲器配置给对应于上述地址讯息的上述端点之后,回复上述通用串行总线主机一认可回报。
3.如权利要求1所述的通用串行总线设备数据传输方法,其中当上述缓冲器不为上述闲置状态时,则上述处理器在上述多个端点的一另一端点的数据传输完成后,再响应该中断请求以依一调度策略将上述缓冲器配置给对应于上述地址讯息的上述端点。
4.如权利要求3所述的通用串行总线设备数据传输方法,其中上述调度策略是随机配置上述多个端点。
5.如权利要求3所述的通用串行总线设备数据传输方法,其中上述调度策略是根据上述多个端点的使用频率配置上述缓冲器。
6.如权利要求1所述的通用串行总线设备数据传输方法,其中还包括:
根据上述输入/输出令牌的该地址讯息设置一请求标志寄存器,根据该请求标记寄存器发出该中断请求。
7.如权利要求1所述的通用串行总线设备数据传输方法,其中上述处理器响应上述中断请求以根据上述输入/输出令牌的该地址讯息,将上述缓冲器配置给对应于上述地址讯息的上述端点以传输该数据的步骤还包括:
从上述多个端点中的对应至上述中断请求的端点中选择一第一优先级端点;
查找一请求对列以判断是否有数据待传输;
如果有数据待传输,则将上述缓冲器配置给上述第一优先级端点;以及
如果没有数据待传输,则从上述多个端点中的对应至上述中断请求的端点中选择一第二优先级端点。
8.一种通用串行总线设备,其耦接至一通用串行总线主机,包括:
一控制器,用以自上述通用串行总线主机接收一输入/输出令牌,并根据上述输入/输出令牌发出一中断请求;
一缓冲器;
多个端点;以及
一处理器,用以判断上述缓冲器是否为一闲置状态,当上述缓冲器为上述闲置状态时,则上述处理器响应上述中断请求以根据上述输入/输出令牌的一地址讯息,将上述缓冲器配置给上述多个端点中的对应于上述地址讯息的一端点以进行数据传输。
9.如权利要求8所述的通用串行总线设备,其中该控制器在发出该中断请求的同时,回复上述通用串行总线主机一否定认可回报,并且当上述缓冲器配置给对应于上述地址讯息的上述端点后,该控制器回复上述通用串行总线主机一认可回报。
10.如权利要求8所述的通用串行总线设备,其中当上述缓冲器不为上述闲置状态时,上述处理器在上述多个端点的一另一端点的数据传输完成后,再响应该中断请求以依一调度策略将上述缓冲器配置给对应于上述地址讯息的上述端点。
11.如权利要求8所述的通用串行总线设备,其中上述控制器还包括一请求标志寄存器,上述请求标志寄存器包括对应至上述多个端点的多个位,上述控制器根据上述输入/输出令牌的上述地址讯息置位所对应的位,并根据上述请求标志寄存器发出上述中断请求。
12.如权利要求8所述的通用串行总线设备,其中上述处理器从上述多个端点中的对应至上述中断请求的端点中选择一第一优先级端点,并查找一请求队列以判断是否有数据待传输,如果有数据待传输,则将上述缓冲器配置给上述第一优先级端点,如果没有数据待传输,则从上述多个端点中的对应至上述中断请求的端点中选择一第二优先级端点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410053829.8A CN103744816B (zh) | 2014-02-18 | 2014-02-18 | 通用串行总线设备以及其数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410053829.8A CN103744816B (zh) | 2014-02-18 | 2014-02-18 | 通用串行总线设备以及其数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744816A true CN103744816A (zh) | 2014-04-23 |
CN103744816B CN103744816B (zh) | 2017-01-11 |
Family
ID=50501834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410053829.8A Active CN103744816B (zh) | 2014-02-18 | 2014-02-18 | 通用串行总线设备以及其数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744816B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108366129A (zh) * | 2018-03-08 | 2018-08-03 | 北京淳中科技股份有限公司 | Usb数据传输方法、装置及usb适配器 |
CN111930648A (zh) * | 2020-08-07 | 2020-11-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种缓存配置方法、装置及电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570893A (zh) * | 2003-01-31 | 2005-01-26 | 株式会社东芝 | 一种改进的usb存储器存储装置 |
US20080005445A1 (en) * | 2006-06-30 | 2008-01-03 | Paul Diefenbaugh | Power efficient flow control model for usb asynchronous transfers |
CN101673255A (zh) * | 2009-10-21 | 2010-03-17 | 威盛电子股份有限公司 | 通用串行总线主机控制器和通用串行总线主机控制方法 |
CN101692213A (zh) * | 2009-10-23 | 2010-04-07 | 威盛电子股份有限公司 | 通用串行总线主机控制方法和通用串行总线主机控制器 |
US8099534B1 (en) * | 2006-12-14 | 2012-01-17 | Cypress Semiconductor Corporation | Implementation of logical endpoints in USB device |
-
2014
- 2014-02-18 CN CN201410053829.8A patent/CN103744816B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570893A (zh) * | 2003-01-31 | 2005-01-26 | 株式会社东芝 | 一种改进的usb存储器存储装置 |
US20080005445A1 (en) * | 2006-06-30 | 2008-01-03 | Paul Diefenbaugh | Power efficient flow control model for usb asynchronous transfers |
US8099534B1 (en) * | 2006-12-14 | 2012-01-17 | Cypress Semiconductor Corporation | Implementation of logical endpoints in USB device |
CN101673255A (zh) * | 2009-10-21 | 2010-03-17 | 威盛电子股份有限公司 | 通用串行总线主机控制器和通用串行总线主机控制方法 |
CN101692213A (zh) * | 2009-10-23 | 2010-04-07 | 威盛电子股份有限公司 | 通用串行总线主机控制方法和通用串行总线主机控制器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108366129A (zh) * | 2018-03-08 | 2018-08-03 | 北京淳中科技股份有限公司 | Usb数据传输方法、装置及usb适配器 |
CN108366129B (zh) * | 2018-03-08 | 2019-05-07 | 北京淳中科技股份有限公司 | Usb数据传输方法、装置及usb从设备适配器 |
CN111930648A (zh) * | 2020-08-07 | 2020-11-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种缓存配置方法、装置及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103744816B (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
CN108540982B (zh) | 用于虚拟基站的通信方法和设备 | |
US10372379B2 (en) | Command processing method and storage controller using the same | |
US10978119B2 (en) | Memory device and method of operating the same | |
EP3516656A1 (en) | Apparatus and method of clock shaping for memory | |
CN109101444A (zh) | 一种降低固态硬盘随机读延迟的方法及装置 | |
US20080250194A1 (en) | Two-dimensional writing data method for flash memory and corresponding storage device | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
CN105426322A (zh) | 一种数据的预取方法及装置 | |
CN103744816A (zh) | 通用串行总线设备以及其数据传输方法 | |
JP2017520052A (ja) | ユニバーサルシリアルバス(usb)通信システムおよび方法 | |
US8533377B2 (en) | System and method for allocating transaction ID in a system with a plurality of processing modules | |
CN103905310A (zh) | 报文处理的方法及转发设备 | |
KR20100121340A (ko) | 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 | |
TWI629638B (zh) | 儲存裝置及其任務執行方法、對應於儲存裝置的主機及其任務執行方法、以及應用於儲存裝置的控制單元 | |
WO2022227561A1 (zh) | 用于数据读取的装置、方法、芯片、计算机设备及存储介质 | |
CN110659232B (zh) | 一种事件信息传输方法、装置、设备及存储介质 | |
CN114238183A (zh) | 实现Virtio设备的系统、方法和介质 | |
CN109362094B (zh) | 移动终端wifi连接处理方法、移动终端及存储介质 | |
CN104850517A (zh) | 一种dma传输报文数据的方法及装置 | |
CN111966486A (zh) | 一种获取数据的方法、fpga系统以及可读存储介质 | |
CN104679687A (zh) | 一种识别中断源的方法及装置 | |
US20140289393A1 (en) | Network apparatus and connection detecting method thereof | |
CN103605622B (zh) | 一种传输数据的方法和设备 | |
US20040003145A1 (en) | Method and apparatus to transfer information |
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 |