USB:减少HID延迟/缓冲 - Linux

时间:2017-06-20 17:09:54

标签: linux usb delay hid latency

我必须通过微控制器(Teensy 3.6 - Cortex M4)将传感器数据传输到主机PC,延迟时间尽可能短(约1-2ms)。

为了测试我的通信,我编写了一个程序,通过原始HID从uC发送计数器到PC,然后轮询一个响应。另一方面,PC接收usb数据包(包含计数器)并再次发回。 (我只限于libusb v0.1)

首先,我注意到发回的计数器与我刚发送的计数器的数量不同,但大约有4个数字(转移)。对我来说,这看起来像是在某个地方进行缓冲,类似于大小为4的FIFO。我尝试使用usb描述符中的rawHID值(usb_desc.h)但是减少了缓冲量,即NUM_USB_BUFFERS = 12到8(每个端点最少x2个缓冲区)什么都不做。此外,关于纯粹的民意调查RAWHID_TX_INTERVAL已设置为1,因此设备将每隔1ms进行一次轮询。

我最好的猜测是,这与某些linux配置有关,我似乎无法找到与设置USB缓冲区数量或增加USB吞吐量相关的任何内容。另外我用CONFIG_HZ_1000运行linux所以~1.1ms应该......可以实现吗?

我很感激有关此事的任何反馈/建议。

0 个答案:

没有答案