CN100409150C - 一种提高hid设备通讯速度的方法 - Google Patents
一种提高hid设备通讯速度的方法 Download PDFInfo
- Publication number
- CN100409150C CN100409150C CNB2006101130116A CN200610113011A CN100409150C CN 100409150 C CN100409150 C CN 100409150C CN B2006101130116 A CNB2006101130116 A CN B2006101130116A CN 200610113011 A CN200610113011 A CN 200610113011A CN 100409150 C CN100409150 C CN 100409150C
- Authority
- CN
- China
- Prior art keywords
- data
- usb device
- report
- end points
- length
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种提高HID设备通讯速度的方法,该方法将块端点模拟成中断端点,解决了将数据通讯量大且要求高速数据通讯的USB设备设计成HID设备通讯速度慢的问题,提高了HID的通讯速度。
Description
技术领域
本发明涉及一种提高HID设备通讯速度的方法,尤其涉及一种提高将USB设备设计成HID设备通讯速度的方法。
背景技术
一般的USB设备都需要一个“驱动程序”,该驱动程序提供了从应用软件到USB设备的数据传输通道,但驱动程序编写技术复杂,一旦出错直接导致***死机。为此,操作***对一些典型的USB设备例如HID设备(Human Interface Device,人机接口设备,是指直接和人进行互动的设备,如鼠标、键盘等)提供了内置的驱动程序,因此如果将USB KEY等非典型的USB设备设计成一个人机接口设备,则可以直接使用操作***内置的驱动程序,这样就免去了编写驱动程序的复杂性和风险。
操作***内置的HID驱动程序对硬件的访问分为2种方式:第1种是通过USB规范中所定义的“控制传输”方式,第2种是通过USB规范中定义的“中断传输”方式,这两种方式都只适用于小量数据传输,因此HID形式的USB设备无法进行大数据量高速数据通信。当将数据通讯量大且要求高速传输的USB设备设计成一个HID设备时,由于中断端点缓冲区小而导致通讯速度慢。
USB规范中也定义了大数据量高速数据通信方式,通常被称为“块传输”,芯片为块传输所设的缓冲存储器都比较大,但是HID类设备不能使用这种通信方式。
具有USB接口的芯片,内部分别设有支持不同的数据传输方式的硬件电路,每种数据传输方式对应一套电路,这套电路被抽象的称为“端点”。支持控制传输的“端点”就称为“控制端点”,支持中断传输的端点就称为中断端点,支持块传输的端点就称为块端点。
USB设备连接到主机上后,会把一系列数据发送到主机,这一系到数据表明设备的类型以及所能支持的数据传输方式,这些数据即为描述符。描述符是数据结果,或是信息的格式化块,它可以使主机知道这个设备。每个描述符包含了关于这个设备整体信息或者一个元素的信息。所有的USB外设必须响应对标准USB描述符的请求。在枚举过程中主机使用控制传输来从设备请求描述符。
本发明涉及的描述符包括:
介面描述符,用于定义一个USB设备与主机之间的接口,这个描述符表明这个设备是否是HID设备,是否有除控制端点以外的其它端点等;
端点描述符,当设备具有除控制端点以外的其它端点时才需要端点描述符,这个描述符表明端点的类型,端点在芯片内的地址等,端点缓冲器的大小,以及主机访问此端点的时间间隔;
HID类描述符,当设备被定义为一个HID设备时才需要这个描述符,这个描述符表明这个设备支持USB协议的版本号,是否有专有描述符,以及对专有描述符的特征限定;
报告描述符,当设备被定义为一个HID设备时才需要这个描述符,这个描述符定义主机与设备之间通信时数据的组织方式。
发明内容
为了解决上述将数据通讯量大且要求高速数据通讯的USB设备设计成HID设备,通讯速度慢的问题,本发明利用块端点缓冲区大的优点,提供一种利用块端点模拟中断端点的方法,提高HID设备通讯速度。
本发明通过以下方案实现:一种提高HID设备通讯速度的方法,包括如下步骤:
(1)介面描述符中“端点个数”设置为大于等于2,“设备类别”设置为3;
(2)向主机报告至少一个中断输入端点和至少一个中断输出端点,中断输入端点的地址设置为USB设备内的块输入端点地址,中断输出端点的地址设置为USB设备内的块输出端点地址,设置所述中断输入端点和中断输出端点的缓冲区尺寸均为64字节,将主机访问中断端点的时间间隔设置为1毫秒;
(3)在HID类描述符中设置本USB设备具有一个“报告描述符”;
(4)设置报告描述符具有一个输入型报告和输出型报告,上述输入型报告和输出型报告的长度大于或等于块端点缓冲存储器容量;
(5)USB设备通过块输出端点接收主机发来的命令,并通过块输入端点返回主机所需的结果;USB设备与主机之间每一次交互的数据长度与报告的长度一致,数据不论是从主机传给USB设备还是从USB设备传给主机,都是按报告的长度完成,每次传送64字节;对于多于64字节的数据,将其分解成64字节大小的数据块分别传输,接收端把所有的块重组成完整的数据。
上述方法中,所述步骤(5)包括如下步骤:
1)判断块端点是否有数据发送;
2)如果块端点发送的数据多于64字节,USB设备重新组织数据;
3)USB设备执行命令;
4)从块端点返回结果及状态。
所述步骤2)具体包括:
(a)USB设备进入命令重组与执行状态;
(b)USB设备取数据偏移量和长度,即报告所带数据在全部数据中所占的偏移位置和报告所携带的有用数据的长度;
(c)USB设备根据偏移量和长度向块端点缓冲区拷贝数据;
(d)USB设备取数据总长度;
(e)USB设备判断在偏移量基础上加上数据长度后是否等于数据总长,如果不等则执行步骤(f),如果相等执行步骤(g);
(f)USB设备退出命令重组及执行,进行下一条报告的处理;
(g)USB设备判断块端点缓冲区内的数据是否符合特定的组成规则,如果不符合则设置命令错误状态后转向执行步骤4),如果符合则执行步骤3)。
本发明将块端点模拟成中断端点,解决了将数据通讯量大且要求高速数据量通讯的USB设备设计成HID设备,通讯速度慢的问题,提高了HID的通讯速度。
附图说明
图1为本发明的命令及数据接收流程图,数据传输方向为主机到设备;
图2为本发明的命令处理及结果返回流程图,数据传输方向为设备到主机。
具体实施方式
下面结合附图和具体实施例对本发明的工作流程进行更详细的描述。
为实现本发明提高HID设备通讯速度的方法,本发明的技术方案主要包括对描述符的设置和数据组织方式的改变。
(1)描述符的设置
(1-1)介面描述符
本发明对介面描述符的设置包括:将表示“端点个数”的字节设置为大于2或等于2;表示“设备类别”字节设置为3,这表示本设备属于HID设备类。
(1-2)端点描述符
本发明需要向主机汇报两个中断端点,在原有描述符的基础上增加两个端点描述符,分别对应两个中断端点。两个中断端点分别为中断输入端点和中断输出端点,将表示“端点类型”字节都设为3,表示该端点是中断端点;表示“端点编号”字节设置为分别与USB设备芯片内的块输入和块输出端点相同;中断输入端点和中断输出端点的“缓冲区尺寸”均设为64字节,将主机访问中断输入端点和中断输出端点的时间间隔均设置为1毫秒。
在具体实现时,中断端点数也可以多于两个,但设置必须满足有至少一个中断输入端点和至少一个中断输出端点。
(1-3)HID类描述符
本发明对HID类描述符的设置包括,指出支持HID协议第1.10版或1.10以上的版本;指出本设备具有一个“报告描述符”,并且给出该报告描述符的长度为58字节。
(1-4)HID报告描述符
本发明中对报告描述符的设置包括:
兼容原有产品的部分;定义一个从设备传给主机的输入型报告;定义一个从主机传给设备的输出型报告,上述输入型报告和输出型报告的长度大于或等于块端点缓冲存储器容量。
(2)数据组织方式
数据不论是从主机传给USB设备还是从USB设备传给主机,都是按报告的长度完成,也就是每次传送64字节。对于多于64字节的数据,将其分解成64字节大小的一系列数据块分别传输,接收端把所有的块重组成完整的数据。
在每个报告的64字节中,前6字节用于表述这个报告和整个数据块的关系,其余58字节是真正的数据。在前6字节中,第1和第2字节给出了所有数据的总长度,第3和第4字节给出本条报告所携带的有用数据的长度,第5和第6字节则是本条报告所带数据在全部数据中所占的偏移位置。
(3)根据上述内容,本发明命令处理及数据接收流程,如图1所示:
步骤101,USB设备加电;
步骤102,USB设备进行初始化;
步骤103,判断控制端点是否有请求发送,如果是则执行步骤104;如果否则执行步骤105;
步骤104,判断是否是HID报告,如果是则执行步骤106重组命令然后由步骤107执行命令,步骤111由控制端点返回结果及状态,最后返回步骤103继续等待控制端点发送的请求;如果否则执行步骤108;
步骤105,判断块端点是否有数据发送,如果是则执行步骤106重组命令然后由步骤107执行命令,步骤111由块端点返回结果及状态,最后返回步骤103继续等待控制端点发送的请求;如果否则执行步骤111返回结果及状态,然后返回步骤103继续等待控制端点发送的请求;
步骤108,判断主机发送的请求是否是USB标准请求,如果是则执行步骤109进行标准请求处理,如果否则执行步骤110返回请求不被支持;
步骤109和110执行后均执行步骤111返回结果及状态,最后返回步骤103继续等待控制端点发送的请求。
上述流程中步骤103和104中描述通过控制端点发送数据的过程是考虑USB设备兼容性而设计的,在具体实现时不是必须的。
在具体实现时,如果USB设备不需要进行大数据量的通信,则上述流程中可以不执行步骤106重组命令,直接由步骤107执行命令。
(4)本发明命令执行及结果返回流程,如图2所示:
步骤201,USB设备进入命令重组与执行状态;
步骤202,USB设备取数据偏移量和长度,即报告所带数据在全部数据中所占的偏移位置和报告所携带的有用数据的长度;
步骤203,USB设备根据偏移量和长度向块端点缓冲区拷贝数据;
步骤204,USB设备取数据总长度;
步骤205,USB设备判断在偏移量基础上加上数据长度后是否等于数据总长,如果不等则执行步骤206USB设备退出命令重组及执行进行下一条报告的处理,如果相等则执行步骤207;
步骤207,USB设备判断块端点缓冲区内的数据是否符合特定的组成规则,如果不符合则执行步骤209设置命令错误状态后转向执行步骤210,如果符合则执行步骤208;
步骤208,USB设备执行命令,例如选择文件命令;
步骤210,判断此命令是否从块端点发送,如果是则步骤212从块端点返回结果及状态,如果不是则从控制端点返回结果及状态;
步骤213,退出重新进入一个新的命令循环。
以上所述的实施例,只是本发明较优选的具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换,都应包含在本发明的保护范围内。
Claims (3)
1. 一种提高HID设备通讯速度的方法,包括如下步骤:
(1)介面描述符中“端点个数”设置为大于等于2,“设备类别”设置为3;
(2)向主机报告至少一个中断输入端点和至少一个中断输出端点,中断输入端点的地址设置为USB设备内的块输入端点地址,中断输出端点的地址设置为USB设备内的块输出端点地址,设置所述中断输入端点和中断输出端点的缓冲区尺寸均为64字节,将主机访问中断端点的时间间隔设置为1毫秒;
(3)在HID类描述符中设置本USB设备具有一个“报告描述符”;
(4)设置报告描述符具有一个输入型报告和输出型报告,上述输入型报告和输出型报告的长度大于或等于块端点缓冲存储器容量;
(5)USB设备通过块输出端点接收主机发来的命令,并通过块输入端点返回主机所需的结果;USB设备与主机之间每一次交互的数据长度与报告的长度一致,数据不论是从主机传给USB设备还是从USB设备传给主机,都是按报告的长度完成,每次传送64字节;对于多于64字节的数据,将其分解成64字节大小的数据块分别传输,接收端把所有的块重组成完整的数据。
2. 根据权利要求1所述的提高HID设备通讯速度的方法,其特征在于:所述步骤(5)包括如下步骤:
1)判断块端点是否有数据发送;
2)如果块端点发送的数据多于64字节,USB设备重新组织数据;
3)USB设备执行命令;
4)从块端点返回结果及状态。
3. 根据权利要求2所述的提高HID设备通讯速度的方法,其特征在于:所述步骤2)具体包括:
(a)USB设备进入命令重组与执行状态;
(b)USB设备取数据偏移量和长度,即报告所带数据在全部数据中所占的偏移位置和报告所携带的有用数据的长度;
(c)USB设备根据偏移量和长度向块端点缓冲区拷贝数据;
(d)USB设备取数据总长度;
(e)USB设备判断在偏移量基础上加上数据长度后是否等于数据总长,如果不等则执行步骤(f),如果相等执行步骤(g);
(f)USB设备退出命令重组及执行,进行下一条报告的处理;
(g)USB设备判断块端点缓冲区内的数据是否符合特定的组成规则,如果不符合则设置命令错误状态后转向执行步骤4),如果符合则执行步骤3)。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101130116A CN100409150C (zh) | 2006-09-07 | 2006-09-07 | 一种提高hid设备通讯速度的方法 |
JP2007229004A JP5160844B2 (ja) | 2006-09-07 | 2007-09-04 | Hidデバイスの通信速度を高める方法 |
US11/850,200 US8074232B2 (en) | 2006-09-07 | 2007-09-05 | Method for improving the communication of the human interface device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101130116A CN100409150C (zh) | 2006-09-07 | 2006-09-07 | 一种提高hid设备通讯速度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1955890A CN1955890A (zh) | 2007-05-02 |
CN100409150C true CN100409150C (zh) | 2008-08-06 |
Family
ID=38063257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101130116A Active CN100409150C (zh) | 2006-09-07 | 2006-09-07 | 一种提高hid设备通讯速度的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8074232B2 (zh) |
JP (1) | JP5160844B2 (zh) |
CN (1) | CN100409150C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10878404B2 (en) * | 2010-06-29 | 2020-12-29 | Feitian Technologies Co., Ltd. | Method for operating an e-purse |
CN102012886B (zh) * | 2010-10-14 | 2012-12-05 | 深圳市文鼎创数据科技有限公司 | 基于hid协议的通讯方法、装置及*** |
CN102638397B (zh) * | 2012-03-21 | 2014-12-10 | 华为终端有限公司 | 一种usb设备通信传输方法、设备及*** |
CN104077252B (zh) * | 2013-03-29 | 2018-08-10 | 联想(北京)有限公司 | Usb设备通信方法、装置及电子设备 |
CN110830168B (zh) | 2019-11-11 | 2021-11-02 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
CN111930184B (zh) * | 2020-10-13 | 2021-01-01 | 飞天诚信科技股份有限公司 | 一种外接设备模拟键盘的实现方法、装置及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263392B1 (en) * | 1999-01-04 | 2001-07-17 | Mccauley Jack J. | Method and apparatus for interfacing multiple peripheral devices to a host computer |
CN1808973A (zh) * | 2006-01-27 | 2006-07-26 | 北京飞天诚信科技有限公司 | 通用串行总线人机交互类的信息安全设备及其控制方法 |
CN1821987A (zh) * | 2006-03-31 | 2006-08-23 | 北京飞天诚信科技有限公司 | 基于usb接口的智能卡读写方法及其读写器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311228B1 (en) * | 1997-08-06 | 2001-10-30 | Microsoft Corporation | Method and architecture for simplified communications with HID devices |
US6085265A (en) * | 1998-01-09 | 2000-07-04 | Toshiba America Information Systems, Inc. | System for handling an asynchronous interrupt a universal serial bus device |
US7290072B2 (en) * | 1999-10-06 | 2007-10-30 | Igt | Protocols and standards for USB peripheral communications |
US7886353B2 (en) * | 2005-03-25 | 2011-02-08 | Microsoft Corporation | Accessing a USB host controller security extension using a HCD proxy |
-
2006
- 2006-09-07 CN CNB2006101130116A patent/CN100409150C/zh active Active
-
2007
- 2007-09-04 JP JP2007229004A patent/JP5160844B2/ja active Active
- 2007-09-05 US US11/850,200 patent/US8074232B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263392B1 (en) * | 1999-01-04 | 2001-07-17 | Mccauley Jack J. | Method and apparatus for interfacing multiple peripheral devices to a host computer |
CN1808973A (zh) * | 2006-01-27 | 2006-07-26 | 北京飞天诚信科技有限公司 | 通用串行总线人机交互类的信息安全设备及其控制方法 |
CN1821987A (zh) * | 2006-03-31 | 2006-08-23 | 北京飞天诚信科技有限公司 | 基于usb接口的智能卡读写方法及其读写器 |
Non-Patent Citations (2)
Title |
---|
USB HID类设备的开发. 詹克团等.电测与仪表,第41卷第461期. 2004 |
USB HID类设备的开发. 詹克团等.电测与仪表,第41卷第461期. 2004 * |
Also Published As
Publication number | Publication date |
---|---|
US8074232B2 (en) | 2011-12-06 |
JP2008065823A (ja) | 2008-03-21 |
CN1955890A (zh) | 2007-05-02 |
JP5160844B2 (ja) | 2013-03-13 |
US20080066088A1 (en) | 2008-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100409150C (zh) | 一种提高hid设备通讯速度的方法 | |
CN103150279B (zh) | 一种主机与基板管理控制器共享设备的方法 | |
CN101356506B (zh) | 智能可缩放存储切换架构 | |
CN101727414B (zh) | 用于在计算机***中传递中断的技术 | |
CN100468373C (zh) | 经平台总线传送和接收网络协议顺应信号包的方法 | |
US20050195833A1 (en) | Full hardware based TCP/IP traffic offload engine(TOE) device and the method thereof | |
CN100385389C (zh) | 可避免写后读的危险的存储器指令的发出和执行 | |
CN103282881A (zh) | 通过虚拟化直接共享智能设备 | |
CN101946246A (zh) | 在i/o处理***的通道子***处提供控制块的间接数据寻址 | |
CN103593189A (zh) | 一种嵌入式Linux下用户态驱动程序的实现方法 | |
JPH07122863B2 (ja) | 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム | |
US6785760B2 (en) | Performance of a PCI-X to infiniband bridge | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
CN101957808A (zh) | 多cpu间的通信方法、***及cpu | |
CN102609222A (zh) | 基于命令描述符的闪存控制方法 | |
CN100476775C (zh) | 用于总线通信设备的主机控制器以及总线通信设备 | |
CN104978174A (zh) | 多操作***中网卡之间的切换方法和*** | |
CN102193788A (zh) | 基于动态二进制翻译的跨平台驱动程序复用方法 | |
CN1331070C (zh) | 数据通信的方法及设备 | |
CN205103599U (zh) | 一种跨境贸易bpo应用云终端装置 | |
CN109522128A (zh) | 分段式多线程任务执行方法及装置 | |
CN103678244B (zh) | 一种不使用应用处理器的智能设备 | |
CN101840391B (zh) | 一种电子支付***双处理器子***间通信及其调用方法 | |
CN101788888A (zh) | 一种实现目标端驱动的方法及该目标端驱动 | |
CN101867565A (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 | ||
C56 | Change in the name or address of the patentee |
Owner name: FEITIAN TECHNOLOGIES CO., LTD. Free format text: FORMER NAME: BEIJING FEITIAN CHENGXIN TECHNOLOGY CO., LTD. |
|
CP03 | Change of name, title or address |
Address after: 100085 Beijing city Haidian District Xueqing Road No. 9 Ebizal building B block 17 layer Patentee after: Feitian Technologies Co., Ltd. Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 40 research, 7A building, 5 floor Patentee before: Beijing Feitian Chengxin Science & Technology Co., Ltd. |