我正试图加速一个相当缓慢的引导加载程序。目前我正在单个USB HID输出端点上发送数据,因为它是一个低速设备,我显然每10 ms间隔限制一个8字节数据包,速度高达800字节/秒。
是否有可能以某种方式提高报告频率?或者在单个界面中使用多个输出端点或作为复合设备的一部分使用?或者可能滥用控制端点来发送其他数据?
我认为更好的压缩总是一种替代方案,但这是一个收益递减的领域,重新设计硬件以允许全速USB不是一种选择。
对于记录,我对仅使用Windows的解决方案感到满意。
答案 0 :(得分:2)
或者可能滥用控制端点发送其他数据?
您可以使用“供应商特定请求”。 TI TUSB3410芯片以AFAIK的方式工作。许多USB堆栈已经为它们提供了挂钩。
但是,这需要主机端的驱动程序或libusb。
答案 1 :(得分:1)
谁说你每10毫秒限制一个8字节的数据包?我不知道我头顶的确切数字,但我知道你可以发送比这更大的数据包。我做了一个HID设备,并使用64字节数据包。我想我可以做得更大,但这个限制可能是硬件特定的。你用的是什么硬件?
另外,您咨询了USB in a NutShell吗?
答案 2 :(得分:0)
对于低速设备,实际限制为每10ms 8个字节,对于高速设备,每个基于中断的端点,每1ms有64个字节。
因此,如果硬件支持,首先要尝试切换到高速模式。列表中的下一件事是使用多个端点。如果你真的想要获得最高的传输速率,HID类是一个糟糕的选择。
答案 3 :(得分:0)
我能够通过在控制端点上使用SET_REPORT请求来加速上传数量级,而不是声明一个单独的中断输出端点。这样,您就可以获得所有可用于控制传输的带宽。
另外,将较大的报表拆分为多个段有助于减少所需的SETUP数据包数量。