主题 : USB驱动usb_skeleton.c无法使用 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
楼主  发表于: 2012-02-23 11:54

 USB驱动usb_skeleton.c无法使用

我手上有一个读卡器,USB接口的,想要在ubuntu上使用,现在能正确的识别我的设备,执行驱动中的probe函数,但是进行bulk-in,bulk-out端点设置的时候 报错了,说“Could not find both bulk-in and bulk-out endpoints”,这是我直接从ubuntu内核中copy出来的usb_skeleton.c程序,请问为什么会有这问题呢???是设备的原因无法找到批量IN,OUT端点?还是驱动还需要做修改???

/* 设置端点信息 */
    /* 只使用第一个批量IN和批量OUT端点 */
    iface_desc = interface->cur_altsetting;
    for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
        endpoint = &iface_desc->endpoint.desc;

        if (!dev->bulk_in_endpointAddr &&
            (endpoint->bEndpointAddress & USB_DIR_IN) &&
            ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
                    == USB_ENDPOINT_XFER_BULK)) {
            /* 找到一个批量IN端点 */
            buffer_size = endpoint->wMaxPacketSize;
            dev->bulk_in_size = buffer_size;
            dev->bulk_in_endpointAddr = endpoint->bEndpointAddress;
            dev->bulk_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
            if (!dev->bulk_in_buffer) {
                err("Could not allocate bulk_in_buffer");
                goto error;
            }
        }

        if (!dev->bulk_out_endpointAddr &&
            !(endpoint->bEndpointAddress & USB_DIR_IN) &&
            ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
                    == USB_ENDPOINT_XFER_BULK)) {
            /* 找到一个批量OUT端点 */
            dev->bulk_out_endpointAddr = endpoint->bEndpointAddress;
        }
    }
    if (!(dev->bulk_in_endpointAddr && dev->bulk_out_endpointAddr)) {
        err("Could not find both bulk-in and bulk-out endpoints");
        goto error;
    }



请高手帮忙看下!!!谢谢了。
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
1楼  发表于: 2012-02-23 13:38
自己顶。