驱动程序

时间:2016-05-07 20:07:06

标签: c linux linux-kernel usb driver

我有一个有趣的USB隐藏设备,Linux上不支持,所以我一直试图移植它并创建一个合适的驱动程序。 我已经设法了解如何通过在vm和usbmon上使用驱动程序来交换数据。

我设法用libusb控制设备。 (我的节目很好) 以下是将数据发送到USB设备的两条最重要的行。

    libusb_control_transfer(dev_handle, 0x21, 0x39, 0x200, 0x00, data + i, 8, 0);

    libusb_interrupt_transfer(dev_handle, 0x81, vide, 8, &actual, 300);

之后,我尝试创建一个char驱动程序。

    r = usb_control_msg(dev->udev,
            usb_sndctrlpipe(dev->udev, 0),
            CTRL_REQUEST,
            CTRL_REQUEST_TYPE,
            CTRL_VALUE,
            CTRL_INDEX,
            data_to_send + j,
            8,
            HZ * 2);

    r = usb_interrupt_msg(dev->udev,
            usb_sndintpipe(dev->udev, 129), // 129 = 0x81
            vide,
            8,
            &k,
            300);

usb_interrupt_msg的返回值为负。 我的端点很好:bEndpointAddress 0x81 EP 1 IN

使用libusb,一切正常, 与驾驶员一起,似乎没有发送中断。

我是否错过了函数usb_interrupt_msg? 我一直在阅读很多文档(libusb,来自内核的usb ......),但我找不到答案。

0 个答案:

没有答案