Embedded 更快的USB HID输出

Embedded 更快的USB HID输出,embedded,usb,hid,Embedded,Usb,Hid,我正试图加速一个相当缓慢的引导程序。目前,我在一个USB HID输出端点上发送数据,由于它是一个低速设备,我显然被限制为每10毫秒发送一个8字节的数据包,时间间隔高达800字节/秒 是否有可能以某种方式增加报告频率?或者在单个接口中或作为复合设备的一部分使用多个输出端点?或者滥用控制端点来发送额外的数据 我认为更好的压缩总是一种选择,但这是一个收益递减的领域,重新设计硬件以允许全速USB并不是一个真正的选择 作为记录,我很乐意使用仅限Windows的解决方案。谁说每10ms只能有8字节的数据包?

我正试图加速一个相当缓慢的引导程序。目前,我在一个USB HID输出端点上发送数据,由于它是一个低速设备,我显然被限制为每10毫秒发送一个8字节的数据包,时间间隔高达800字节/秒

是否有可能以某种方式增加报告频率?或者在单个接口中或作为复合设备的一部分使用多个输出端点?或者滥用控制端点来发送额外的数据

我认为更好的压缩总是一种选择,但这是一个收益递减的领域,重新设计硬件以允许全速USB并不是一个真正的选择


作为记录,我很乐意使用仅限Windows的解决方案。

谁说每10ms只能有8字节的数据包?我不知道确切的数字,但我知道你可以发送更大的数据包。我做了一个隐藏设备,使用64字节的数据包。我想我可以做得更大一些,但这个限制可能是硬件特定的。你用的是什么硬件


另外,你有没有咨询过?

谁说你被限制为每10毫秒8字节的数据包?我不知道确切的数字,但我知道你可以发送更大的数据包。我做了一个隐藏设备,使用64字节的数据包。我想我可以做得更大一些,但这个限制可能是硬件特定的。你用的是什么硬件

还有,你咨询过吗

或者滥用控制端点来发送额外的数据

您可以使用特定于供应商的请求。TI TUSB3410芯片以这种方式工作。许多USB堆栈都已经安装了挂钩

但是,这需要在主机端安装驱动程序或libusb

或者滥用控制端点来发送额外的数据

您可以使用特定于供应商的请求。TI TUSB3410芯片以这种方式工作。许多USB堆栈都已经安装了挂钩


但是,这需要主机端有一个驱动程序或libusb。

对于低速设备,实际限制为每10ms 8字节,对于高速设备,每1ms 64字节,每个基于中断的端点


因此,如果硬件支持的话,首先要尝试的是切换到高速模式。列表中的下一件事是使用多个端点。如果您真的想获得尽可能高的传输速率,那么HID类是一个糟糕的选择。

对于低速设备,实际限制是每10ms 8字节,对于高速设备,每1ms 64字节,每个基于中断的端点


因此,如果硬件支持的话,首先要尝试的是切换到高速模式。列表中的下一件事是使用多个端点。如果您真的想获得尽可能高的传输速率,那么HID类是一个糟糕的选择。

我能够通过在控制端点上使用SET_报告请求,而不是声明一个单独的中断输出端点,将上载速度提高几个数量级。这样,您就可以获得用于控制传输的所有可用带宽


另外,使用一个更大的分为多个段的报告有助于减少所需的设置数据包的数量。

我能够通过在控制端点上使用SET_报告请求,而不是声明一个单独的中断输出端点,将上传速度提高几个数量级。这样,您就可以获得用于控制传输的所有可用带宽


此外,使用一个更大的分为多个段的报告有助于减少所需的设置数据包数量。

USB的第四页概括地说:低速设备的最大数据有效负载大小为8字节;根据USB 2.0标准第51页:低速端点仅限于指定10 ms到255 ms。我很可能误解了它们的含义。鉴于低速USB以1.5 Mbit/s的速度运行,您一定误解了文本。这些是中断传输。该设备可以指定一个轮询间隔,在该时间间隔内可以中断主机。这个范围似乎是10ms到255msPage四个USB简言之就是:低速设备的最大数据有效负载大小是8字节;根据USB 2.0标准第51页:低速端点仅限于指定10 ms到255 ms。我很可能误解了它们的含义。鉴于低速USB以1.5 Mbit/s的速度运行,您一定误解了文本。这些是中断传输。该设备可以指定一个轮询间隔,在该时间间隔内可以中断主机。这个范围似乎是10毫秒到25毫秒谢谢你的建议!我使用的PIC18 MCU应该很容易支持它们。我还不能写一个驱动程序,但是使用一个现成的驱动程序当然不是不可能的,特别是使用通用的HID报告作为后备。谢谢你的建议!我使用的PIC18 MCU应该很容易支持它们。我不会写一个驱动程序,但会使用现成的驱动程序 不确定并不是不可能的,尤其是作为后备的通用HID报告。