首页 文章

更快的USB HID输出

提问于
浏览
1

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

是否有可能以某种方式提高报告频率?或者在单个界面中使用多个输出 endpoints 或作为复合设备的一部分使用?或者可能滥用控制 endpoints 发送其他数据?

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

为了记录,我对满足Windows的解决方案感到满意 .

4 回答

  • 1

    或者可能滥用控制 endpoints 发送其他数据?

    您可以使用“供应商特定请求” . TI TUSB3410芯片以AFAIK的方式工作 . 许多USB堆栈已经有了它们的钩子 .

    但是,这需要主机端的驱动程序或libusb .

  • 0

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

    另外,你咨询过USB in a NutShell吗?

  • 0

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

    因此,如果硬件支持,首先要尝试切换到高速模式 . 列表中的下一件事是使用多个 endpoints . 如果你真的想要获得最高的传输速率,HID类是一个糟糕的选择 .

  • 2

    通过在控制 endpoints 上使用SET_REPORT请求,我能够通过数量级加速上传,而不是声明单独的中断输出 endpoints . 这样,您就可以获得所有可用于控制传输的带宽 .

    同时使用分成多个段的较大报表有助于减少所需的SETUP数据包的数量 .

相关问题