使用“usb_bulk_msg”将数据包传输到USB端点的IOCTL

时间:2014-01-08 11:31:21

标签: linux linux-kernel embedded usb linux-device-driver

我有一个每秒发送8000个音频数据包的应用程序。现在最初用于实验目的,我正准备一个8个音频数据包的缓冲区,然后进行IOCTL调用并将缓冲区传递给我的驱动程序。

我正在使用“USB分析仪”。从USB分析仪我得到的数据包间隙(IPG)约为20-40 usec。那样就好。但有时IPG显示200-300usec。 USB子系统(USB核心/ HCD)是扮演ioctl的角色还是实现?每秒进行> 1000次ioctl调用和“copy_from_user”可能是延迟提交数据包的罪魁祸首。而且我使用USB3.0,它能够支持5 GBps的数据速率。

我的驱动程序中的代码流如下:

开关(CMD) {

       case SEND_AUDIO:

                   copy_from_user(...,....,...); 
                   for(i=0; i<8; i++);
                   usb_bulk_msg();
                   break;

}

0 个答案:

没有答案